diff --git a/diff/bees.diff/readme.txt b/diff/bees.diff/readme.txt new file mode 100644 index 0000000..9949d5e --- /dev/null +++ b/diff/bees.diff/readme.txt @@ -0,0 +1,7 @@ +Bees +===================================================================== +Main: bass080 +Lisc: WTFPL +Text: CC0 + By Tirifto +Link: https://github.com/bas080/bees diff --git a/diff/bees.diff/readme.txt.diff b/diff/bees.diff/readme.txt.diff new file mode 100644 index 0000000..04920af --- /dev/null +++ b/diff/bees.diff/readme.txt.diff @@ -0,0 +1,62 @@ +1,53c1,7 +< BEES MOD V2.2 +< ------------- +< +< FEATURES +< -------- +< 3.0 +< - Pipeworks compatibility (Industrial beehive) +< - Get honey comb from full frame +< +< 2.2.1 +< - removed steel dependency temporarily +< - fixed the craft for the extractor (and added alias for) +< +< 2.2 +< - craft for extractor +< - extractor texture update +< - a craft for the smoker +< +< 2.1 +< - bees polinate flowers nearby, causing them to multiply +< - add formspec to wild and artificial hive when using grafting tool +< - smoke, flying wax and bee particles +< - smokers to calm down the bees before opening the hive +< - a centrifuge to extract the honey and from the filled frames +< - grab eatable honeycomb from wild hives +< - craft a grafting tool to extract queen bees from wild hives +< - craft artificial hives and frames +< +< 1.0 +< - spawn wild bee hives on tree leaves +< - use the queen bee to populate artificial hives +< - plant flowers near hives to increase their productivity +< - spawning bee colonies +< +< FUTURE +< ------ +< - more realistic spawning of wild bee hives +< +< CONTRIBUTORS +< ------------ +< - bas080 +< - VanessaE (wild bee hive nodebox) +< - Neuromancer (textures for wild bee hive and inspiration for other textures) +< - Novatux (enabled pipeworks compatibility) +< +< FORUM +< ----- +< https://forum.minetest.net/viewtopic.php?pid=102905 +< +< LICENSE +< ------- +< - codes is WTFPL +< - textures are CC BY-SA +--- +> Bees +> ===================================================================== +> Main: bass080 +> Lisc: WTFPL +> Text: CC0 +> By Tirifto +> Link: https://github.com/bas080/bees diff --git a/diff/bees.diff/textures/bees_comb.png b/diff/bees.diff/textures/bees_comb.png new file mode 100644 index 0000000..35c6da5 Binary files /dev/null and b/diff/bees.diff/textures/bees_comb.png differ diff --git a/diff/bees.diff/textures/bees_frame_empty.png b/diff/bees.diff/textures/bees_frame_empty.png new file mode 100644 index 0000000..361aada Binary files /dev/null and b/diff/bees.diff/textures/bees_frame_empty.png differ diff --git a/diff/bees.diff/textures/bees_frame_full.png b/diff/bees.diff/textures/bees_frame_full.png new file mode 100644 index 0000000..5fb1eb3 Binary files /dev/null and b/diff/bees.diff/textures/bees_frame_full.png differ diff --git a/diff/bees.diff/textures/bees_grafting_tool.png b/diff/bees.diff/textures/bees_grafting_tool.png new file mode 100644 index 0000000..8f737a0 Binary files /dev/null and b/diff/bees.diff/textures/bees_grafting_tool.png differ diff --git a/diff/bees.diff/textures/bees_hive_artificial.png b/diff/bees.diff/textures/bees_hive_artificial.png new file mode 100644 index 0000000..2034255 Binary files /dev/null and b/diff/bees.diff/textures/bees_hive_artificial.png differ diff --git a/diff/bees.diff/textures/bees_hive_wild.png b/diff/bees.diff/textures/bees_hive_wild.png new file mode 100644 index 0000000..96b41f2 Binary files /dev/null and b/diff/bees.diff/textures/bees_hive_wild.png differ diff --git a/diff/bees.diff/textures/bees_hive_wild_bottom.png b/diff/bees.diff/textures/bees_hive_wild_bottom.png new file mode 100644 index 0000000..cd229f6 Binary files /dev/null and b/diff/bees.diff/textures/bees_hive_wild_bottom.png differ diff --git a/diff/bees.diff/textures/bees_hive_wild_s.png b/diff/bees.diff/textures/bees_hive_wild_s.png new file mode 100644 index 0000000..96b41f2 Binary files /dev/null and b/diff/bees.diff/textures/bees_hive_wild_s.png differ diff --git a/diff/bees.diff/textures/bees_honey_bottle.png b/diff/bees.diff/textures/bees_honey_bottle.png new file mode 100644 index 0000000..9e02aa2 Binary files /dev/null and b/diff/bees.diff/textures/bees_honey_bottle.png differ diff --git a/diff/bees.diff/textures/bees_particle_bee.png b/diff/bees.diff/textures/bees_particle_bee.png new file mode 100644 index 0000000..f58c4dc Binary files /dev/null and b/diff/bees.diff/textures/bees_particle_bee.png differ diff --git a/diff/bees.diff/textures/bees_particle_bee_r.png b/diff/bees.diff/textures/bees_particle_bee_r.png new file mode 100644 index 0000000..42a36ff Binary files /dev/null and b/diff/bees.diff/textures/bees_particle_bee_r.png differ diff --git a/diff/bees.diff/textures/bees_strip.png b/diff/bees.diff/textures/bees_strip.png new file mode 100644 index 0000000..1afe28e Binary files /dev/null and b/diff/bees.diff/textures/bees_strip.png differ diff --git a/diff/craftguide.diff/README.md b/diff/craftguide.diff/README.md new file mode 100644 index 0000000..27b5bed --- /dev/null +++ b/diff/craftguide.diff/README.md @@ -0,0 +1,7 @@ +Craftguide +===================================================================== +Main: killbith +Lisc: GPL v3 +Text: WTFPL + By Gambit +Link: https://github.com/minetest-mods/craftguide diff --git a/diff/craftguide.diff/README.md.diff b/diff/craftguide.diff/README.md.diff new file mode 100644 index 0000000..ae7bd08 --- /dev/null +++ b/diff/craftguide.diff/README.md.diff @@ -0,0 +1,23 @@ +1,14c1,7 +< ## ![Preview1](http://i.imgur.com/fIPNYkb.png) Crafting Guide ## +< +< #### A Crafting Guide for Minetest that doesn't suck. #### +< +< #### `craftguide` is simply the most comprehensive mod of his category, with the cleanest code. #### +< #### Consult the [Minetest Wiki](http://wiki.minetest.net/Crafting_guide) for more details and comparisons. #### +< +< #### This crafting guide is usable with a blue book named *"Crafting Guide"*. #### +< +< #### This crafting guide features two modes : Standard and Progressive. #### +< The Progressive mode is a Terraria-like system that only shows recipes you can craft from items in inventory. +< The progressive mode can be enabled with `craftguide_progressive_mode = true` in `minetest.conf`. +< +< ![Preview2](http://i.imgur.com/3q7rVSo.png) +--- +> Craftguide +> ===================================================================== +> Main: killbith +> Lisc: GPL v3 +> Text: WTFPL +> By Gambit +> Link: https://github.com/minetest-mods/craftguide diff --git a/diff/fences.diff/README.txt b/diff/fences.diff/README.txt new file mode 100644 index 0000000..688cea6 --- /dev/null +++ b/diff/fences.diff/README.txt @@ -0,0 +1,7 @@ +Fences +===================================================================== +Main: BlockMen +Lisc: WTFPL v2 +Text: CC0 + By Tirifto +Link: https://forum.minetest.net/viewtopic.php?f=11&t=5016 diff --git a/diff/fences.diff/README.txt.diff b/diff/fences.diff/README.txt.diff new file mode 100644 index 0000000..c01d938 --- /dev/null +++ b/diff/fences.diff/README.txt.diff @@ -0,0 +1,37 @@ +1,27c1,7 +< Minetest mod "Fences" +< ======================= +< version: 1.0 +< +< License of source code and textures: +< ------------------------------------ +< Written 2013 by BlockMen +< +< This program is free software. It comes without any warranty, to +< the extent permitted by applicable law. You can redistribute it +< and/or modify it under the terms of the Do What The Fuck You Want +< To Public License, Version 2, as published by Sam Hocevar. See +< http://sam.zoy.org/wtfpl/COPYING for more details. +< +< +< +< +< +< --USING the mod-- +< +< This mod "overrides" the recipe for the default fence, so if you want craft a fance, it crafts THIS fence. +< +< If you want replace already placed default fences open the "init.lua" (in this directory) and change +< the first line to "local override_original = true". Then all placed default fences will be replaced with +< this fence. +< +< It is not possible to jump over the Fence or the closed Fencegate. Only exception is when you "sneak" and "jump". +\ No newline at end of file +--- +> Fences +> ===================================================================== +> Main: BlockMen +> Lisc: WTFPL v2 +> Text: CC0 +> By Tirifto +> Link: https://forum.minetest.net/viewtopic.php?f=11&t=5016 diff --git a/diff/fences.diff/textures/fences_fencegate.png b/diff/fences.diff/textures/fences_fencegate.png new file mode 100644 index 0000000..accacf7 Binary files /dev/null and b/diff/fences.diff/textures/fences_fencegate.png differ diff --git a/diff/fishing/README.md b/diff/fishing/README.md new file mode 100755 index 0000000..7633304 --- /dev/null +++ b/diff/fishing/README.md @@ -0,0 +1,60 @@ + +## Minetest Fishing Mod + +### Original by Mossmanikin https://github.com/Mossmanikin/fishing +### Rewrited by Crabman77 (MFF team) + +### **9 fish type** +**fish in rivers** +> - 2 small fish (fish, carp) +> - 3 predator fish (perch, catfish, Northern Pike) + +**fish in sea** +> - 3 small fish (clownfish,bluewhite fish, exotic fish) +> - 1 predator fish (small shark) + + +3 kind of bait for small fish (corn, bread, worm) +4 kind of bait for predator fish (small fish) +2 poles, wood 30 uses and mithril 1500 uses +The baits have a variable luck(15% to 80%) changed between 30 minutes to 6 hours for a better gameplay +Baitball improves lucky bait of 20% + +### **Contest Game ** +Contest game can be launched by admin, duration variable 2min to 4heures +Start/End is announced in chat and sound +A ranking appears(formspec) after contest + +Adjustable settings in formspec +if the unified_inventory mod is actived there is a button for classification or settings for the admin only + + +## **schedule** +### **Chatcommand** +**contest_show** +**contest_stop** +**contest_del number(view with contest_show)** +**contest_start duration(in seconds)** +> - contest_start 3600 + +**contest_add wday hour minutes duration** +> - contest_add 0 15 30 3600 +> - Wday 0=all, 1=sunday, 2=Monday, ..., 7=Saturday + +[demo video youtube](https://youtu.be/8rt8g3F2Gmk) + + +![fishing]( http://nsm08.casimages.com/img/2015/07/01/1507010157379539613411965.png) + +####Trophy and fish type +![fishing]( http://nsm08.casimages.com/img/2015/09/26//1509260649029539613611795.jpg) +#### Admin can look bait chance +![fishing]( http://nsm08.casimages.com/img/2015/09/26//1509260648599539613611793.jpg) +### admin menu +![fishing]( http://nsm08.casimages.com/img/2015/09/26//1509260649019539613611794.jpg) + +![fishing]( http://nsm08.casimages.com/img/2015/07/01//1507010157389539613411968.png) + +![fishing]( http://nsm08.casimages.com/img/2015/07/01//1507010157379539613411966.png) +####formspec contest ranking +![fishing]( http://nsm08.casimages.com/img/2015/09/26//1509260648579539613611792.jpg) diff --git a/diff/fishing/baitball.lua b/diff/fishing/baitball.lua new file mode 100755 index 0000000..407f33d --- /dev/null +++ b/diff/fishing/baitball.lua @@ -0,0 +1,29 @@ + +-- baitball +minetest.register_craftitem("fishing:baitball", { + description = fishing_setting.func.S("Bait Ball"), + inventory_image = "fishing_baitball.png", + stack_max = 99, +}) + +minetest.register_craft({ + type = "shapeless", + output = "fishing:baitball 20", + recipe = {"farming:flour", "farming:corn", "bucket:bucket_water"}, + replacements = {{ "bucket:bucket_water", "bucket:bucket_empty"}} +}) + + +-- baitball_shark +minetest.register_craftitem("fishing:baitball_shark", { + description = fishing_setting.func.S("Shark Bait Ball"), + inventory_image = "fishing_baitball_shark.png", + stack_max = 99, +}) + +minetest.register_craft({ + type = "shapeless", + output = "fishing:baitball_shark 20", + recipe = {"group:fishbait", "group:fishbait"} +}) + diff --git a/diff/fishing/baits.lua b/diff/fishing/baits.lua new file mode 100755 index 0000000..f5eeb72 --- /dev/null +++ b/diff/fishing/baits.lua @@ -0,0 +1,37 @@ + +--fish bait +--bait_corn +minetest.register_craftitem("fishing:bait_corn", { + description = fishing_setting.func.S("Bait Corn"), + inventory_image = "fishing_bait_corn.png", +}) + +fishing_setting.baits["fishing:bait_corn"] = { ["bait"] = "fishing:bait_corn", ["bobber"] = "fishing:bobber_fish_entity",["texture"] = "fishing_bait_corn.png", ["hungry"] = 50 } + +--bait_bread +minetest.register_craftitem("fishing:bait_bread", { + description = fishing_setting.func.S("Bait Bread"), + inventory_image = "fishing_bait_bread.png", +}) + +fishing_setting.baits["fishing:bait_bread"] = { ["bait"] = "fishing:bait_bread", ["bobber"] = "fishing:bobber_fish_entity",["texture"] = "fishing_bait_bread.png", ["hungry"] = 50 } + +--bait_worm +fishing_setting.baits["fishing:bait_worm"] = { ["bait"] = "fishing:bait_worm", ["bobber"] = "fishing:bobber_fish_entity",["texture"] = "fishing_bait_worm.png", ["hungry"] = 50 } + +--shark bait +--bait_fish +fishing_setting.baits["fishing:fish_raw"] = { ["bait"] = "fishing:fish_raw", ["bobber"] = "fishing:bobber_shark_entity",["texture"] = "fishing_fish_raw.png", ["hungry"] = 50 } + +fishing_setting.baits["fishing:clownfish_raw"] = { ["bait"] = "fishing:clownfish_raw", ["bobber"] = "fishing:bobber_shark_entity",["texture"] = "fishing_clownfish_raw.png", ["hungry"] = 50 } + +fishing_setting.baits["fishing:bluewhite_raw"] = { ["bait"] = "fishing:bluewhite_raw", ["bobber"] = "fishing:bobber_shark_entity",["texture"] = "fishing_bluewhite_raw.png", ["hungry"] = 50 } + +fishing_setting.baits["fishing:exoticfish_raw"] = { ["bait"] = "fishing:exoticfish_raw", ["bobber"] = "fishing:bobber_shark_entity",["texture"] = "fishing_exoticfish_raw.png", ["hungry"] = 50 } + +-- to mob_fish modpack +if (minetest.get_modpath("mobs_fish")) then + fishing_setting.baits["mobs_fish:clownfish"] = { ["bait"] = "mobs_fish:clownfish", ["bobber"] = "fishing:bobber_shark_entity", ["hungry"] = 50 } + fishing_setting.baits["mobs_fish:tropical"] = { ["bait"] = "mobs_fish:tropical", ["bobber"] = "fishing:bobber_shark_entity", ["hungry"] = 50 } +end + diff --git a/diff/fishing/bobber.lua b/diff/fishing/bobber.lua new file mode 100755 index 0000000..c9eb465 --- /dev/null +++ b/diff/fishing/bobber.lua @@ -0,0 +1,230 @@ +----------------------------------------------------------------------------------------------- +-- Fishing - crabman77's version - Bobber +-- Rewrited from original Fishing - Mossmanikin's version - Bobber 0.1.7 +-- License (code & textures): WTFPL +-- Contains code from: fishing (original), mobs, throwing, volcano +-- Supports: 3d_armor, animal_clownfish, animal_fish_blue_white, animal_rat, flowers_plus, mobs, seaplants +----------------------------------------------------------------------------------------------- + +-- bobber +minetest.register_node("fishing:bobber_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { +-- { left, bottom, front, right, top , back} + {-8/16, -8/16, 0, 8/16, 8/16, 0}, -- feathers + {-2/16, -8/16, -2/16, 2/16, -4/16, 2/16}, -- bobber + }, + }, + tiles = { + "fishing_bobber_top.png", + "fishing_bobber_bottom.png", + "fishing_bobber.png", + "fishing_bobber.png", + "fishing_bobber.png", + "fishing_bobber.png^[transformFX" + }, + groups = {not_in_creative_inventory=1}, +}) + + +local FISHING_BOBBER_ENTITY={ + physical = true, + timer = 0, + visual = "wielditem", + visual_size = {x=1/3, y=1/3, z=1/3}, + textures = {"fishing:bobber_box"}, + -- {left ,bottom, front, right, top , back} + collisionbox = {-2/16, -4/16, -2/16, 2/16, 2/16, 2/16}, + randomtime = 50, + baitball = 0, + prize = "", + bait = "", + owner = nil, + old_pos = nil, + old_pos2 = nil, + + +-- DESTROY BOBBER WHEN PUNCHING IT + on_punch = function (self, puncher, time_from_last_punch, tool_capabilities, dir) + if not puncher:is_player() then return end + local player_name = puncher:get_player_name() + if player_name ~= self.owner then return end + if fishing_setting.settings["message"] == true then + minetest.chat_send_player(player_name, fishing_setting.func.S("You didn't catch anything."), false) + end + if not fishing_setting.is_creative_mode then + local inv = puncher:get_inventory() + if inv:room_for_item("main", {name=self.bait, count=1, wear=0, metadata=""}) then + inv:add_item("main", {name=self.bait, count=1, wear=0, metadata=""}) + if fishing_setting.settings["message"] == true then + minetest.chat_send_player(player_name, fishing_setting.func.S("The bait is still there."), false) + end + end + end + -- make sound and remove bobber + minetest.sound_play("fishing_bobber1", { pos = self.object:getpos(), gain = 0.5, }) + self.object:remove() + end, + + +-- WHEN RIGHTCLICKING THE BOBBER THE FOLLOWING HAPPENS (CLICK AT THE RIGHT TIME WHILE HOLDING A FISHING POLE) + on_rightclick = function (self, clicker) + local item = clicker:get_wielded_item() + local player_name = clicker:get_player_name() + if not player_name or not self.owner then + self.object:remove() + return + end + local inv = clicker:get_inventory() + local pos = self.object:getpos() + local item_name = item:get_name() + + if string.find(item_name, "fishing:pole_") ~= nil then + if player_name ~= self.owner then return end + if self.prize ~= "" then + if math.random(1, 100) <= fishing_setting.settings["escape_chance"] then -- fish escaped + if fishing_setting.settings["message"] == true then + minetest.chat_send_player(player_name, fishing_setting.func.S("Your fish escaped."), false) + end + else + local name = self.prize[1]..":"..self.prize[2] + local desc = self.prize[4] + if fishing_setting.settings["message"] == true then + minetest.chat_send_player(player_name, fishing_setting.func.S("You caught "..desc), false) + end + fishing_setting.func.add_to_trophies(clicker, self.prize[2], desc) + local wear_value = fishing_setting.func.wear_value(self.prize[3]) + if inv:room_for_item("main", {name=name, count=1, wear=wear_value, metadata=""}) then + inv:add_item("main", {name=name, count=1, wear=wear_value, metadata=""}) + else + minetest.spawn_item(clicker:getpos(), {name=name, count=1, wear=wear_value, metadata=""}) + end + end + else + if not fishing_setting.is_creative_mode then + if inv:room_for_item("main", {name=self.bait, count=1, wear=0, metadata=""}) then + inv:add_item("main", {name=self.bait, count=1, wear=0, metadata=""}) + end + end + end + -- weither player has fishing pole or not + minetest.sound_play("fishing_bobber1", { pos = self.object:getpos(), gain = 0.5, }) + self.object:remove() + + elseif item_name == "fishing:baitball" then + if not fishing_setting.is_creative_mode then + inv:remove_item("main", "fishing:baitball") + end + self.baitball = 20 + --addparticle + minetest.add_particlespawner(30, 0.5, -- for how long (?) -- Particles on splash + {x=pos.x,y=pos.y-0.0625,z=pos.z}, {x=pos.x,y=pos.y,z=pos.z}, -- position min, pos max + {x=-2,y=-0.0625,z=-2}, {x=2,y=3,z=2}, -- velocity min, vel max + {x=0,y=-9.8,z=0}, {x=0,y=-9.8,z=0}, + 0.3, 1.2, + 0.25, 0.5, -- min size, max size + false, "fishing_particle_baitball.png") + -- add sound + minetest.sound_play("fishing_baitball", {pos = self.object:getpos(), gain = 0.2, }) + end + end, + + +-- AS SOON AS THE BOBBER IS PLACED IT WILL ACT LIKE + on_step = function(self, dtime) + local pos = self.object:getpos() + --remove if no owner, no player, owner no in bobber_view_range + if self.owner == nil then self.object:remove(); return end + --remove if not node water + local node = minetest.get_node_or_nil({x=pos.x, y=pos.y-0.5, z=pos.z}) + if not node or string.find(node.name, "water_source") == nil then + if fishing_setting.settings["message"] == true then + minetest.chat_send_player(self.owner, fishing_setting.func.S("Haha, Fishing is prohibited outside water!")) + end + self.object:remove() + return + end + local player = minetest.get_player_by_name(self.owner) + if not player then self.object:remove(); return end + local p = player:getpos() + local dist = ((p.x-pos.x)^2 + (p.y-pos.y)^2 + (p.z-pos.z)^2)^0.5 + if dist > fishing_setting.settings["bobber_view_range"] then + minetest.sound_play("fishing_bobber1", {pos = self.object:getpos(),gain = 0.5,}) + self.object:remove() + return + end + + --rotate bobber + if math.random(1, 4) == 1 then + self.object:setyaw(self.object:getyaw()+((math.random(0,360)-180)/2880*math.pi)) + end + + self.timer = self.timer + 1 + if self.timer < self.randomtime then + -- if fish or others items, move bobber to simulate fish on the line + if self.prize ~= "" and math.random(1,3) == 1 then + if self.old_pos2 == true then + pos.y = pos.y-0.0280 + self.object:moveto(pos, false) + self.old_pos2 = false + else + pos.y = pos.y+0.0280 + self.object:moveto(pos, false) + self.old_pos2 = true + end + end + return + end + + --change item on line + self.timer = 0 + if self.prize ~= "" and fishing_setting.have_true_fish and fishing_setting.prizes["true_fish"]["little"][self.prize[1]..":"..self.prize[2]] then + minetest.add_entity({x=pos.x, y=pos.y-1, z=pos.z}, self.prize[1]..":"..self.prize[2]) + end + self.prize = "" + self.object:moveto(self.old_pos, false) + --Once the fish are not hungry :), baitball increase hungry + 20% + if math.random(1, 100) > fishing_setting.baits[self.bait]["hungry"] + self.baitball then + --Fish not hungry !( + self.randomtime = math.random(20,60)*10 + return + end + + self.randomtime = math.random(1,5)*10 + if math.random(1, 100) <= fishing_setting.settings["fish_chance"] then + if self.water_type and self.water_type == "sea" then + self.prize = fishing_setting.prizes["sea"]["little"][math.random(1,#fishing_setting.prizes["sea"]["little"])] + else + self.prize = fishing_setting.prizes["rivers"]["little"][math.random(1,#fishing_setting.prizes["rivers"]["little"])] + end + + -- to mobs_fish modpack + if fishing_setting.have_true_fish then + local objs = minetest.get_objects_inside_radius({x=pos.x, y=pos.y-1, z=pos.z}, 1) + for _, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + local name = obj:get_luaentity().name + if fishing_setting.prizes["true_fish"]["little"][name] then + self.prize = fishing_setting.prizes["true_fish"]["little"][name] + obj:remove() + self.randomtime = math.random(3,7)*10 + break + end + end + end + end + elseif math.random(1, 100) <= 10 then + self.prize = fishing_setting.func.get_loot() + end + + if self.prize ~= "" then + pos.y = self.old_pos.y-0.1 + self.object:moveto(pos, false) + minetest.sound_play("fishing_bobber1", {pos=pos,gain = 0.5,}) + end + end, +} + +minetest.register_entity("fishing:bobber_fish_entity", FISHING_BOBBER_ENTITY) diff --git a/diff/fishing/bobber_shark.lua b/diff/fishing/bobber_shark.lua new file mode 100755 index 0000000..fd7b45b --- /dev/null +++ b/diff/fishing/bobber_shark.lua @@ -0,0 +1,234 @@ +----------------------------------------------------------------------------------------------- +-- Fishing - crabman77 version - Bobber Shark +-- Rewrited from original Fishing - Mossmanikin's version - Bobber Shark 0.0.6 +-- License (code & textures): WTFPL +----------------------------------------------------------------------------------------------- + +-- bobber shark +minetest.register_node("fishing:bobber_shark_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { +-- { left, bottom, front, right, top , back} + {-8/16, -8/16, 0, 8/16, 8/16, 0}, -- feathers + {-2/16, -8/16, -2/16, 2/16, -4/16, 2/16}, -- bobber + } + }, + tiles = { + "fishing_bobber_top.png", + "fishing_bobber_bottom.png", + "fishing_bobber_shark.png", + "fishing_bobber_shark.png", + "fishing_bobber_shark.png", + "fishing_bobber_shark.png^[transformFX" + }, + groups = {not_in_creative_inventory=1}, +}) + + +local FISHING_BOBBER_SHARK_ENTITY={ + physical = true, + timer = 0, + visual = "wielditem", + visual_size = {x=1/3, y=1/3, z=1/3}, + textures = {"fishing:bobber_shark_box"}, + -- {left ,bottom, front, right, top , back} + collisionbox = {-3/16, -4/16, -3/16, 3/16, 4/16, 3/16}, + randomtime = 50, + baitball = 0, + prize = "", + bait = "", + owner = nil, + old_pos = nil, + old_pos2 = nil, + + +-- DESTROY BOBBER WHEN PUNCHING IT + on_punch = function (self, puncher, time_from_last_punch, tool_capabilities, dir) + if not puncher:is_player() then return end + local player_name = puncher:get_player_name() + if player_name ~= self.owner then return end + if fishing_setting.settings["message"] == true then + minetest.chat_send_player(player_name, fishing_setting.func.S("You didn't catch anything."), false) + end + if not fishing_setting.is_creative_mode then + local inv = puncher:get_inventory() + if inv:room_for_item("main", {name=self.bait, count=1, wear=0, metadata=""}) then + inv:add_item("main", {name=self.bait, count=1, wear=0, metadata=""}) + if fishing_setting.settings["message"] == true then + minetest.chat_send_player(player_name, fishing_setting.func.S("The bait is still there."), false) + end + end + end + -- make sound and remove bobber + minetest.sound_play("fishing_bobber1", { pos = self.object:getpos(), gain = 0.5, }) + self.object:remove() + end, + + +-- WHEN RIGHTCLICKING THE BOBBER THE FOLLOWING HAPPENS (CLICK AT THE RIGHT TIME WHILE HOLDING A FISHING POLE) + on_rightclick = function (self, clicker) + local item = clicker:get_wielded_item() + local player_name = clicker:get_player_name() + if not player_name or not self.owner then + self.object:remove() + return + end + local inv = clicker:get_inventory() + local pos = self.object:getpos() + local item_name = item:get_name() + + if string.find(item_name, "fishing:pole_") ~= nil then + if player_name ~= self.owner then return end + if self.prize ~= "" then + if math.random(1, 100) <= fishing_setting.settings["escape_chance"] then -- fish escaped + if fishing_setting.settings["message"] == true then + minetest.chat_send_player(player_name, fishing_setting.func.S("Your fish escaped."), false) + end + else + local name = self.prize[1]..":"..self.prize[2] + local desc = self.prize[4] + if fishing_setting.settings["message"] == true then + minetest.chat_send_player(player_name, fishing_setting.func.S("You caught "..desc), false) + end + fishing_setting.func.add_to_trophies(clicker, self.prize[2], desc) + local wear_value = fishing_setting.func.wear_value(self.prize[3]) + if inv:room_for_item("main", {name=name, count=1, wear=wear_value, metadata=""}) then + inv:add_item("main", {name=name, count=1, wear=wear_value, metadata=""}) + else + minetest.spawn_item(clicker:getpos(), {name=name, count=1, wear=wear_value, metadata=""}) + end + end + else + if not fishing_setting.is_creative_mode then + if inv:room_for_item("main", {name=self.bait, count=1, wear=0, metadata=""}) then + inv:add_item("main", {name=self.bait, count=1, wear=0, metadata=""}) + end + end + end + -- weither player has fishing pole or not + minetest.sound_play("fishing_bobber1", { pos = self.object:getpos(), gain = 0.5, }) + self.object:remove() + + elseif item_name == "fishing:baitball_shark" then + if not fishing_setting.is_creative_mode then + inv:remove_item("main", "fishing:baitball_shark") + end + self.baitball = 20 + --addparticle + minetest.add_particlespawner(30, 0.5, -- for how long (?) -- Particles on splash + {x=pos.x,y=pos.y-0.0325,z=pos.z}, {x=pos.x,y=pos.y,z=pos.z}, -- position min, pos max + {x=-2,y=-0.0325,z=-2}, {x=2,y=3,z=2}, -- velocity min, vel max + {x=0,y=-3.8,z=0}, {x=0,y=-9.8,z=0}, + 0.3, 1.2, + 0.25, 0.40, -- min size, max size + false, "fishing_particle_baitball_shark.png") + -- add sound + minetest.sound_play("fishing_baitball", {pos = self.object:getpos(), gain = 0.2, }) + end + end, + + +-- AS SOON AS THE BOBBER IS PLACED IT WILL ACT LIKE + on_step = function(self, dtime) + local pos = self.object:getpos() + --remove if no owner, no player, owner no in bobber_view_range + if self.owner == nil then self.object:remove(); return end + --remove if not node water + local node = minetest.get_node_or_nil({x=pos.x, y=pos.y-0.5, z=pos.z}) + if not node or string.find(node.name, "water_source") == nil then + if fishing_setting.settings["message"] == true then + minetest.chat_send_player(self.owner, fishing_setting.func.S("Haha, Fishing is prohibited outside water!")) + end + self.object:remove() + return + end + local player = minetest.get_player_by_name(self.owner) + if not player then self.object:remove(); return end + local p = player:getpos() + local dist = ((p.x-pos.x)^2 + (p.y-pos.y)^2 + (p.z-pos.z)^2)^0.5 + if dist > fishing_setting.settings["bobber_view_range"] then + minetest.sound_play("fishing_bobber1", {pos = self.object:getpos(),gain = 0.5,}) + self.object:remove() + return + end + + --rotate bobber + if math.random(1, 4) == 1 then + self.object:setyaw(self.object:getyaw()+((math.random(0,360)-180)/2880*math.pi)) + end + + self.timer = self.timer + 1 + if self.timer < self.randomtime then + -- if fish or others items, move bobber to simulate fish on the line + if self.prize ~= "" and math.random(1,3) == 1 then + if self.old_pos2 == true then + pos.y = pos.y-0.050 + self.object:moveto(pos, false) + self.old_pos2 = false + else + pos.y = pos.y+0.050 + self.object:moveto(pos, false) + self.old_pos2 = true + end + end + return + end + + --change item on line + self.timer = 0 + if self.prize ~= "" and fishing_setting.have_true_fish and fishing_setting.prizes["true_fish"]["big"][self.prize[1]..":"..self.prize[2]] then + minetest.add_entity({x=pos.x, y=pos.y-1, z=pos.z}, self.prize[1]..":"..self.prize[2]) + end + self.prize = "" + self.object:moveto(self.old_pos, false) + --Once the fish are not hungry :), baitball increase hungry + 20% + if math.random(1, 100) > fishing_setting.baits[self.bait]["hungry"] + self.baitball then + --Fish not hungry !( + self.randomtime = math.random(20,60)*10 + return + end + + self.randomtime = math.random(1,5)*10 + local chance = math.random(1, 100) + --if 1 you catch a treasure + if fishing_setting.settings["treasure_enable"] and chance == 1 then + if math.random(1, 100) <= fishing_setting.settings["treasure_chance"] then + self.prize = fishing_setting.prizes["treasure"][math.random(1,#fishing_setting.prizes["treasure"])] + end + elseif chance <= fishing_setting.settings["fish_chance"] then + if self.water_type and self.water_type == "sea" then + self.prize = fishing_setting.prizes["sea"]["big"][math.random(1,#fishing_setting.prizes["sea"]["big"])] + else + self.prize = fishing_setting.prizes["rivers"]["big"][math.random(1,#fishing_setting.prizes["rivers"]["big"])] + end + + -- to mobs_fish modpack + if fishing_setting.have_true_fish then + local objs = minetest.get_objects_inside_radius({x=pos.x, y=pos.y-2, z=pos.z}, 3) + for _, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + local name = obj:get_luaentity().name + if fishing_setting.prizes["true_fish"]["big"][name] then + self.prize = fishing_setting.prizes["true_fish"]["big"][name] + obj:remove() + self.randomtime = math.random(3,7)*10 + break + end + end + end + end + elseif math.random(1, 100) <= 10 then + self.prize = fishing_setting.func.get_loot() + end + + if self.prize ~= "" then + pos.y = self.old_pos.y-0.140 + self.object:moveto(pos, false) + minetest.sound_play("fishing_bobber1", {pos=pos,gain = 0.5,}) + end + end, +} + +minetest.register_entity("fishing:bobber_shark_entity", FISHING_BOBBER_SHARK_ENTITY) diff --git a/diff/fishing/crafting.lua b/diff/fishing/crafting.lua new file mode 100755 index 0000000..c72c2d6 --- /dev/null +++ b/diff/fishing/crafting.lua @@ -0,0 +1,174 @@ +----------------------------------------------------------------------------------------------- +-- Fishing - crabman77 version +-- Rewrited from original Fishing - Mossmanikin's version - Recipes 0.0.8 +----------------------------------------------------------------------------------------------- +-- License (code & textures): WTFPL +-- Contains code from: animal_clownfish, animal_fish_blue_white, fishing (original), stoneage +-- Looked at code from: +-- Dependencies: default, farming +-- Supports: animal_clownfish, animal_fish_blue_white, animal_rat, mobs +----------------------------------------------------------------------------------------------- + +----------------------------------------------------------------------------------------------- +-- Fishing Pole +----------------------------------------------------------------------------------------------- +-- Wood Fishing Pole +minetest.register_craft({ + output = "fishing:pole_wood", + recipe = { + {"", "", "group:stick" }, + {"", "group:stick", "farming:string" }, + {"group:stick", "", "farming:string" }, + } +}) + +if minetest.get_modpath("moreblocks") ~= nil then +minetest.register_craft({ + output = "fishing:pole_wood", + recipe = { + {"", "", "group:stick" }, + {"", "group:stick", "moreblocks:rope" }, + {"group:stick", "", "moreblocks:rope" }, + } +}) +end + +if minetest.get_modpath("ropes") ~= nil then + minetest.register_craft({ + output = "fishing:pole_wood", + recipe = { + {"", "", "group:stick" }, + {"", "group:stick", "ropes:rope" }, + {"group:stick", "", "ropes:rope" }, + } + }) +end + +-- Mithril Fishing Pole +-- Some subgames have bundled all of moreores' content in their default mod; just check for mithril +if (minetest.get_modpath("moreores") ~= nil or minetest.registered_items["default:mithril_ingot"]) and minetest.get_modpath("mobs") ~= nil then +minetest.register_craft({ + output = "fishing:pole_perfect", + recipe = { + {"", "", "moreores:mithril_ingot" }, + {"", "moreores:mithril_ingot", "mobs:spider_cobweb" }, + {"moreores:mithril_ingot", "", "mobs:spider_cobweb" }, + } +}) +end + +----------------------------------------------------------------------------------------------- +-- Fishing bait +----------------------------------------------------------------------------------------------- +--bait corn +minetest.register_craft({ + output = "fishing:bait_corn 9", + recipe = { + {"", "farming:corn", ""}, + } +}) + +--bait bread +minetest.register_craft({ + output = "fishing:bait_bread 9", + recipe = { + {"", "farming:bread", ""}, + } +}) + +----------------------------------------------------------------------------------------------- +-- Roasted Fish +----------------------------------------------------------------------------------------------- +minetest.register_craft({ + type = "cooking", + output = "fishing:fish_cooked", + recipe = "group:fishraw", + cooktime = 2, +}) + +if minetest.get_modpath("mobs_fish") ~= nil then + minetest.register_craft({ + type = "cooking", + output = "fishing:fish_cooked", + recipe = "mobs_fish:clownfish", + cooktime = 2, + }) + minetest.register_craft({ + type = "cooking", + output = "fishing:fish_cooked", + recipe = "mobs_fish:tropical", + cooktime = 2, + }) +end + +----------------------------------------------------------------------------------------------- +-- Wheat Seed +----------------------------------------------------------------------------------------------- +minetest.register_craft({ + type = "shapeless", + output = "farming:seed_wheat", + recipe = {"farming:wheat"}, +}) + +----------------------------------------------------------------------------------------------- +-- Sushi +----------------------------------------------------------------------------------------------- +if minetest.get_modpath("flowers_plus") ~= nil then + minetest.register_craft({ + type = "shapeless", + output = "fishing:sushi", + recipe = {"fishing:fish_cooked", "farming:seed_wheat", "flowers_plus:seaweed" }, + }) +end + +if minetest.get_modpath("seaplants") ~= nil then + minetest.register_craft({ + type = "shapeless", + output = "fishing:sushi", + recipe = {"fishing:fish_cooked", "farming:seed_wheat", "seaplants:kelpgreen" }, + + }) +end + +----------------------------------------------------------------------------------------------- +-- Roasted Shark +----------------------------------------------------------------------------------------------- +minetest.register_craft({ + type = "cooking", + output = "fishing:shark_cooked", + recipe = "fishing:shark_raw", + cooktime = 2, +}) + +if minetest.get_modpath("mobs_sharks") ~= nil then + minetest.register_craft({ + type = "cooking", + output = "fishing:shark_cooked", + recipe = "mobs_sharks:shark_lg", + cooktime = 2, + }) + minetest.register_craft({ + type = "cooking", + output = "fishing:shark_cooked", + recipe = "mobs_sharks:shark_md", + cooktime = 2, + }) + minetest.register_craft({ + type = "cooking", + output = "fishing:shark_cooked", + recipe = "mobs_sharks:shark_sm", + cooktime = 2, + }) +end + +----------------------------------------------------------------------------------------------- +-- Roasted Pike +----------------------------------------------------------------------------------------------- +minetest.register_craft({ + type = "cooking", + output = "fishing:pike_cooked", + recipe = "fishing:pike_raw", + cooktime = 2, +}) + + diff --git a/diff/fishing/depends.txt b/diff/fishing/depends.txt new file mode 100755 index 0000000..ea5ce40 --- /dev/null +++ b/diff/fishing/depends.txt @@ -0,0 +1,11 @@ +default +unified_inventory? +farming +moreblocks? +ropes? +moreores? +mobs? +flowers_plus? +seaplants? +mobs_fish? +mobs_sharks? diff --git a/diff/fishing/fishes.lua b/diff/fishing/fishes.lua new file mode 100755 index 0000000..9bad07e --- /dev/null +++ b/diff/fishing/fishes.lua @@ -0,0 +1,133 @@ +------------------------------------------------------------------------------------------- +-- Fishing - crabman77 version +-- Rewrited from original Fishing - Mossmanikin's version - Fishes 0.0.4 +-- License (code & textures): WTFPL +----------------------------------------------------------------------------------------------- + +----------------------------------------------------------------------------------------------- +-- Fish +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:fish_raw", { + description = fishing_setting.func.S("Fish"), + groups = {fishbait=1, fishraw=1}, + inventory_image = "fishing_fish_raw.png", + on_use = minetest.item_eat(2), +}) + +----------------------------------------------------- +-- Roasted Fish +----------------------------------------------------- +minetest.register_craftitem("fishing:fish_cooked", { + description = fishing_setting.func.S("Roasted Fish"), + groups = {}, + inventory_image = "fishing_fish_cooked.png", + on_use = minetest.item_eat(4), +}) +----------------------------------------------------- +-- Sushi +----------------------------------------------------- +minetest.register_craftitem("fishing:sushi", { + description = fishing_setting.func.S("Sushi (Hoso Maki)"), + groups = {}, + inventory_image = "fishing_sushi.png", + on_use = minetest.item_eat(6), +}) + +----------------------------------------------------------------------------------------------- +-- clownfish +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:clownfish_raw", { + description = fishing_setting.func.S("Clownfish"), + groups = {fishbait=1, fishraw=1}, + inventory_image = "fishing_clownfish_raw.png", + on_use = minetest.item_eat(2), +}) + +----------------------------------------------------------------------------------------------- +-- bluewhite +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:bluewhite_raw", { + description = fishing_setting.func.S("Bluewhite"), + groups = {fishbait=1, fishraw=1}, + inventory_image = "fishing_bluewhite_raw.png", + on_use = minetest.item_eat(2), +}) +----------------------------------------------------------------------------------------------- +-- exoticfish +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:exoticfish_raw", { + description = fishing_setting.func.S("Exotic"), + groups = {fishbait=1, fishraw=1}, + inventory_image = "fishing_exoticfish_raw.png", + on_use = minetest.item_eat(2), +}) + +----------------------------------------------------------------------------------------------- +-- carp +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:carp_raw", { + description = fishing_setting.func.S("Carp"), + groups = {fishbait=1, fishraw=1}, + inventory_image = "fishing_carp_raw.png", + on_use = minetest.item_eat(2), +}) + +----------------------------------------------------------------------------------------------- +-- perch +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:perch_raw", { + description = fishing_setting.func.S("Perch"), + groups = {fishbait=1, fishraw=1}, + inventory_image = "fishing_perch_raw.png", + on_use = minetest.item_eat(2), +}) + +----------------------------------------------------------------------------------------------- +-- catfish +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:catfish_raw", { + description = fishing_setting.func.S("Catfish"), + groups = {fishbait=1, fishraw=1}, + inventory_image = "fishing_catfish_raw.png", + on_use = minetest.item_eat(2), +}) + + +----------------------------------------------------------------------------------------------- +-- Whatthef... it's a freakin' Shark! +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:shark_raw", { + description = fishing_setting.func.S("Shark"), + groups = {fishbait=1}, + inventory_image = "fishing_shark_raw.png", + on_use = minetest.item_eat(2), +}) + +----------------------------------------------------- +-- Roasted Shark +----------------------------------------------------- +minetest.register_craftitem("fishing:shark_cooked", { + description = fishing_setting.func.S("Roasted Shark"), + groups = {}, + inventory_image = "fishing_shark_cooked.png", + on_use = minetest.item_eat(6), +}) + +----------------------------------------------------------------------------------------------- +-- Pike +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:pike_raw", { + description = fishing_setting.func.S("Northern Pike"), + groups = {fishbait=1}, + inventory_image = "fishing_pike_raw.png", + on_use = minetest.item_eat(2), +}) +----------------------------------------------------- +-- Roasted Pike +----------------------------------------------------- +minetest.register_craftitem("fishing:pike_cooked", { + description = fishing_setting.func.S("Roasted Northern Pike"), + groups = {}, + inventory_image = "fishing_pike_cooked.png", + on_use = minetest.item_eat(6), +}) diff --git a/diff/fishing/functions.lua b/diff/fishing/functions.lua new file mode 100755 index 0000000..8f7e8ce --- /dev/null +++ b/diff/fishing/functions.lua @@ -0,0 +1,827 @@ + +local S = fishing_setting.func.S + +--function save settings +function fishing_setting.func.save() + local input, err = io.open(fishing_setting.file_settings, "w") + if input then + input:write(minetest.serialize(fishing_setting.settings)) + input:close() + else + minetest.log("error", "open(" .. fishing_setting.file_settings .. ", 'w') failed: " .. err) + end +end + + +function fishing_setting.func.set_settings(new_settings, settings) + if settings["message"] ~= nil then + new_settings["message"] = settings["message"] + end + + if settings["worm_is_mob"] ~= nil then + new_settings["worm_is_mob"] = settings["worm_is_mob"] + end + + if settings["worm_chance"] ~= nil then + new_settings["worm_chance"] = settings["worm_chance"] + end + + if settings["new_worm_source"] ~= nil then + new_settings["new_worm_source"] = settings["new_worm_source"] + end + if settings["wear_out"] ~= nil then + new_settings["wear_out"] = settings["wear_out"] + end + + if settings["bobber_view_range"] ~= nil then + new_settings["bobber_view_range"] = settings["bobber_view_range"] + end + + if settings["simple_deco_fishing_pole"] ~= nil then + new_settings["simple_deco_fishing_pole"] = settings["simple_deco_fishing_pole"] + end + + if settings["fish_chance"] ~= nil then + new_settings["fish_chance"] = settings["fish_chance"] + end + + if settings["treasure_chance"] ~= nil then + new_settings["treasure_chance"] = settings["treasure_chance"] + end + + if settings["shark_chance"] ~= nil then + new_settings["shark_chance"] = settings["shark_chance"] + end + + if settings["treasure_enable"] ~= nil then + new_settings["treasure_enable"] = settings["treasure_enable"] + end + + if settings["escape_chance"] ~= nil then + new_settings["escape_chance"] = settings["escape_chance"] + end +end + + +--function load settings from file +function fishing_setting.func.load() + local file = io.open(fishing_setting.file_settings, "r") + local settings = {} + if file then + settings = minetest.deserialize(file:read("*all")) + file:close() + if settings and type(settings) == "table" then + fishing_setting.func.set_settings(fishing_setting.settings, settings) + end + end +end + +--function return wear tool value (old or new) +function fishing_setting.func.wear_value(wear) + local used = 0 + if wear == "random" then + used = (2000*(math.random(20, 29))) + elseif wear == "randomtools" then + used = (65535/(30-(math.random(15, 29)))) + end + return used +end + + +-- function return table where mods actived +function fishing_setting.func.ignore_mod(list) + local listOk = {} + for i,v in ipairs(list) do + if minetest.get_modpath(v[1]) ~= nil then + table.insert(listOk, v) + end + end + return listOk +end + +--function random hungry by bait type +function fishing_setting.func.hungry_random() + for i,a in pairs(fishing_setting.baits) do + if string.find(i, "fishing:") ~= nil then + fishing_setting.baits[i]["hungry"] = math.random(15, 80) + end + end + + -- to mobs_fish modpack + if fishing_setting.baits["mobs_fish:clownfish"] then + fishing_setting.baits["mobs_fish:clownfish"]["hungry"] = fishing_setting.baits["fishing:clownfish_raw"]["hungry"] + end + if fishing_setting.baits["mobs_fish:tropical"] then + fishing_setting.baits["mobs_fish:tropical"]["hungry"] = fishing_setting.baits["fishing:exoticfish_raw"]["hungry"] + end + + --change hungry after random time, min 0h30, max 6h00 + minetest.after(math.random(1, 12)*1800, fishing_setting.func.hungry_random ) +end + + +function fishing_setting.func.get_loot() + if #fishing_setting.prizes["stuff"] > 0 then + local c = math.random(1, fishing_setting.prizes["stuff"][#fishing_setting.prizes["stuff"]][5]) + for i in pairs(fishing_setting.prizes["stuff"]) do + local min = fishing_setting.prizes["stuff"][i][5] + local chance = fishing_setting.prizes["stuff"][i][6] + local max = min + chance + if c <= max and c >= min then + return fishing_setting.prizes["stuff"][i] + end + end + end + return "" +end + + +-- Show notification when a player catches treasure +function fishing_setting.func.notify(f_name, treasure) + local title = S("Lucky %s, he caught the treasure, %s!"):format(f_name, treasure[4]) + for _, player in ipairs(minetest.get_connected_players()) do + local player_name = player:get_player_name() + if player_name == f_name then + minetest.chat_send_player(player_name, S("You caught the treasure, %s!"):format(treasure[4])) + else + minetest.chat_send_player(player_name, title) + end + end +end + + +-- Menu: fishing configuration +fishing_setting.func.on_show_settings = function(player_name) + if not fishing_setting.tmp_setting then + fishing_setting.tmp_setting = {} + fishing_setting.func.set_settings(fishing_setting.tmp_setting, fishing_setting.settings) + end + local formspec = "size[10.8,9]label[4,0;"..S("Fishing configuration").."]".. + -- Fish chance + "label[1.6,0.5;"..S("Fish chance").."]".. + "button[0,1;1,1;cfish;-1]".. + "button[1,1;1,1;cfish;-10]".. + "label[2.1,1.2;"..tostring(fishing_setting.tmp_setting["fish_chance"]).."]".. + "button[2.7,1;1,1;cfish;+10]".. + "button[3.7,1;1,1;cfish;+1]".. + -- Shark chance + "label[1.5,2;"..S("Shark chance").."]".. + "button[0,2.5;1,1;cshark;-1]".. + "button[1,2.5;1,1;cshark;-10]".. + "label[2.1,2.7;"..tostring(fishing_setting.tmp_setting["shark_chance"]).."]".. + "button[2.7,2.5;1,1;cshark;+10]".. + "button[3.7,2.5;1,1;cshark;+1]".. + -- Treasure chance + "label[1.5,3.5;"..S("Treasure chance").."]".. + "button[0,4.;1,1;ctreasure;-1]".. + "button[1,4;1,1;ctreasure;-10]".. + "label[2.1,4.2;"..tostring(fishing_setting.tmp_setting["treasure_chance"]).."]".. + "button[2.7,4;1,1;ctreasure;+10]".. + "button[3.7,4;1,1;ctreasure;+1]".. + -- Worm chance + "label[7.5,0.5;"..S("Worm chance").."]".. + "button[6,1;1,1;cworm;-1]".. + "button[7,1;1,1;cworm;-10]".. + "label[8.1,1.2;"..tostring(fishing_setting.tmp_setting["worm_chance"]).."]".. + "button[8.7,1;1,1;cworm;+10]".. + "button[9.7,1;1,1;cworm;+1]".. + -- Escape chance + "label[7.4,2;"..S("Escape chance").."]".. + "button[6,2.5;1,1;cescape;-1]".. + "button[7,2.5;1,1;cescape;-10]".. + "label[8.1,2.7;"..tostring(fishing_setting.tmp_setting["escape_chance"]).."]".. + "button[8.7,2.5;1,1;cescape;+10]".. + "button[9.7,2.5;1,1;cescape;+1]".. + -- Bobber view range + "label[7.2,3.5;"..S("Bobber view range").."]".. + "button[7,4;1,1;bvrange;-1]".. + "label[8.1,4.2;"..tostring(fishing_setting.tmp_setting["bobber_view_range"]).."]".. + "button[8.7,4;1,1;bvrange;+1]".. + -- Messages display + "label[0,5.7;"..S("Display messages in chat").."]".. + "button[3.7,5.5;1,1;dmessages;"..tostring(fishing_setting.tmp_setting["message"]).."]".. + --poledeco + "label[0,6.5;"..S("Simple pole deco").."]".. + "button[3.7,6.3;1,1;poledeco;"..tostring(fishing_setting.tmp_setting["simple_deco_fishing_pole"]).."]".. + -- Wearout + "label[0,7.3;"..S("Poles wearout").."]".. + "button[3.7,7.1;1,1;wearout;"..tostring(fishing_setting.tmp_setting["wear_out"]).."]".. + -- TREASURE_ENABLE + "label[6,5.7;"..S("Enable treasure").."]".. + "button[9.7,5.5;1,1;treasureenable;"..tostring(fishing_setting.tmp_setting["treasure_enable"]).."]".. + -- NEW_WORM_SOURCE + "label[6,6.5;"..S("New worm source (reboot)").."]".. + "button[9.7,6.3;1,1;newworm;"..tostring(fishing_setting.tmp_setting["new_worm_source"]).."]".. + -- WORM_IS_MOB + "label[6,7.3;"..S("Worm is a mob (reboot)").."]".. + "button[9.7,7.1;1,1;wormmob;"..tostring(fishing_setting.tmp_setting["worm_is_mob"]).."]".. + "button_exit[0,8.2;1.5,1;abort;"..S("Abort").."]".. + "button_exit[9.2,8.2;1.5,1;save;"..S("OK").."]" + minetest.show_formspec(player_name, "fishing:settings", formspec) +end + +local inc = function(value, field, min, max) + local inc = tonumber(field) + local v = value + if inc ~= nil then + v = value + inc + end + + if v > max then + return max + end + if v < min then + return min + end + return v +end + + +local bool = function(field) + return field ~= "true" +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + local player_name = player:get_player_name() + if not player_name then return end + if formname == "fishing:settings" then + if fields["save"] then + fishing_setting.func.set_settings(fishing_setting.settings, fishing_setting.tmp_setting) + fishing_setting.func.save() + fishing_setting.tmp_setting = nil + return + elseif fields["quit"] or fields["abort"] then + fishing_setting.tmp_setting = nil + return + elseif fields["cfish"] then + fishing_setting.tmp_setting["fish_chance"] = inc(fishing_setting.tmp_setting["fish_chance"], fields["cfish"], 1, 100) + elseif fields["cshark"] then + fishing_setting.tmp_setting["shark_chance"] = inc(fishing_setting.tmp_setting["shark_chance"], fields["cshark"], 1, 100) + elseif fields["ctreasure"] then + fishing_setting.tmp_setting["treasure_chance"] = inc(fishing_setting.tmp_setting["treasure_chance"], fields["ctreasure"], 1, 100) + elseif fields["bvrange"] then + fishing_setting.tmp_setting["bobber_view_range"] = inc(fishing_setting.tmp_setting["bobber_view_range"], fields["bvrange"], 4, 20) + elseif fields["cworm"] then + fishing_setting.tmp_setting["worm_chance"] = inc(fishing_setting.tmp_setting["worm_chance"], fields["cworm"], 1, 100) + elseif fields["cescape"] then + fishing_setting.tmp_setting["escape_chance"] = inc(fishing_setting.tmp_setting["escape_chance"], fields["cescape"], 1, 50) + elseif fields["dmessages"] then + fishing_setting.tmp_setting["message"] = bool(fields["dmessages"]) + elseif fields["poledeco"] then + fishing_setting.tmp_setting["simple_deco_fishing_pole"] = bool(fields["poledeco"]) + elseif fields["wearout"] then + fishing_setting.tmp_setting["wear_out"] = bool(fields["wearout"]) + elseif fields["treasureenable"] then + fishing_setting.tmp_setting["treasure_enable"] = bool(fields["treasureenable"]) + elseif fields["newworm"] then + fishing_setting.tmp_setting["new_worm_source"] = bool(fields["newworm"]) + elseif fields["wormmob"] then + fishing_setting.tmp_setting["worm_is_mob"] = bool(fields["wormmob"]) + else + return + end + + fishing_setting.func.on_show_settings(player_name) + elseif formname == "fishing:admin_conf" then + if fields["classement"] then + local formspec = fishing_setting.func.get_stat() + minetest.show_formspec(player_name, "fishing:classement", formspec) + elseif fields["contest"] then + fishing_setting.func.on_show_settings_contest(player_name) + elseif fields["configuration"] then + fishing_setting.func.on_show_settings(player_name) + elseif fields["hungerinfo"] then + fishing_setting.func.get_hunger_info(player_name) + end + end +end) + +--function load settings from file +function fishing_setting.func.load_trophies() + local file = io.open(fishing_setting.file_trophies, "r") + fishing_setting.trophies = {} + if file then + fishing_setting.trophies = minetest.deserialize(file:read("*all")) + file:close() + if not fishing_setting.trophies or type(fishing_setting.trophies) ~= "table" then + fishing_setting.trophies = {} + end + end +end + +function fishing_setting.func.save_trophies() + local input = io.open(fishing_setting.file_trophies, "w") + if input then + input:write(minetest.serialize(fishing_setting.trophies)) + input:close() + else + minetest.log("action","Open failed (mode:w) of " .. fishing_setting.file_trophies) + end +end + +minetest.register_on_shutdown(function() + minetest.log("action", "[fishing] Server shuts down. saving trophies table") + fishing_setting.func.save_trophies() + fishing_setting.func.save_contest() +end) + + +function fishing_setting.func.timetostr(time) + local countdown = time + local answer = "" + if countdown >= 3600 then + local hours = math.floor(countdown / 3600) + countdown = countdown % 3600 + answer = hours .. "h" + end + if countdown >= 60 then + local minutes = math.floor(countdown / 60) + countdown = countdown % 60 + answer = answer .. minutes .. "m" + else + answer = answer .. "0m" + end + local seconds = countdown + answer = answer .. math.floor(seconds) .. "s" + return answer +end + +minetest.register_on_joinplayer(function(player) + local player_name = player:get_player_name() + if fishing_setting.contest["contest"] == true then + minetest.chat_send_player(player_name, S("A fishing contest is in progress. (remaining time %s)"):format(fishing_setting.func.timetostr(fishing_setting.contest["duration"]))) + end +end) + + +function fishing_setting.func.add_to_trophies(player, fish, desc) + local player_name = player:get_player_name() + if not player_name then return end + if string.find(fish, "_raw") ~= nil or fishing_setting.prizes["true_fish"]["little"][fish] or fishing_setting.prizes["true_fish"]["big"][fish] then + if string.find(fish, "_raw") ~= nil then + if fishing_setting.trophies[fish] == nil then + fishing_setting.trophies[fish] = {} + end + fishing_setting.trophies[fish][player_name] = (fishing_setting.trophies[fish][player_name] or 0) + 1 + if fishing_setting.trophies[fish][player_name]%100 == 0 then + minetest.chat_send_player(player_name, S("You win a new trophy, you have caught %s " .. fish.."."):format(fishing_setting.trophies[fish][player_name])) + local inv = player:get_inventory() + local name = "fishing:trophy_"..fish + if inv:room_for_item("main", {name=name, count=1, wear=0, metadata=""}) then + inv:add_item("main", {name=name, count=1, wear=0, metadata=""}) + else + minetest.spawn_item(player:getpos(), {name=name, count=1, wear=0, metadata=""}) + end + end + end + if fishing_setting.contest["contest"] ~= nil and fishing_setting.contest["contest"] == true then + if fishing_setting.contest["nb_fish"] == nil then + fishing_setting.contest["nb_fish"] = {} + end + fishing_setting.contest["nb_fish"][player_name] = (fishing_setting.contest["nb_fish"][player_name] or 0) + 1 + minetest.chat_send_all(S("Yeah, %s caught "..desc):format(player_name)) + end + end +end + + +-- Menu: fishing configuration/contest +fishing_setting.func.on_show_admin_menu = function(player_name) + local formspec = "size[5,5]label[1.7,0;"..S("Fishing Menu").."]".. + "button[0.5,0.5;4,1;classement;"..S("Contest rankings").."]".. + "button[0.5,1.5;4,1;contest;"..S("Contests").."]".. + "button[0.5,2.5;4,1;configuration;"..S("Configuration").."]".. + "button[0.5,3.5;4,1;hungerinfo;"..S("Hunger info").."]".. + "button_exit[1,4.5;3,1;close;"..S("Close").."]" + minetest.show_formspec(player_name, "fishing:admin_conf", formspec) +end + + +if (minetest.get_modpath("unified_inventory")) then + unified_inventory.register_button("menu_fishing", { + type = "image", + image = "fishing_perch_raw.png", + tooltip = "Fishing Menu Configuration", + action = function(player) + local player_name = player:get_player_name() + if not player_name then return end + if minetest.check_player_privs(player_name, {server=true}) then + fishing_setting.func.on_show_admin_menu(player_name) + else + local formspec = fishing_setting.func.get_stat() + minetest.show_formspec(player_name, "fishing:classement", formspec) + end + end, + }) +end + + +--function save settings +function fishing_setting.func.save_contest() + local input = io.open(fishing_setting.file_contest, "w") + if input then + input:write(minetest.serialize(fishing_setting.contest)) + input:close() + else + minetest.log("action","Open failed (mode:w) of " .. fishing_setting.file_contest) + end +end + +--function load contest data from file +function fishing_setting.func.load_contest() + local file = io.open(fishing_setting.file_contest, "r") + local settings + fishing_setting.contest = {["contest"] = false, ["duration"] = 3600, ["bobber_nb"] = 4} + if file then + settings = minetest.deserialize(file:read("*all")) + file:close() + if settings ~= nil and type(settings) == "table" then + if settings["contest"] ~= nil then + fishing_setting.contest["contest"] = settings["contest"] + end + if settings["duration"] ~= nil then + fishing_setting.contest["duration"] = settings["duration"] + end + if settings["bobber_nb"] ~= nil then + fishing_setting.contest["bobber_nb"] = settings["bobber_nb"] + end + if settings["nb_fish"] ~= nil then + fishing_setting.contest["nb_fish"] = settings["nb_fish"] + end + end + end +end + +function fishing_setting.func.start_contest(duration) + fishing_setting.contest["contest"] = true + fishing_setting.contest["warning_said"] = false + fishing_setting.contest["duration"] = duration + minetest.chat_send_all(S("Attention, Fishing contest start (duration %s)!!!"):format(duration)) + minetest.sound_play("fishing_contest_start",{gain=0.8}) + fishing_setting.func.save_contest() + fishing_setting.func.tick() +end + +function fishing_setting.func.end_contest() + fishing_setting.contest["contest"] = false + fishing_setting.func.save_contest() + minetest.chat_send_all(S("End of fishing contest.")) + minetest.sound_play("fishing_contest_end",{gain=0.8}) + fishing_setting.func.show_result() +end + + +--function load planned contest from file +function fishing_setting.func.load_planned() + local file = io.open(fishing_setting.file_planned, "r") + local settings = {} + if file then + settings = minetest.deserialize(file:read("*all")) + file:close() + if settings and type(settings) == "table" then + for i, p in pairs(settings) do + if p["wday"] ~= nil and p["hour"] ~= nil and p["min"] ~= nil and p["duration"] ~= nil then + table.insert(fishing_setting.planned, {["wday"]=p["wday"], ["hour"]=p["hour"], ["min"]=p["min"], ["duration"]=p["duration"]}) + end + end + end + end +end +fishing_setting.func.load_planned() + + + +function fishing_setting.func.save_planned() + local input = io.open(fishing_setting.file_planned, "w") + if input then + input:write(minetest.serialize(fishing_setting.planned)) + input:close() + else + minetest.log("action","Open failed (mode:w) of " .. fishing_setting.file_planned) + end +end + +minetest.register_chatcommand("contest_add", { + params = "Wday Hours Minutes duration(in sec) (ex: 1 15 40 3600)", + description = "Add contest (admin only)", + privs = {server=true}, + func = function(player_name, param) + if not player_name then return end + local wday, hour, min, duration = param:match("^(%d+)%s(%d+)%s(%d+)%s(%d+)$") + if ((not wday or not tonumber(wday)) or (not hour or not tonumber(hour)) or (not min and not tonumber(min)) or (not duration or not tonumber(duration))) then + return false, "Invalid usage, see /help contest_add." + end + + wday = tonumber(wday) + hour = tonumber(hour) + min = tonumber(min) + duration = tonumber(duration) + + if (wday < 0 or wday > 7) then + return false, "Invalid argument wday, 0-7 (0=all 1=Sunday)." + end + + if (hour < 0 or hour > 23) then + return false, "Invalid argument hour, 0-23." + end + if (min < 0 or min > 59) then + return false, "Invalid argument minutes, 0-59." + end + + if duration < 600 then + duration = 600 + elseif duration > 14400 then + duration = 14400 + end + + table.insert(fishing_setting.planned, {["wday"]=wday, ["hour"]=hour, ["min"]=min, ["duration"]=duration}) + fishing_setting.func.save_planned() + return true, ("new contest registered %d %d:%d duration %d."):format(wday, hour, min, duration) + end +}) + +minetest.register_chatcommand("contest_del", { + params = "List number(show by contest_show command) ", + description = "Delete planned contest(admin only)", + privs = {server=true}, + func = function(player_name, param) + if not player_name then return end + local i = tonumber(param) + if not i then + return false, "Invalid usage, see /help contest_del." + end + if i < 1 then + return false, "Invalid usage, see /help contest_del." + end + + local c = fishing_setting.planned[i] + if not c then + return false, "Contest no found" + end + table.remove(fishing_setting.planned, i) + fishing_setting.func.save_planned() + return true, "contest deleted" + end +}) + +minetest.register_chatcommand("contest_show", { + params = "", + description = "Display planned contest(admin only)", + privs = {server=true}, + func = function(player_name, param) + if not player_name then return end + local text = "Registered contest:\n" + for i, plan in pairs(fishing_setting.planned) do + text = text ..("%d) wday:%d hour:%d min:%d duration %d.\n"):format(i, plan.wday, plan.hour, plan.min, plan.duration) + end + return true, text + end +}) + +minetest.register_chatcommand("contest_start", { + params = "Duration in seconds", + description = "Start contest (admin only)", + privs = {server=true}, + func = function(player_name, param) + if not player_name then return end + if fishing_setting.contest["contest"] == true then + return false, "Contest already in progress." + end + + local duration = tonumber(param) + if not duration then + duration = 3600 + end + fishing_setting.contest["nb_fish"] = {} + fishing_setting.func.start_contest(duration) + return true, ("Contest started, duration:%d sec."):format(duration) + end +}) + +minetest.register_chatcommand("contest_stop", { + params = "", + description = "Stop contest (admin only)", + privs = {server=true}, + func = function(player_name, param) + if not player_name then return end + if fishing_setting.contest["contest"] == false then + return false, "No contest in progress." + end + fishing_setting.func.end_contest() + return true, "Contest finished." + end +}) + +function fishing_setting.func.planned_tick() + if fishing_setting.contest["contest"] == nil or fishing_setting.contest["contest"] == false then + for i, plan in pairs(fishing_setting.planned) do + local wday = plan.wday + local hour = plan.hour + local min = plan.min + local duration = plan.duration + local time = os.date("*t",os.time()) + if (wday == 0 or wday == time.wday) then + if time.hour == hour and time.min == min then + minetest.log("action", ("Starting fishing contest at %d:%d duration %d"):format( hour, min, duration)) + fishing_setting.contest["nb_fish"] = {} + fishing_setting.func.start_contest(duration) + break + end + end + end + end + minetest.after(50, fishing_setting.func.planned_tick) +end + +--Menu fishing configuration +fishing_setting.func.on_show_settings_contest = function(player_name) + if not fishing_setting.tmp_setting then + fishing_setting.tmp_setting = { ["contest"] = (fishing_setting.contest["contest"] or false), + ["duration"] = (math.floor(fishing_setting.contest["duration"]) or 3600), + ["bobber_nb"] = (fishing_setting.contest["bobber_nb"] or 2), + ["reset"] = false + } + end + local formspec = "size[6.1,7]label[1.9,0;"..S("Fishing contest").."]".. + --Time contest + "label[2.2,0.5;"..S("Duration(in sec)").."]".. + "button[0.8,1;1,1;duration;-60]".. + "button[1.8,1;1,1;duration;-600]".. + "label[2.7,1.2;"..tostring(fishing_setting.tmp_setting["duration"]).."]".. + "button[3.5,1;1,1;duration;+600]".. + "button[4.5,1;1,1;duration;+60]".. + --bobber nb + "label[2,2;"..S("Bobber number limit").."]".. + "button[1.8,2.5;1,1;bobbernb;-1]".. + "label[2.9,2.7;"..tostring(fishing_setting.tmp_setting["bobber_nb"]).."]".. + "button[3.5,2.5;1,1;bobbernb;+1]".. + --contest enable + "label[0.8,3.8;"..S("Enable contests").."]".. + "button[4.5,3.6;1,1;contest;"..tostring(fishing_setting.tmp_setting["contest"]).."]".. + --reset + "label[0.8,5.2;"..S("Reset rankings").."]".. + "button[4.5,5;1,1;reset;"..tostring(fishing_setting.tmp_setting["reset"]).."]".. + "button_exit[0.8,6.2;1.5,1;abort;"..S("Abort").."]".. + "button_exit[4,6.2;1.5,1;save;"..S("OK").."]" + minetest.show_formspec(player_name, "fishing:contest", formspec) +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname == "fishing:contest" then + local name = player:get_player_name() + if not name then return end + if fields["save"] then + if fishing_setting.tmp_setting["reset"] == true then + fishing_setting.contest["nb_fish"] = {} + end + + local progress = (fishing_setting.contest["contest"] or false) + fishing_setting.contest["duration"] = fishing_setting.tmp_setting["duration"] + fishing_setting.contest["contest"] = fishing_setting.tmp_setting["contest"] + fishing_setting.contest["bobber_nb"] = fishing_setting.tmp_setting["bobber_nb"] + if progress == false and fishing_setting.tmp_setting["contest"] == true then + local duration = fishing_setting.func.timetostr(fishing_setting.contest["duration"]) + fishing_setting.func.start_contest(duration) + elseif progress == true and fishing_setting.tmp_setting["contest"] == false then + fishing_setting.func.end_contest() + end + fishing_setting.func.save_contest() + fishing_setting.tmp_setting = nil + return + elseif fields["quit"] or fields["abort"] then + fishing_setting.tmp_setting = nil + return + elseif fields["duration"] then + fishing_setting.tmp_setting["duration"] = inc(fishing_setting.tmp_setting["duration"], fields["duration"], 120, 14400) + elseif fields["contest"] then + fishing_setting.tmp_setting["contest"] = bool(fields["contest"]) + elseif fields["bobbernb"] then + fishing_setting.tmp_setting["bobber_nb"] = inc(fishing_setting.tmp_setting["bobber_nb"], fields["bobbernb"], 1, 8) + elseif fields["reset"] then + fishing_setting.tmp_setting["reset"] = bool(fields["reset"]) + else + return + end + fishing_setting.func.on_show_settings_contest(name) + end +end) + + +function spairs(t, order) + -- collect the keys + local keys = {} + for k in pairs(t) do keys[#keys+1] = k end + -- if order function given, sort by it by passing the table and keys a, b, + -- otherwise just sort the keys + if order then + table.sort(keys, function(a,b) return order(t, a, b) end) + else + table.sort(keys) + end + -- return the iterator function + local i = 0 + return function() + i = i + 1 + if keys[i] then + return keys[i], t[keys[i]] + end + end +end + + +function fishing_setting.func.set_winners(list) + local win = {} + -- this uses an custom sorting function ordering by score descending + for k,v in spairs(list, function(t,a,b) return t[b] < t[a] end) do + table.insert(win, {["name"]=k, ["nb"]=v}) + if #win >= 15 then + break + end + end + return win +end + + +function fishing_setting.func.get_stat() + local winners = {} + if fishing_setting.contest["nb_fish"] ~= nil then + winners = fishing_setting.func.set_winners(fishing_setting.contest["nb_fish"]) + end + local formspec = {"size[6,8]label[2,0;"..S("Fishing contest rankings").."]"} + local Y = 1.1 + table.insert(formspec, "label[0.5,0.5;No]") + table.insert(formspec, "label[2,0.5;Name]") + table.insert(formspec, "label[4.2,0.5;Fish Total]") + for num,n in ipairs(winners) do + table.insert(formspec, "label[0.5,"..Y..";"..tostring(num).."]") -- classement + table.insert(formspec, "label[2,"..Y..";"..n["name"].."]") -- playername + table.insert(formspec, "label[4.3,"..Y..";"..tostring(n["nb"]).."]") -- nb fish caught + Y = Y + 0.4 + end + table.insert(formspec, "button_exit[2.4,7.5;1.2,1;close;"..S("Close").."]") + return table.concat(formspec) +end + +function fishing_setting.func.get_hunger_info(player_name) + local formspec = "size[6,9]label[1.9,0;Fishing Info Center]" + local y = 0.8 + for i, a in pairs(fishing_setting.baits) do + if string.find(i, "fishing:") ~= nil then + formspec = formspec .."item_image_button[1,"..tostring(y)..";1,1;"..tostring(i)..";"..tostring(i)..";]".. + "label[2.2,"..tostring(y+0.2)..";Chance to fish :"..tostring(a["hungry"]).."%]" + y = y+1 + end + end + formspec = formspec .."button_exit[2,8.5;2,1;close;"..S("Close").."]" + minetest.show_formspec(player_name,"fishing:material_info", formspec) +end + +minetest.register_chatcommand("fishing_menu", { + params = "", + description = "Show fishing menu (admin only)", + privs = {server=true}, + func = function(player_name, param) + if not player_name then return end + fishing_setting.func.on_show_admin_menu(player_name) + end +}) + +minetest.register_chatcommand("fishing_classement", { + params = "", + description = "display classement", + privs = {interact=true}, + func = function(player_name, param) + if not player_name then return end + local formspec = fishing_setting.func.get_stat() + minetest.show_formspec(player_name, "fishing:classement", formspec) + end +}) + +function fishing_setting.func.show_result() + minetest.after(3, function() + local formspec = fishing_setting.func.get_stat() + for _,player in pairs(minetest.get_connected_players()) do + local player_name = player:get_player_name() + if player_name ~= nil then + minetest.show_formspec(player_name, "fishing:classement", formspec) + end + end + end) +end + +local UPDATE_TIME = 1 +function fishing_setting.func.tick() + if fishing_setting.contest["contest"] ~= nil and fishing_setting.contest["contest"] == true then + fishing_setting.contest["duration"] = fishing_setting.contest["duration"] - UPDATE_TIME + if fishing_setting.contest["duration"] < 30 and fishing_setting.contest["warning_said"] ~= true then + minetest.chat_send_all(fishing_setting.func.S("WARNING, Fishing contest will finish in 30 seconds.")) + fishing_setting.contest["warning_said"] = true + end + if fishing_setting.contest["duration"] < 0 then + fishing_setting.func.end_contest() + else + minetest.after(UPDATE_TIME, fishing_setting.func.tick) + end + end +end + diff --git a/diff/fishing/init.lua b/diff/fishing/init.lua new file mode 100755 index 0000000..0553b6c --- /dev/null +++ b/diff/fishing/init.lua @@ -0,0 +1,89 @@ +----------------------------------------------------------------------------------------------- +local title = "Fishing - Crabman77's (MFF team) version" +local version = "1.0.0" +local mname = "fishing" +----------------------------------------------------------------------------------------------- +-- original by wulfsdad (http://forum.minetest.net/viewtopic.php?id=4375) +-- rewrited by Mossmanikin (https://forum.minetest.net/viewtopic.php?id=6480) +-- this version rewrited by Crabman77 +-- License (code & textures): WTFPL +-- Contains code from: animal_clownfish, animal_fish_blue_white, fishing (original), stoneage +-- Looked at code from: default, farming +-- Dependencies: default +-- Supports: animal_clownfish, animal_fish_blue_white, animal_rat, mobs +----------------------------------------------------------------------------------------------- + +minetest.log("action","[mod fishing] Loading...") +local path = minetest.get_modpath("fishing").."/" + +fishing_setting = {} +fishing_setting.func = {} +fishing_setting.is_creative_mode = minetest.setting_getbool("creative_mode") +fishing_setting.file_settings = minetest.get_worldpath() .. "/fishing_config.txt" +fishing_setting.file_trophies = minetest.get_worldpath() .. "/fishing_trophies.txt" +fishing_setting.file_contest = minetest.get_worldpath() .. "/fishing_contest.txt" +fishing_setting.file_planned = minetest.get_worldpath() .. "/fishing_planned.txt" +fishing_setting.settings = {} +fishing_setting.contest = {} +fishing_setting.planned = {} +--for random object +random_objects = {} +fishing_setting.baits = {} +fishing_setting.hungry = {} +fishing_setting.prizes = {} +fishing_setting.trophies = {} + +if (minetest.get_modpath("intllib")) then + dofile(minetest.get_modpath("intllib").."/intllib.lua") + fishing_setting.func.S = intllib.Getter(minetest.get_current_modname()) +else + fishing_setting.func.S = function ( s ) return s end +end + +dofile(path .."settings.txt") +dofile(path .."functions.lua") + +--default_settings +fishing_setting.settings["message"] = MESSAGES +fishing_setting.settings["worm_is_mob"] = WORM_IS_MOB +fishing_setting.settings["worm_chance"] = WORM_CHANCE +fishing_setting.settings["new_worm_source"] = NEW_WORM_SOURCE +fishing_setting.settings["wear_out"] = WEAR_OUT +fishing_setting.settings["simple_deco_fishing_pole"] = SIMPLE_DECO_FISHING_POLE +fishing_setting.settings["bobber_view_range"] = BOBBER_VIEW_RANGE +fishing_setting.settings["fish_chance"] = FISH_CHANCE +fishing_setting.settings["shark_chance"] = SHARK_CHANCE +fishing_setting.settings["treasure_chance"] = TREASURE_CHANCE +fishing_setting.settings["treasure_enable"] = TREASURE_RANDOM_ENABLE +fishing_setting.settings["escape_chance"] = ESCAPE_CHANCE + +-- to mobs_fish|mobs_sharks modpack +if (minetest.get_modpath("mobs_fish") ~= nil or minetest.get_modpath("mobs_sharks") ~= nil) then + fishing_setting.have_true_fish = true +end + +-- load config file if exist in worldpath +fishing_setting.func.load() + +dofile(path .."worms.lua") +dofile(path .."crafting.lua") +dofile(path .."baits.lua") +dofile(path .."prizes.lua") +dofile(path .."baitball.lua") +dofile(path .."bobber.lua") +dofile(path .."bobber_shark.lua") +dofile(path .."fishes.lua") +dofile(path .."trophies.lua") +dofile(path .."poles.lua") + +--random hungry bait +fishing_setting.func.hungry_random() +--load table caught fish by players +fishing_setting.func.load_trophies() +--load table contest +fishing_setting.func.load_contest() +fishing_setting.func.tick() +fishing_setting.func.planned_tick() +----------------------------------------------------------------------------------------------- +minetest.log("action", "[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...") +----------------------------------------------------------------------------------------------- diff --git a/diff/fishing/locale/de.txt b/diff/fishing/locale/de.txt new file mode 100755 index 0000000..62b9765 --- /dev/null +++ b/diff/fishing/locale/de.txt @@ -0,0 +1,92 @@ +# Translation original by Xanthin +# adapted for new fishing version by crabman77 + +### bobber.lua ### +You didn't catch anything. = Du hast nichts gefangen. +The bait is still there. = +Your fish escaped. = Dein Fisch ist entkommen. +You caught a Fish. = Du hast einen Fisch gefangen. +You caught a Clownfish. = Du hast einen Clownfisch gefangen. +You caught a Bluewhite. = Du hast einen blau-weissen Fisch gefangen. +You caught a Carp. = +You caught a Perch. = +You caught a Catfish. = +You caught a Exoticfish. = +You caught a tropical fish. = +You caught a Twig. = Du hast einen Zweig gefangen. +You caught a Rat. = Du hast eine Ratte gefangen. +You caught some Seaweed. = Du hast etwas Seetang gefangen. +You caught a Green Kelp. = Du hast etwas gruenen Kelp gefangen. +You caught a String. = Du hast eine Schnur gefangen. + +### bobber_shark.lua ### +You caught a small Shark. = Du hast einen kleinen Hai gefangen. +You caught a Northern Pike. = Du hast einen Hecht gefangen. +You caught an old Fishing Pole. = Du hast eine alte Angelrute gefangen. +You caught some very old Boots. = Du hast ein Paar sehr alte Schuhe gefangen. +You caught a Gold Coin. = +You caught a very old Helmet. = +You caught a very old Shield. = +You caught a very old Sword. = +You caught a mese block. = +You caught a Nyan Cat. = +You caught a Diamond Block. = +Haha, Fishing is prohibited outside water! = + + + + +### crafting.lua ### +Bait Ball = +Shark Bait Ball = + + +### fishes.lua ### +Fish = Fisch +Roasted Fish = Gebratener Fisch +Sushi (Hoso Maki) = Sushi (Hoso Maki) +Clownfish = Clownfisch +Bluewhite = blau-weisse Fisch +Shark = Hai +Roasted Shark = Gebratener Hai +Northern Pike = Hecht +Roasted Northern Pike = Gebratener Hecht + + +### functions.lua ### +You don't have the server priviledge! = +You win a new trophy, you have caught %s fish. = +You win a new trophy, you have caught %s shark. = +You win a new trophy, you have caught %s pike. = +You win a new trophy, you have caught %s clownfish. = +You win a new trophy, you have caught %s bluewhite. = + + +### material.lua ### +Show information about hunger fish = + + +### poles.lua ### +Fishing Pole = Angelrute +Perfect Fishing Pole = + + +### trophies.lua ### +Fish Trophy = Fisch-Trophaee +Northern Pike Trophy = Hecht-Trophaee +Shark Trophy = Hai-Trophaee +Clownfish Trophy = Clownfisch-Trophaee +Bluewhite Trophy = Blau-weisser-Fisch-Trophaee +This Huge Fish was caught by the Famous Angler %s ! = Dieser riesige Fisch wurde vom beruehmten Angler %s gefangen! +This Huge Northern Pike was caught by the Famous Angler %s ! = Dieser riesige Hecht wurde vom beruehmten Angler %s gefangen! +This Huge Shark was caught by the Famous Angler %s ! = Dieser riesige Hai wurde vom beruehmten Angler %s gefangen! +This Huge Clownfish was caught by the Famous Angler %s ! = Dieser riesige Clownfisch wurde vom beruehmten Angler %s gefangen! +This Huge Bluewhite was caught by the Famous Angler %s ! = Dieser riesige blau-weisse Fisch wurde vom beruehmten Angler %s gefangen! + +### worms.lua ### +Worm = Wurm +Dirt = Erde +Wooden Hoe = Holzhacke +Stone Hoe = Steinhacke +Steel Hoe = Stahlhacke +Bronze Hoe = Bronzehacke diff --git a/diff/fishing/locale/fr.txt b/diff/fishing/locale/fr.txt new file mode 100755 index 0000000..1e29bc1 --- /dev/null +++ b/diff/fishing/locale/fr.txt @@ -0,0 +1,126 @@ + +# Template +Bait Corn = Appats au Mais +Bait Bread = Appats au Pain + +### bobber.lua ### +You didn't catch anything. = Vous n'avez rien attrape. +The bait is still there. = L'appat est toujours la. +Your fish escaped. = Le poisson s'est decroche. +You caught a Fish. = Vous avez attrape un poisson. +You caught a Clownfish. = Vous avez attrape un poisson clown. +You caught a Bluewhite. = Vous avez attrape un poisson bleu. +You caught a Carp. = Vous avez attrape une carpe. +You caught a Perch. = Vous avez attrape une perche. +You caught a Catfish. = Vous avez attrape un poisson chat. +You caught a Exoticfish. = Vous avez attrape un poisson exotic. +You caught a Tropical fish. = Vous avez attrape un poisson tropicale. +You caught a Twig. = Vous avez attrape une brindille. +You caught a Rat. = Vous avez attrape un rat. +You caught some Seaweed. = Vous avez attrape des algues. +You caught a Green Kelp. = Vous avez attrape une algue verte. +You caught a String. = Vous avez attrape une ficelle. + +### bobber_shark.lua ### +You caught a small Shark. = Vous avez attrape un requin +You caught a Northern Pike. = Vous avez attrape un brochet. +You caught an old Fishing Pole. = Vous avez attrape une vielle canne a peche. +You caught some very old Boots. = Vous avez attrape de tres vieilles bottes. +You caught a Gold Coin. = Vous avez attrape une pice en or. +You caught a very old Helmet. = Vous avez attrape un casque tres vieux. +You caught a very old Shield. = Vous avez attrape un bouclier tres vieux. +You caught a very old Sword. = Vous avez attrape une epee tres ancienne. +You caught a mese block. = Vous avez attrape un bloc de mese. +You caught a Nyan Cat. = Vous avez attrape un Nyan Cat. +You caught a Diamond Block. = Vous avez attrape block de diamant. +Haha, Fishing is prohibited outside water! = Haha, pecher est interdit en dehors de l'eau! + + + + +### crafting.lua ### +Bait Ball = Amorce +Shark Bait Ball = Amorce a carnassier + + +### fishes.lua ### +Fish = Poisson +Roasted Fish = Poisson grille +Sushi (Hoso Maki) = Sushi (Hoso Maki) +Clownfish = Poisson clown +Bluewhite = Poisson bleu +Carp = Carpe +Perch = Perche +Catfish = Poisson Chat +Exoticfish = Poisson Exotique +Shark = Requin +Roasted Shark = Requin grille +Northern Pike = Brochet +Roasted Northern Pike = Brochet grille + + +### functions.lua ### +You don't have the server priviledge! = Vous n'avez pas les privileges serveur! +You win a new trophy, you have caught %s fish. = Vous gagnez un trophee, vous avez attrape %s poissons. +You win a new trophy, you have caught %s shark. = Vous gagnez un trophee, vous avez attrape %s requins. +You win a new trophy, you have caught %s pike. = Vous gagnez un trophee, vous avez attrape %s brochets. +You win a new trophy, you have caught %s clownfish. = Vous gagnez un trophee, vous avez attrape %s poissons clown. +You win a new trophy, you have caught %s bluewhite. = Vous gagnez un trophee, vous avez attrape %s poissons bleu. +You win a new trophy, you have caught %s carp. = Vous gagnez un trophee, vous avez attrape %s carpe. +You win a new trophy, you have caught %s perch. = Vous gagnez un trophee, vous avez attrape %s perche. +You win a new trophy, you have caught %s catfish. = Vous gagnez un trophee, vous avez attrape %s poissons chat. +You win a new trophy, you have caught %s exoticfish. = Vous gagnez un trophee, vous avez attrape %s poissons exotique. +Good luck to %s, He catch the treasure, %s! = %s a de la chance, Il attrappe le tresor, %s! +You catch the treasure, %s! = Vous attrappez le tresor, %s! +Yeah, %s caught a Fish. = Wouah, %s a attrappe un poisson +Yeah, %s caught a Clownfish. = Wouah, %s a attrappe un poisson clown. +Yeah, %s caught a Bluewhite. = Wouah, %s a attrappe un poisson bleu. +Yeah, %s caught a Carp. = Wouah, %s a attrappe une carpe. +Yeah, %s caught a Perch. = Wouah, %s a attrappe une perche. +Yeah, %s caught a Catfish. = Wouah, %s a attrappe un poisson cahet. +Yeah, %s caught a Exoticfish. = Wouah, %s a attrappe un poisson exotique. +Yeah, %s caught a Northern Pike. = Wouah, %s a attrappe un brochet. +Yeah, %s caught a small Shark. = Wouah, %s a attrappe un requin. +A fishing contest is in progress. (remaining time %s) = Un concours de peche est en cours. (temps restant %s) +Attention, Fishing contest start(duration %s)!!! = Attention, un concours de peche viens de commence(duree %s)!!! +WARNING, Fishing contest will finish in 30 seconds. = Attention, le concours de peche se termine dans 30 secondes +End of fishing contest. = Le concours est fini + +### material.lua ### +View information about hunger fish = Afficher les informations sur la faim des poissons + + +### poles.lua ### +Fishing Pole = Canne a peche +Perfect Fishing Pole = Canne a peche parfaite +You don't fishing in a bottle! = Vous ne pouvez pas pecher dans une bouteille! +You don't have mores %s bobbers! = Vous ne pouvez pas avoir plus de %s flotteurs + +### trophies.lua ### +Fish Trophy = Trophee poisson +Northern Pike Trophy = Trophee brochet +Shark Trophy = Trophee requin +Clownfish Trophy = Trophee poisson clown +Bluewhite Trophy = Trophee poisson bleu +Carp Trophy = Trophee carpe +Perch Trophy = Trophee perche +Catfish Trophy = Trophee poisson chat +Exoticfish Trophy = Trophee poisson exotique +This Huge Fish was caught by the Famous Angler %s ! = Cet enorme poisson a ete attrape par le celebre pecheur +This Huge Northern Pike was caught by the Famous Angler %s ! = Cet enorme brochet a ete attrape par le celebre pecheur +This Huge Shark was caught by the Famous Angler %s ! = Cet enorme requin a ete attrape par le celebre pecheur +This Huge Clownfish was caught by the Famous Angler %s ! = Cet enorme poisson clown a ete attrape par le celebre pecheur +This Huge Bluewhite was caught by the Famous Angler %s ! = Cet enorme poisson blue a ete attrape par le celebre pecheur +This Huge Carp was caught by the Famous Angler %s ! = Cet enorme carpe a ete attrape par le celebre pecheur +This Huge Perch was caught by the Famous Angler %s ! = Cet enorme perche a ete attrape par le celebre pecheur +This Huge Catfish was caught by the Famous Angler %s ! = Cet enorme poisson chat a ete attrape par le celebre pecheur +This Huge Exoticfish was caught by the Famous Angler %s ! = Cet enorme poisson exotique a ete attrape par le celebre pecheur + +### worms.lua ### +Worm = ver +Dirt = terre +Wooden Hoe = Hoe en bois +Stone Hoe = Hoe en pierre +Steel Hoe = Hoe en fer +Bronze Hoe = Hoe en bronze + diff --git a/diff/fishing/locale/template.txt b/diff/fishing/locale/template.txt new file mode 100755 index 0000000..adb712d --- /dev/null +++ b/diff/fishing/locale/template.txt @@ -0,0 +1,152 @@ +# Template +### baits.lua ### +Bait Corn = +Bait Bread = + + +### bobber.lua ### +You didn't catch anything. = +The bait is still there. = +Your fish escaped. = +You caught a Fish. = +You caught a Clownfish. = +You caught a Bluewhite. = +You caught a Carp. = +You caught a Perch. = +You caught a Catfish. = +You caught a Exoticfish. = +You caught a tropical fish. = +You caught a Twig. = +You caught a Rat. = +You caught some Seaweed. = +You caught a Green Kelp. = +You caught a String. = + +### bobber_shark.lua ### +You caught a small Shark. = +You caught a Northern Pike. = +You caught an old Fishing Pole. = +You caught some very old Boots. = +You caught a Gold Coin. = +You caught a very old Helmet. = +You caught a very old Shield. = +You caught a very old Sword. = +You caught a mese block. = +You caught a Nyan Cat. = +You caught a Diamond Block. = +Haha, Fishing is prohibited outside water! = + + +### crafting.lua ### +Bait Ball = +Shark Bait Ball = + + +### fishes.lua ### +Fish = +Roasted Fish = +Sushi (Hoso Maki) = +Clownfish = +Bluefish = +Carp = +Perch = +Catfish = +Exoticfish = +Shark = +Roasted Shark = +Northern Pike = +Roasted Northern Pike = + + +### functions.lua ### +You don't have the server priviledge! = +You win a new trophy, you have caught %s fish. = +You win a new trophy, you have caught %s shark. = +You win a new trophy, you have caught %s pike. = +You win a new trophy, you have caught %s clownfish. = +You win a new trophy, you have caught %s bluewhite. = +You win a new trophy, you have caught %s carp. = +You win a new trophy, you have caught %s perch. = +You win a new trophy, you have caught %s catfish. = +You win a new trophy, you have caught %s exoticfish. = +Lucky %s, he caught the treasure, %s! = +You caught the treasure, %s!= +Yeah, %s caught a Fish. = +Yeah, %s caught a Clownfish. = +Yeah, %s caught a Bluefish. = +Yeah, %s caught a Carp. = +Yeah, %s caught a Perch. = +Yeah, %s caught a Catfish. = +Yeah, %s caught a Exoticfish. = +Yeah, %s caught a Northern Pike. = +Yeah, %s caught a small Shark. = +A fishing contest is in progress. (remaining time %s) = +Attention, Fishing contest start(duration %s)!!! = +WARNING, Fishing contest will finish in 30 seconds. = +End of fishing contest. = +Fishing configuration = +Fish chance = +Shark chance = +Treasure chance = +Worm chance = +Escape chance = +Bobber view range = +Display messages in chat = +Simple pole deco = +Poles wearout = +Enable treasure = +New worm source (reboot) = +Worm is a mob (reboot) = +Abort = +OK = +Fishing Menu = +Contest rankings = +Contests = +Configuration = +Close = + +Fishing contest = +Duration(in sec) = +Bobber number limit = +Enable contests = +Reset rankings (type 'yes') = +Fishing contest rankings = + +### material.lua ### +Show information about hunger fish = + + +### poles.lua ### +Fishing Pole = +Perfect Fishing Pole = +You don't fishing in a bottle! = +You don't have mores %s bobbers! = + +### trophies.lua ### +Fish Trophy = +Northern Pike Trophy = +Shark Trophy = +Clownfish Trophy = +Bluefish Trophy = +Carp Trophy = +Perch Trophy = +Catfish Trophy = +Exoticfish Trophy = +This Huge Fish was caught by the Famous Angler %s ! = +This Huge Northern Pike was caught by the Famous Angler %s ! = +This Huge Shark was caught by the Famous Angler %s ! = +This Huge Clownfish was caught by the Famous Angler %s ! = +This Huge Bluefish was caught by the Famous Angler %s ! = +This Huge Carp was caught by the Famous Angler %s ! = +This Huge Perch was caught by the Famous Angler %s ! = +This Huge Catfish was caught by the Famous Angler %s ! = +This Huge Exoticfish was caught by the Famous Angler %s ! = + +### worms.lua ### +Worm = +Dirt = +Wooden Hoe = +Stone Hoe = +Steel Hoe = +Bronze Hoe = + diff --git a/diff/fishing/poles.lua b/diff/fishing/poles.lua new file mode 100755 index 0000000..ffa7d50 --- /dev/null +++ b/diff/fishing/poles.lua @@ -0,0 +1,172 @@ +----------------------------------------------------------------------------------------------- +-- Fishing Pole +----------------------------------------------------------------------------------------------- + +local S = fishing_setting.func.S + +local function rod_wear(itemstack, user, pointed_thing, uses) + itemstack:add_wear(65535/(uses-1)) + return itemstack +end + +fishing_setting.poles = {} +fishing_setting.poles.wood = {["name"] = "wood", ["max_use"] = 30, ["desc"] = S("Fishing Pole"),["bobber_max"] = 2 } +fishing_setting.poles.perfect = {["name"] = "perfect", ["max_use"] = 1500, ["desc"] = S("Perfect Fishing Pole"),["bobber_max"] = 5} + + +for _,pole in pairs(fishing_setting.poles) do + local bobbermax = pole["bobber_max"] + minetest.register_tool("fishing:pole_".. pole.name, { + description = pole.desc, + groups = {}, + inventory_image = "fishing_pole_".. pole.name ..".png", + wield_image = "fishing_pole_".. pole.name ..".png", + stack_max = 1, + liquids_pointable = true, + + on_use = function (itemstack, user, pointed_thing) + if pointed_thing and pointed_thing.under then + local pt = pointed_thing + local node = minetest.get_node(pt.under) + if not node or string.find(node.name, "water_source") == nil then return nil end + local player_name = user:get_player_name() + local inv = user:get_inventory() + local bait = inv:get_stack("main", user:get_wield_index()+1 ):get_name() + if fishing_setting.baits[bait] == nil then return nil end + + local objs = minetest.get_objects_inside_radius(pt.under, 1) + for m, obj in pairs(objs) do + if obj:get_luaentity() ~= nil and string.find(obj:get_luaentity().name, "fishing:bobber") then + if fishing_setting.settings["message"] == true then + minetest.chat_send_player(player_name, S("Sorry, there is another bobber!")) + end + return nil + end + end + + --if contest then player must have only 2 boober + local bobber_nb = 0 + local bobber_max + if fishing_setting.contest["contest"] ~= nil and fishing_setting.contest["contest"] == true then + bobber_max = fishing_setting.contest["bobber_nb"] + else + bobber_max = bobbermax + end + --player has others bobbers? + for m, obj in pairs(minetest.get_objects_inside_radius(pt.under, 20)) do + if obj:get_luaentity() ~= nil and string.find(obj:get_luaentity().name, "fishing:bobber") ~= nil then + if obj:get_luaentity().owner == player_name then + bobber_nb = bobber_nb + 1 + end + end + end + if bobber_nb >= bobber_max then + if fishing_setting.settings["message"] == true then + minetest.chat_send_player(player_name, S("You don't have mores %s bobbers!"):format(bobber_max)) + end + return nil + end + + local nodes = 1 + for _,k in pairs({ {1, 0}, {-1,0}, {0,1}, {0,-1} }) do + local node_name = minetest.get_node({x=pt.under.x+k[1], y=pt.under.y, z=pt.under.z+k[2]}).name + if node_name and string.find(node_name, "water_source") ~= nil + and minetest.get_node({x=pt.under.x+k[1], y=pt.under.y+1, z=pt.under.z+k[2]}).name == "air" then + nodes = nodes + 1 + end + end + --if water == -3 nodes + if nodes < 2 then + if fishing_setting.settings["message"] == true then minetest.chat_send_player(player_name, S("You don't fishing in a bottle!")) end + return nil + end + local new_pos = {x=pt.under.x, y=pt.under.y+(45/64), z=pt.under.z} + local ent = minetest.add_entity({interval = 1,x=new_pos.x, y=new_pos.y, z=new_pos.z}, fishing_setting.baits[bait].bobber) + if not ent then return nil end + local luaentity = ent:get_luaentity() + local node = minetest.get_node_or_nil(pt.under) + if node and node.name == "default:river_water_source" then + luaentity.water_type = "rivers" + else + luaentity.water_type = "sea" + end + luaentity.owner = player_name + luaentity.bait = bait + luaentity.old_pos = new_pos + luaentity.old_pos2 = true + if not fishing_setting.is_creative_mode then + inv:remove_item("main", bait) + end + minetest.sound_play("fishing_bobber2", {pos = new_pos, gain = 0.5}) + if fishing_setting.settings["wear_out"] == true and not fishing_setting.is_creative_mode then + return rod_wear(itemstack, user, pointed_thing, pole.max_use) + else + return {name="fishing:pole_".. pole.name, count=1, wear=0, metadata=""} + end + end + return nil + end, + + on_place = function(itemstack, placer, pointed_thing) + if fishing_setting.settings["simple_deco_fishing_pole"] == false then return end + local pt = pointed_thing + local pt_under_name = minetest.get_node(pt.under).name + if string.find(pt_under_name, "water_") == nil then + local wear = itemstack:get_wear() + local direction = minetest.dir_to_facedir(placer:get_look_dir()) + local dir = minetest.facedir_to_dir(direction) + local p = vector.add(pt.above, dir) + local n2 = minetest.get_node_or_nil(p) + local def = n2 and minetest.registered_items[n2.name] + if not def or not def.buildable_to then + return nil + end + minetest.set_node(pt.above, {name="fishing:pole_".. pole.name .."_deco", param2=direction}) + local meta = minetest.get_meta(pt.above) + meta:set_int("wear", wear) + if not fishing_setting.is_creative_mode then + itemstack:take_item() + end + end + return itemstack + end, + }) + + minetest.register_node("fishing:pole_".. pole.name .."_deco", { + description = pole.desc, + inventory_image = "fishing_pole_".. pole.name ..".png", + wield_image = "fishing_pole.png^[transformFXR270", + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + tiles = { + "fishing_pole_".. pole.name .."_simple.png", + "fishing_pole_".. pole.name .."_simple.png", + "fishing_pole_".. pole.name .."_simple.png", + "fishing_pole_".. pole.name .."_simple.png^[transformFX", + }, + groups = { snappy=3, flammable=2, not_in_creative_inventory=1 }, + node_box = { + type = "fixed", + fixed = { + { 0 , -1/2 , 0 , 0 , 1/2 , 1 }, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-1/16 , -1/2 , 0 , 1/16 , 1/2 , 1 }, + } + }, + sounds = default.node_sound_wood_defaults(), + on_dig = function(pos, node, digger) + if digger:is_player() and digger:get_inventory() then + local meta = minetest.get_meta(pos) + local wear_out = meta:get_int("wear") + digger:get_inventory():add_item("main", {name="fishing:pole_".. pole.name, count=1, wear=wear_out, metadata=""}) + end + minetest.remove_node(pos) + end, + }) + +end diff --git a/diff/fishing/prizes.lua b/diff/fishing/prizes.lua new file mode 100755 index 0000000..08a2181 --- /dev/null +++ b/diff/fishing/prizes.lua @@ -0,0 +1,83 @@ + +fishing_setting.prizes["rivers"] = {} +fishing_setting.prizes["rivers"]["little"] = { + {"fishing", "fish_raw", 0, "a Fish."}, + {"fishing", "carp_raw", 0, "a Carp."}, +} + +fishing_setting.prizes["rivers"]["big"] = { + {"fishing", "pike_raw", 0, "a Northern Pike."}, + {"fishing", "perch_raw", 0, "a Perch."}, + {"fishing", "catfish_raw", 0, "a Catfish."}, +} + + +fishing_setting.prizes["sea"] = {} +fishing_setting.prizes["sea"]["little"] = { + {"fishing", "clownfish_raw", 0, "a Clownfish."}, + {"fishing", "bluewhite_raw", 0, "a Bluewhite."}, + {"fishing", "exoticfish_raw", 0, "a Exoticfish."}, +} + +fishing_setting.prizes["sea"]["big"] = { + {"fishing", "shark_raw", 0, "a small Shark."}, +} + + +if (minetest.get_modpath("flowers_plus")) then -- exception flowers_plus register flowers:* + minetest.register_alias("flowers_plus:seaweed", "flowers:seaweed") +end + +local stuff = { +-- mod item wear message ("You caught "..) chance + {"flowers_plus", "seaweed", 0, "some Seaweed.", 10}, + {"farming", "string", 0, "a String.", 5}, + {"trunks", "twig_1", 0, "a Twig.", 5}, + {"mobs", "rat", 0, "a Rat.", 5}, + {"default", "stick", 0, "a Twig.", 5}, + {"seaplants", "kelpgreen", 0, "a Green Kelp.", 5}, + {"3d_armor", "boots_steel", "random", "some very old Boots.", 2}, + {"3d_armor", "leggings_gold", "random", "some very old Leggings.", 5}, + {"3d_armor", "chestplate_bronze", "random", "a very old ChestPlate.", 5}, + {"fishing", "pole_wood", "randomtools", "an old Fishing Pole.", 10}, + {"3d_armor", "boots_wood", "random", "some very old Boots.", 5}, + {"maptools", "gold_coin", 0, "a Gold Coin.", 1}, + {"3d_armor", "helmet_diamond", "random", "a very old Helmet.", 1}, + {"shields", "shield_enhanced_cactus", "random", "a very old Shield.", 2}, + {"default", "sword_bronze", "random", "a very old Sword.", 2}, + {"default", "sword_mese", "random", "a very old Sword.", 2}, + {"default", "sword_nyan", "random", "a very old Sword.", 2}, +} + +fishing_setting.prizes["stuff"] = {} +local nrmin = 1 +for i,v in ipairs(stuff) do + if minetest.get_modpath(v[1]) ~= nil and minetest.registered_items[v[1]..":"..v[2]] ~= nil then + table.insert(fishing_setting.prizes["stuff"], {v[1], v[2], v[3], v[4], nrmin, v[5]}) + nrmin = nrmin + v[5] + end +end + + +local treasure = { + {"default", "mese", 0, "a mese block."}, + {"default", "nyancat", 0, "a Nyan Cat."}, + {"default", "diamondblock", 0, "a Diamond Block."}, +} +fishing_setting.prizes["treasure"] = fishing_setting.func.ignore_mod(treasure) + + +-- to true fish mobs +fishing_setting.prizes["true_fish"] = {little = {}, big = {}} +--to mobs_fish modpack +if (minetest.get_modpath("mobs_fish")) then + fishing_setting.prizes["true_fish"]["little"]["mobs_fish:clownfish"] = {"mobs_fish", "clownfish", 0, "a Clownfish."} + fishing_setting.prizes["true_fish"]["little"]["mobs_fish:tropical"] = {"mobs_fish", "tropical", 0, "a tropical fish."} +end +--to mobs_fish modpack +if (minetest.get_modpath("mobs_sharks")) then + fishing_setting.prizes["true_fish"]["big"]["mobs_sharks:shark_lg"] = {"mobs_sharks", "shark_lg", 0, "a small Shark."} + fishing_setting.prizes["true_fish"]["big"]["mobs_sharks:shark_md"] = {"mobs_sharks", "shark_md", 0, "a small Shark."} + fishing_setting.prizes["true_fish"]["big"]["mobs_sharks:shark_sm"] = {"mobs_sharks", "shark_sm", 0, "a small Shark."} +end + diff --git a/diff/fishing/settings.txt b/diff/fishing/settings.txt new file mode 100755 index 0000000..4732bc3 --- /dev/null +++ b/diff/fishing/settings.txt @@ -0,0 +1,12 @@ +MESSAGES = true +SIMPLE_DECO_FISHING_POLE = true +WEAR_OUT = true +BOBBER_VIEW_RANGE = 7 +NEW_WORM_SOURCE = true +WORM_IS_MOB = true +WORM_CHANCE = 66 +FISH_CHANCE = 60 +SHARK_CHANCE = 50 +TREASURE_CHANCE = 5 +TREASURE_RANDOM_ENABLE = true +ESCAPE_CHANCE = 5 diff --git a/diff/fishing/sounds/SoundLicense.txt b/diff/fishing/sounds/SoundLicense.txt new file mode 100755 index 0000000..02bb9a3 --- /dev/null +++ b/diff/fishing/sounds/SoundLicense.txt @@ -0,0 +1,11 @@ +These sounds are used for the Mod for Minetest; Fishing - Mossmanikin's version. +The included sounds are http://creativecommons.org/licenses/by-nc-sa/3.0/ + +--"fishing_bobber1" & "fishing_bobber2" sampled from "01260 water swimming splashing 1.wav", Attribution Noncommercial License, Robinhood76, http://www.freesound.org/people/Robinhood76/sounds/79657/ + + +"fishing_contest_start" resampled from "cor 9.mp3", Pierre Grandjean, https://www.freesound.org/people/Pierre%20Grandjean/sounds/125973/ + +"fishing_contest_end" resampled from "Trompette 8", jebb, https://www.freesound.org/people/jebb/sounds/205848/ + +"fishing_baitball" resampled from "dog steps around in water" , noctaro, https://www.freesound.org/people/noctaro/sounds/243574/ diff --git a/diff/fishing/sounds/fishing_baitball.ogg b/diff/fishing/sounds/fishing_baitball.ogg new file mode 100755 index 0000000..19b4312 Binary files /dev/null and b/diff/fishing/sounds/fishing_baitball.ogg differ diff --git a/diff/fishing/sounds/fishing_bobber1.ogg b/diff/fishing/sounds/fishing_bobber1.ogg new file mode 100755 index 0000000..56d4a80 Binary files /dev/null and b/diff/fishing/sounds/fishing_bobber1.ogg differ diff --git a/diff/fishing/sounds/fishing_bobber2.ogg b/diff/fishing/sounds/fishing_bobber2.ogg new file mode 100755 index 0000000..59e6956 Binary files /dev/null and b/diff/fishing/sounds/fishing_bobber2.ogg differ diff --git a/diff/fishing/sounds/fishing_contest_end.ogg b/diff/fishing/sounds/fishing_contest_end.ogg new file mode 100755 index 0000000..a2b27d2 Binary files /dev/null and b/diff/fishing/sounds/fishing_contest_end.ogg differ diff --git a/diff/fishing/sounds/fishing_contest_start.ogg b/diff/fishing/sounds/fishing_contest_start.ogg new file mode 100755 index 0000000..0fbd095 Binary files /dev/null and b/diff/fishing/sounds/fishing_contest_start.ogg differ diff --git a/diff/fishing/textures/fishing_bait_bread.png b/diff/fishing/textures/fishing_bait_bread.png new file mode 100755 index 0000000..54c5389 Binary files /dev/null and b/diff/fishing/textures/fishing_bait_bread.png differ diff --git a/diff/fishing/textures/fishing_bait_corn.png b/diff/fishing/textures/fishing_bait_corn.png new file mode 100755 index 0000000..ed0e12d Binary files /dev/null and b/diff/fishing/textures/fishing_bait_corn.png differ diff --git a/diff/fishing/textures/fishing_bait_worm.png b/diff/fishing/textures/fishing_bait_worm.png new file mode 100755 index 0000000..42c9e87 Binary files /dev/null and b/diff/fishing/textures/fishing_bait_worm.png differ diff --git a/diff/fishing/textures/fishing_baitball.png b/diff/fishing/textures/fishing_baitball.png new file mode 100755 index 0000000..6bb4e31 Binary files /dev/null and b/diff/fishing/textures/fishing_baitball.png differ diff --git a/diff/fishing/textures/fishing_baitball_shark.png b/diff/fishing/textures/fishing_baitball_shark.png new file mode 100755 index 0000000..af4f7cb Binary files /dev/null and b/diff/fishing/textures/fishing_baitball_shark.png differ diff --git a/diff/fishing/textures/fishing_bluewhite_raw.png b/diff/fishing/textures/fishing_bluewhite_raw.png new file mode 100755 index 0000000..25043ef Binary files /dev/null and b/diff/fishing/textures/fishing_bluewhite_raw.png differ diff --git a/diff/fishing/textures/fishing_bobber.png b/diff/fishing/textures/fishing_bobber.png new file mode 100755 index 0000000..353d8b2 Binary files /dev/null and b/diff/fishing/textures/fishing_bobber.png differ diff --git a/diff/fishing/textures/fishing_bobber_bottom.png b/diff/fishing/textures/fishing_bobber_bottom.png new file mode 100755 index 0000000..cbd4655 Binary files /dev/null and b/diff/fishing/textures/fishing_bobber_bottom.png differ diff --git a/diff/fishing/textures/fishing_bobber_feather_1.png b/diff/fishing/textures/fishing_bobber_feather_1.png new file mode 100755 index 0000000..6bbc9f7 Binary files /dev/null and b/diff/fishing/textures/fishing_bobber_feather_1.png differ diff --git a/diff/fishing/textures/fishing_bobber_shark.png b/diff/fishing/textures/fishing_bobber_shark.png new file mode 100755 index 0000000..9417e2f Binary files /dev/null and b/diff/fishing/textures/fishing_bobber_shark.png differ diff --git a/diff/fishing/textures/fishing_bobber_top.png b/diff/fishing/textures/fishing_bobber_top.png new file mode 100755 index 0000000..a2ce2a9 Binary files /dev/null and b/diff/fishing/textures/fishing_bobber_top.png differ diff --git a/diff/fishing/textures/fishing_carp_raw.png b/diff/fishing/textures/fishing_carp_raw.png new file mode 100755 index 0000000..a4b9e5d Binary files /dev/null and b/diff/fishing/textures/fishing_carp_raw.png differ diff --git a/diff/fishing/textures/fishing_catfish_raw.png b/diff/fishing/textures/fishing_catfish_raw.png new file mode 100755 index 0000000..ca33398 Binary files /dev/null and b/diff/fishing/textures/fishing_catfish_raw.png differ diff --git a/diff/fishing/textures/fishing_clownfish_raw.png b/diff/fishing/textures/fishing_clownfish_raw.png new file mode 100755 index 0000000..f71ad40 Binary files /dev/null and b/diff/fishing/textures/fishing_clownfish_raw.png differ diff --git a/diff/fishing/textures/fishing_deco_pike.png b/diff/fishing/textures/fishing_deco_pike.png new file mode 100755 index 0000000..018187d Binary files /dev/null and b/diff/fishing/textures/fishing_deco_pike.png differ diff --git a/diff/fishing/textures/fishing_exoticfish_raw.png b/diff/fishing/textures/fishing_exoticfish_raw.png new file mode 100755 index 0000000..fae7c3c Binary files /dev/null and b/diff/fishing/textures/fishing_exoticfish_raw.png differ diff --git a/diff/fishing/textures/fishing_fish_cooked.png b/diff/fishing/textures/fishing_fish_cooked.png new file mode 100755 index 0000000..da66c79 Binary files /dev/null and b/diff/fishing/textures/fishing_fish_cooked.png differ diff --git a/diff/fishing/textures/fishing_fish_raw.png b/diff/fishing/textures/fishing_fish_raw.png new file mode 100755 index 0000000..3386469 Binary files /dev/null and b/diff/fishing/textures/fishing_fish_raw.png differ diff --git a/diff/fishing/textures/fishing_particle_baitball.png b/diff/fishing/textures/fishing_particle_baitball.png new file mode 100755 index 0000000..f861b3a Binary files /dev/null and b/diff/fishing/textures/fishing_particle_baitball.png differ diff --git a/diff/fishing/textures/fishing_particle_baitball_shark.png b/diff/fishing/textures/fishing_particle_baitball_shark.png new file mode 100755 index 0000000..0224abe Binary files /dev/null and b/diff/fishing/textures/fishing_particle_baitball_shark.png differ diff --git a/diff/fishing/textures/fishing_perch_raw.png b/diff/fishing/textures/fishing_perch_raw.png new file mode 100755 index 0000000..9c89b9b Binary files /dev/null and b/diff/fishing/textures/fishing_perch_raw.png differ diff --git a/diff/fishing/textures/fishing_pike_cooked.png b/diff/fishing/textures/fishing_pike_cooked.png new file mode 100755 index 0000000..b311d24 Binary files /dev/null and b/diff/fishing/textures/fishing_pike_cooked.png differ diff --git a/diff/fishing/textures/fishing_pike_raw.png b/diff/fishing/textures/fishing_pike_raw.png new file mode 100755 index 0000000..9481414 Binary files /dev/null and b/diff/fishing/textures/fishing_pike_raw.png differ diff --git a/diff/fishing/textures/fishing_pole_perfect.png b/diff/fishing/textures/fishing_pole_perfect.png new file mode 100755 index 0000000..3c9833c Binary files /dev/null and b/diff/fishing/textures/fishing_pole_perfect.png differ diff --git a/diff/fishing/textures/fishing_pole_perfect_back.png b/diff/fishing/textures/fishing_pole_perfect_back.png new file mode 100755 index 0000000..b584ec1 Binary files /dev/null and b/diff/fishing/textures/fishing_pole_perfect_back.png differ diff --git a/diff/fishing/textures/fishing_pole_perfect_bottom.png b/diff/fishing/textures/fishing_pole_perfect_bottom.png new file mode 100755 index 0000000..08c1e97 Binary files /dev/null and b/diff/fishing/textures/fishing_pole_perfect_bottom.png differ diff --git a/diff/fishing/textures/fishing_pole_perfect_front.png b/diff/fishing/textures/fishing_pole_perfect_front.png new file mode 100755 index 0000000..f334639 Binary files /dev/null and b/diff/fishing/textures/fishing_pole_perfect_front.png differ diff --git a/diff/fishing/textures/fishing_pole_perfect_simple.png b/diff/fishing/textures/fishing_pole_perfect_simple.png new file mode 100755 index 0000000..bf7ea94 Binary files /dev/null and b/diff/fishing/textures/fishing_pole_perfect_simple.png differ diff --git a/diff/fishing/textures/fishing_pole_perfect_top.png b/diff/fishing/textures/fishing_pole_perfect_top.png new file mode 100755 index 0000000..ce6292f Binary files /dev/null and b/diff/fishing/textures/fishing_pole_perfect_top.png differ diff --git a/diff/fishing/textures/fishing_pole_wood.png b/diff/fishing/textures/fishing_pole_wood.png new file mode 100755 index 0000000..54639db Binary files /dev/null and b/diff/fishing/textures/fishing_pole_wood.png differ diff --git a/diff/fishing/textures/fishing_pole_wood_back.png b/diff/fishing/textures/fishing_pole_wood_back.png new file mode 100755 index 0000000..bf92d7e Binary files /dev/null and b/diff/fishing/textures/fishing_pole_wood_back.png differ diff --git a/diff/fishing/textures/fishing_pole_wood_bottom.png b/diff/fishing/textures/fishing_pole_wood_bottom.png new file mode 100755 index 0000000..dd065bd Binary files /dev/null and b/diff/fishing/textures/fishing_pole_wood_bottom.png differ diff --git a/diff/fishing/textures/fishing_pole_wood_front.png b/diff/fishing/textures/fishing_pole_wood_front.png new file mode 100755 index 0000000..f44e407 Binary files /dev/null and b/diff/fishing/textures/fishing_pole_wood_front.png differ diff --git a/diff/fishing/textures/fishing_pole_wood_simple.png b/diff/fishing/textures/fishing_pole_wood_simple.png new file mode 100755 index 0000000..d4d9026 Binary files /dev/null and b/diff/fishing/textures/fishing_pole_wood_simple.png differ diff --git a/diff/fishing/textures/fishing_pole_wood_top.png b/diff/fishing/textures/fishing_pole_wood_top.png new file mode 100755 index 0000000..2f3b4e5 Binary files /dev/null and b/diff/fishing/textures/fishing_pole_wood_top.png differ diff --git a/diff/fishing/textures/fishing_shark_cooked.png b/diff/fishing/textures/fishing_shark_cooked.png new file mode 100755 index 0000000..b6a807c Binary files /dev/null and b/diff/fishing/textures/fishing_shark_cooked.png differ diff --git a/diff/fishing/textures/fishing_shark_raw.png b/diff/fishing/textures/fishing_shark_raw.png new file mode 100755 index 0000000..c302609 Binary files /dev/null and b/diff/fishing/textures/fishing_shark_raw.png differ diff --git a/diff/fishing/textures/fishing_sushi.png b/diff/fishing/textures/fishing_sushi.png new file mode 100755 index 0000000..397100b Binary files /dev/null and b/diff/fishing/textures/fishing_sushi.png differ diff --git a/diff/fishing/textures/fishing_trophy_label.png b/diff/fishing/textures/fishing_trophy_label.png new file mode 100755 index 0000000..d48f8ff Binary files /dev/null and b/diff/fishing/textures/fishing_trophy_label.png differ diff --git a/diff/fishing/textures/fishing_trophy_plank.png b/diff/fishing/textures/fishing_trophy_plank.png new file mode 100755 index 0000000..dc4aba5 Binary files /dev/null and b/diff/fishing/textures/fishing_trophy_plank.png differ diff --git a/diff/fishing/trophies.lua b/diff/fishing/trophies.lua new file mode 100755 index 0000000..9aef8a6 --- /dev/null +++ b/diff/fishing/trophies.lua @@ -0,0 +1,88 @@ +----------------------------------------------------------------------------------------------- +-- Fishing - crabman77's version +-- Rewrited from original Fishing - Mossmanikin's version - Trophies 0.0.2 +-- License (code & textures): WTFPL +-- Contains code from: default +-- Supports: animal_clownfish, animal_fish_blue_white +----------------------------------------------------------------------------------------------- + + +local trophy = { +-- mod item name icon + {"fishing", "fish_raw", "Fish", "fishing_fish_raw.png"}, + {"fishing", "carp_raw", "Carp", "fishing_carp_raw.png"}, + {"fishing", "perch_raw", "Perch", "fishing_perch_raw.png"}, + {"fishing", "catfish_raw", "Catfish", "fishing_catfish_raw.png"}, + {"fishing", "pike_raw", "Northern Pike", "fishing_pike_raw.png"}, + {"fishing", "clownfish_raw", "Clownfish", "fishing_clownfish_raw.png"}, + {"fishing", "bluewhite_raw", "Bluewhite", "fishing_bluewhite_raw.png"}, + {"fishing", "exoticfish_raw", "Exoticfish", "fishing_exoticfish_raw.png"}, + {"fishing", "shark_raw", "Shark", "fishing_shark_raw.png"}, +} + +local function has_trophy_privilege(meta, player) + if player:get_player_name() ~= meta:get_string("owner") then + return false + end + return true +end + +for i in pairs(trophy) do + local mod = trophy[i][1] + local item = trophy[i][2] + local name = trophy[i][3] + local icon = trophy[i][4] + minetest.register_node("fishing:trophy_"..item, { + description = fishing_setting.func.S(name.." Trophy"), + inventory_image = "fishing_trophy_plank.png^"..icon.."^fishing_trophy_label.png", + drawtype = "nodebox", + tiles = { + "fishing_trophy_plank.png", -- top + "fishing_trophy_plank.png", -- bottom + "fishing_trophy_plank.png", -- right + "fishing_trophy_plank.png", -- left + "fishing_trophy_plank.png", -- back + "fishing_trophy_plank.png^"..icon.."^fishing_trophy_label.png", -- front + }, + paramtype = "light", + paramtype2 = "facedir", + walkable = false, + node_box = { + type = "fixed", + fixed = { + -- { left , bottom , front , right , top , back } + { -1/2 , -1/2 , 7/16 , 1/2 , 1/2 , 1/2 }, + } + }, + selection_box = { + type = "fixed", + fixed = { + { -1/2 , -1/2 , 7/16 , 1/2 , 1/2 , 1/2 }, + } + }, + groups = {choppy=2,oddly_breakable_by_hand=3,flammable=2}, + sounds = default.node_sound_wood_defaults(), + after_place_node = function(pos, placer) + local meta = minetest.get_meta(pos) + meta:set_string("owner", placer:get_player_name() or "") + meta:set_string("infotext", fishing_setting.func.S("This Huge "..name.." was caught by the Famous Angler %s !"):format((placer:get_player_name() or ""))) + end, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", name) + meta:set_string("owner", "") + end, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos); + return has_trophy_privilege(meta, player) + end, + }) + +--[[ + minetest.register_craft({ + type = "shapeless", + output = "fishing:trophy_"..item, + recipe = {mod..":"..item, "default:sign_wall"}, + }) +--]] +end diff --git a/diff/fishing/worms.lua b/diff/fishing/worms.lua new file mode 100755 index 0000000..f73fbab --- /dev/null +++ b/diff/fishing/worms.lua @@ -0,0 +1,259 @@ +----------------------------------------------------------------------------------------------- +-- Fishing - crabman77's version +-- Rewrited from original Fishing - Mossmanikin's version - Worm 0.0.2 +----------------------------------------------------------------------------------------------- +-- License (code & textures): WTFPL +-- Contains code from: fishing (original), mobs +-- Looked at code from: my_mobs +-- Dependencies: default +----------------------------------------------------------------------------------------------- + +----------------------------------------------------------------------------------------------- +-- WORM ITEM +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:bait_worm", { + description = fishing_setting.func.S("Worm"), + groups = { fishing_bait=1 }, + inventory_image = "fishing_bait_worm.png", + on_place = function(itemstack, placer, pointed_thing) + if not placer then -- can happen, e.g. if placed using minetest.place_node + return itemstack + end + local pt = pointed_thing + if not minetest.is_protected(pt.under, placer:get_player_name()) then + minetest.add_entity({x=pt.under.x, y=pt.under.y+0.6, z=pt.under.z}, "fishing:bait_worm_entity") + itemstack:take_item() + end + return itemstack + end, + on_drop = function(itemstack, dropper, pos) + minetest.add_entity({x = pos.x, y = pos.y, z = pos.z}, "fishing:bait_worm_entity") + itemstack:take_item() + return itemstack + end, +}) + +----------------------------------------------------------------------------------------------- +-- WORM MOB +----------------------------------------------------------------------------------------------- +minetest.register_entity("fishing:bait_worm_entity", { + hp_max = 300, + damage_over_time = 1, + collisionbox = {-3/16, -3/16, -3/16, 3/16, 3/16, 3/16}, + visual = "sprite", + visual_size = {x=1/2, y=1/2}, + textures = { "fishing_bait_worm.png", "fishing_bait_worm.png"}, + view_range = 32, + -- Don't punch this poor creature... + on_punch = function(self, puncher) + self.object:remove() + end, + -- ...softly take it into your hand. + on_rightclick = function(self, clicker) + if clicker:is_player() and clicker:get_inventory() then + clicker:get_inventory():add_item("main", "fishing:bait_worm") + self.object:remove() + end + end, + -- AI :D + on_step = function(self, dtime) + local pos = self.object:getpos() + -- despawn when no player in range + local remove_entity = true + for _,player in pairs(minetest.get_connected_players()) do + local p = player:getpos() + local dist = ((p.x-pos.x)^2 + (p.y-pos.y)^2 + (p.z-pos.z)^2)^0.5 + if dist < 25 then + remove_entity = false + break + end + end + if remove_entity then + self.object:remove() + return + end + local n = minetest.get_node({x=pos.x,y=pos.y-0.3,z=pos.z}) + -- move in world + local look_whats_up = function(self) + self.object:set_hp(self.object:get_hp()-self.damage_over_time) -- creature is getting older + if n.name == "air" then -- fall when in air + self.object:moveto({x=pos.x,y=pos.y-0.5,z=pos.z}) + self.object:set_hp(self.object:get_hp()-75) + + --if n.name == "snappy" then -- fall when leaves or similar + elseif minetest.get_item_group(n.name, "snappy") ~= 0 then + self.object:moveto({x=pos.x+(0.001*(math.random(-32, 32))),y=pos.y-(0.001*(math.random(0, 64))),z=pos.z+(0.001*(math.random(-32, 32)))}) + + elseif string.find(n.name, "default:water") then -- sink when in water + self.object:moveto({x=pos.x,y=pos.y-0.25,z=pos.z}) + self.object:set_hp(self.object:get_hp()-37) + + elseif minetest.get_item_group(n.name, "soil") ~= 0 then + if minetest.get_item_group(minetest.get_node({x=pos.x,y=pos.y-0.1,z=pos.z}).name, "soil") == 0 and self.object:get_hp() > 200 then + self.object:set_hp(199) + elseif self.object:get_hp() > 200 then -- leave dirt to see whats going on + self.object:moveto({x=pos.x+(0.001*(math.random(-2, 2))),y=pos.y+0.003,z=pos.z+(0.001*(math.random(-2, 2)))}) + elseif self.object:get_hp() < 199 then -- no rain here, let's get outa here + self.object:moveto({x=pos.x+(0.001*(math.random(-2, 2))),y=pos.y-0.001,z=pos.z+(0.001*(math.random(-2, 2)))}) + elseif self.object:get_hp() == 0 then + self.object:remove() + end + else -- check if there's dirt anywhere (not finished) + local check_group = minetest.get_item_group + local goal_01 = check_group(minetest.get_node({x = pos.x + 1, y = pos.y-0.4, z = pos.z }).name, "soil") + local goal_02 = check_group(minetest.get_node({x = pos.x, y = pos.y-0.4, z = pos.z + 1}).name, "soil") + local goal_03 = check_group(minetest.get_node({x = pos.x - 1, y = pos.y-0.4, z = pos.z }).name, "soil") + local goal_04 = check_group(minetest.get_node({x = pos.x, y = pos.y-0.4, z = pos.z - 1}).name, "soil") + + local goal_1a = check_group(minetest.get_node({x = pos.x + 1, y = pos.y+0.6, z = pos.z }).name, "soil") + local goal_2a = check_group(minetest.get_node({x = pos.x, y = pos.y+0.6, z = pos.z + 1}).name, "soil") + local goal_3a = check_group(minetest.get_node({x = pos.x - 1, y = pos.y+0.6, z = pos.z }).name, "soil") + local goal_4a = check_group(minetest.get_node({x = pos.x, y = pos.y+0.6, z = pos.z - 1}).name, "soil") + -- if there's dirt nearby, go there + if goal_01 ~= 0 or goal_1a ~= 0 then + self.object:moveto({x=pos.x+0.002,y=pos.y,z=pos.z+(0.001*(math.random(-2, 2)))}) + elseif goal_02 ~= 0 or goal_2a ~= 0 then + self.object:moveto({x=pos.x+(0.001*(math.random(-2, 2))),y=pos.y,z=pos.z+0.002}) + elseif goal_03 ~= 0 or goal_3a ~= 0 then + self.object:moveto({x=pos.x-0.002,y=pos.y,z=pos.z+(0.001*(math.random(-2, 2)))}) + elseif goal_04 ~= 0 or goal_4a ~= 0 then + self.object:moveto({x=pos.x+(0.001*(math.random(-2, 2))),y=pos.y,z=pos.z-0.002}) + else -- I'm lost, no dirt + self.object:moveto({x=pos.x+(0.001*(math.random(-8, 8))),y=pos.y,z=pos.z+(0.001*(math.random(-8, 8)))}) + end + end + end + look_whats_up(self) + end, +}) + +--- Bait Worm Entity +minetest.register_craft({ + output = "fishing:bait_worm 8", + recipe = { + {"default:dirt"}, + {"default:dirt"}, + } +}) + +----------------------------------------------------------------------------------------------- +-- GETTING WORMS +----------------------------------------------------------------------------------------------- +-- get worms from digging in dirt: +if fishing_setting.settings["new_worm_source"] == false then + minetest.register_node(":default:dirt", { + description = fishing_setting.func.S("Dirt"), + tiles = {"default_dirt.png"}, + is_ground_content = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults(), + after_dig_node = function (pos, oldnode, oldmetadata, digger) + if math.random(1, 100) <= fishing_setting.settings["worm_chance"] then + local tool_in_use = digger:get_wielded_item():get_name() + if tool_in_use == "" or tool_in_use == "default:dirt" then + if fishing_setting.settings["worm_is_mob"] == true then + minetest.add_entity({x = pos.x, y = pos.y+0.4, z = pos.z}, "fishing:bait_worm_entity") + else + local inv = digger:get_inventory() + if inv:room_for_item("main", {name="fishing:bait_worm", count=1, wear=0, metadata=""}) then + inv:add_item("main", {name="fishing:bait_worm", count=1, wear=0, metadata=""}) + end + end + end + end + end, + }) + +else + -- get worms from digging with hoes: + -- turns nodes with group soil=1 into soil + local function hoe_on_use(itemstack, user, pointed_thing, uses) + local pt = pointed_thing + -- check if pointing at a node + if not pt or pt.type ~= "node" then + return + end + + local under = minetest.get_node(pt.under) + local upos = pointed_thing.under + + if minetest.is_protected(upos, user:get_player_name()) then + minetest.record_protection_violation(upos, user:get_player_name()) + return + end + + local p = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z} + local above = minetest.get_node(p) + + -- return if any of the nodes is not registered + if not minetest.registered_nodes[under.name] + or not minetest.registered_nodes[above.name] then + return + end + + -- check if the node above the pointed thing is air + if above.name ~= "air" then + return + end + + -- check if pointing at dirt + if minetest.get_item_group(under.name, "soil") ~= 1 then + return + end + -- turn the node into soil, wear out item and play sound + minetest.set_node(pt.under, {name="farming:soil"}) + minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5,}) + + if math.random(1, 100) < fishing_setting.settings["worm_chance"] then + if fishing_setting.settings["worm_is_mob"] == true then + minetest.add_entity({x=pt.under.x, y=pt.under.y+0.4, z=pt.under.z}, "fishing:bait_worm_entity") + else + local inv = user:get_inventory() + if inv:room_for_item("main", {name="fishing:bait_worm", count=1, wear=0, metadata=""}) then + inv:add_item("main", {name="fishing:bait_worm", count=1, wear=0, metadata=""}) + end + end + end + if not minetest.setting_getbool("creative_mode") then + local tool_name = itemstack:get_name() + itemstack:add_wear(65535/(uses-1)) + if itemstack:get_wear() == 0 and minetest.get_modpath("invtweak") then + local index = user:get_wield_index() + minetest.sound_play("invtweak_tool_break", {pos = user:getpos(), gain = 0.9, max_hear_distance = 5}) + minetest.after(0.20, refill, user, tool_name, index) + end + end + return itemstack + end + + + -- didn't change the hoes, just here because hoe_on_use is local + minetest.register_tool(":farming:hoe_wood", { + description = fishing_setting.func.S("Wooden Hoe"), + inventory_image = "farming_tool_woodhoe.png", + on_use = function(itemstack, user, pointed_thing) + return hoe_on_use(itemstack, user, pointed_thing, 30) + end, + }) + minetest.register_tool(":farming:hoe_stone", { + description = fishing_setting.func.S("Stone Hoe"), + inventory_image = "farming_tool_stonehoe.png", + on_use = function(itemstack, user, pointed_thing) + return hoe_on_use(itemstack, user, pointed_thing, 90) + end, + }) + minetest.register_tool(":farming:hoe_steel", { + description = fishing_setting.func.S("Steel Hoe"), + inventory_image = "farming_tool_steelhoe.png", + on_use = function(itemstack, user, pointed_thing) + return hoe_on_use(itemstack, user, pointed_thing, 200) + end, + }) + minetest.register_tool(":farming:hoe_bronze", { + description = fishing_setting.func.S("Bronze Hoe"), + inventory_image = "farming_tool_bronzehoe.png", + on_use = function(itemstack, user, pointed_thing) + return hoe_on_use(itemstack, user, pointed_thing, 220) + end, + }) +end diff --git a/diff/intllib.diff/README.md b/diff/intllib.diff/README.md new file mode 100644 index 0000000..db33035 --- /dev/null +++ b/diff/intllib.diff/README.md @@ -0,0 +1,5 @@ +Intllib +===================================================================== +Main: kaeza +Lisc: Unlicense +Link: https://github.com/minetest-mods/intllib diff --git a/diff/intllib.diff/README.md.diff b/diff/intllib.diff/README.md.diff new file mode 100644 index 0000000..7bef471 --- /dev/null +++ b/diff/intllib.diff/README.md.diff @@ -0,0 +1,50 @@ +1,43c1,5 +< +< # Internationalization Lib for Minetest +< +< By Diego Martínez (kaeza). +< Released under Unlicense. See `LICENSE.md` for details. +< +< This mod is an attempt at providing internationalization support for mods +< (something Minetest currently lacks). +< +< Should you have any comments/suggestions, please post them in the +< [forum topic][topic]. For bug reports, use the [bug tracker][bugtracker] +< on Github. +< +< ## How to use +< +< If you are a regular player looking for translated texts, just +< [install][installing_mods] this mod like any other one, then enable it +< in the GUI. +< +< The mod tries to detect your language, but since there's currently no +< portable way to do this, it tries several alternatives: +< +< * `language` setting in `minetest.conf`. +< * `LANGUAGE` environment variable. +< * `LANG` environment variable. +< * If all else fails, uses `en`. +< +< In any case, the end result should be the [ISO 639-1 Language Code][ISO639-1] +< of the desired language. +< +< ### Mod developers +< +< If you are a mod developer looking to add internationalization support to +< your mod, see `doc/developer.md`. +< +< ### Translators +< +< If you are a translator, see `doc/translator.md`. +< +< [topic]: https://forum.minetest.net/viewtopic.php?id=4929 +< [bugtracker]: https://github.com/minetest-mods/intllib/issues +< [installing_mods]: https://wiki.minetest.net/Installing_mods +< [ISO639-1]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes +--- +> Intllib +> ===================================================================== +> Main: kaeza +> Lisc: Unlicense +> Link: https://github.com/minetest-mods/intllib diff --git a/diff/item_drop.diff/README.txt b/diff/item_drop.diff/README.txt new file mode 100644 index 0000000..b3a1c77 --- /dev/null +++ b/diff/item_drop.diff/README.txt @@ -0,0 +1,6 @@ +Item_drop +===================================================================== +Main: PilzAdam +Lisc: WTFPL +Audi: WTFPL +Link: https://github.com/Calinou/carbone-ng diff --git a/diff/item_drop.diff/README.txt.diff b/diff/item_drop.diff/README.txt.diff new file mode 100644 index 0000000..de85314 --- /dev/null +++ b/diff/item_drop.diff/README.txt.diff @@ -0,0 +1,50 @@ +1,42c1,6 +< ===ITEM_DROP MOD for MINETEST-C55=== +< by PilzAdam +< +< Introduction: +< This mod adds Minecraft like drop/pick up of items to Minetest. +< +< How to install: +< Unzip the archive an place it in minetest-base-directory/mods/minetest/ +< if you have a windows client or a linux run-in-place client. If you have +< a linux system-wide instalation place it in ~/.minetest/mods/minetest/. +< If you want to install this mod only in one world create the folder +< worldmods/ in your worlddirectory. +< For further information or help see: +< http://wiki.minetest.com/wiki/Installing_Mods +< +< How to use the mod: +< Just install it an everything works. +< +< For developers: +< You dont have to use get_drops() anymore because of changes in the +< builtin files of minetest. +< +< License: +< Sourcecode: WTFPL (see below) +< Sound: WTFPL (see below) +< +< See also: +< http://minetest.net/ +< +< DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE +< Version 2, December 2004 +< +< Copyright (C) 2004 Sam Hocevar +< +< Everyone is permitted to copy and distribute verbatim or modified +< copies of this license document, and changing it is allowed as long +< as the name is changed. +< +< DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE +< TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +< +< 0. You just DO WHAT THE FUCK YOU WANT TO. +--- +> Item_drop +> ===================================================================== +> Main: PilzAdam +> Lisc: WTFPL +> Audi: WTFPL +> Link: https://github.com/Calinou/carbone-ng diff --git a/diff/mobs_animal.diff/bunny.lua b/diff/mobs_animal.diff/bunny.lua new file mode 100644 index 0000000..e9fbb4f --- /dev/null +++ b/diff/mobs_animal.diff/bunny.lua @@ -0,0 +1,124 @@ + +local S = mobs.intllib + + +-- Bunny by ExeterDad + +mobs:register_mob("mobs_animal:bunny", { + type = "animal", + passive = true, + reach = 1, + hp_min = 1, + hp_max = 4, + armor = 200, + collisionbox = {-0.268, -0.5, -0.268, 0.268, 0.167, 0.268}, + visual = "mesh", + mesh = "mobs_bunny.b3d", + drawtype = "front", + textures = { + {"mobs_bunny_grey.png"}, + {"mobs_bunny_brown.png"}, + {"mobs_bunny_white.png"}, + }, + sounds = { + random = "mobs_bunny", + }, + makes_footstep_sound = false, + walk_velocity = 1, + run_velocity = 2, + runaway = true, + jump = true, + drops = { + {name = "mobs:meat_raw", chance = 1, min = 1, max = 1}, + }, + water_damage = 1, + lava_damage = 4, + light_damage = 0, + fear_height = 2, + animation = { + speed_normal = 15, + stand_start = 1, + stand_end = 15, + walk_start = 16, + walk_end = 24, + punch_start = 16, + punch_end = 24, + }, + follow = {"farming:carrot", "farming_plus:carrot_item", "default:grass_1"}, + view_range = 8, + replace_rate = 10, + replace_what = {"farming:carrot_7", "farming:carrot_8", "farming_plus:carrot"}, + replace_with = "air", + on_rightclick = function(self, clicker) + + -- feed or tame + if mobs:feed_tame(self, clicker, 4, true, true) then return end + if mobs:protect(self, clicker) then return end + if mobs:capture_mob(self, clicker, 30, 50, 80, false, nil) then return end + + -- Monty Python tribute + local item = clicker:get_wielded_item() + + if item:get_name() == "mobs:lava_orb" then + + if not minetest.setting_getbool("creative_mode") then + item:take_item() + clicker:set_wielded_item(item) + end + + self.object:set_properties({ + textures = {"mobs_bunny_evil.png"}, + }) + + self.type = "monster" + self.health = 20 + + return + end + + -- Azure + if item:get_name() == "dye:blue" then + + if not minetest.setting_getbool("creative_mode") then + item:take_item() + clicker:set_wielded_item(item) + end + + self.object:set_properties({ + textures = {"mobs_bunny_azure.png"}, + sounds = { + random = "mobs_bunny_azure", + }, + }) + + self.health = 1 + + return + end + end, + + attack_type = "dogfight", + damage = 5, +}) + + +local spawn_on = "default:dirt_with_grass" + +if minetest.get_modpath("ethereal") then + spawn_on = "ethereal:prairie_dirt" +end + +mobs:spawn({ + name = "mobs_animal:bunny", + nodes = {spawn_on}, + min_light = 10, + chance = 15000, + min_height = 0, + day_toggle = true, +}) + + +mobs:register_egg("mobs_animal:bunny", S("Bunny"), "mobs_bunny_inv.png", 0) + + +mobs:alias_mob("mobs:bunny", "mobs_animal:bunny") -- compatibility diff --git a/diff/mobs_animal.diff/bunny.lua.diff b/diff/mobs_animal.diff/bunny.lua.diff new file mode 100644 index 0000000..4655ef0 --- /dev/null +++ b/diff/mobs_animal.diff/bunny.lua.diff @@ -0,0 +1,124 @@ +8d7 +< stepheight = 0.6, +24c23,25 +< sounds = {}, +--- +> sounds = { +> random = "mobs_bunny", +> }, +29d29 +< runaway_from = {"mobs_animal:pumba", "player"}, +31d30 +< jump_height = 6, +33,34c32 +< {name = "mobs:rabbit_raw", chance = 1, min = 1, max = 1}, +< {name = "mobs:rabbit_hide", chance = 1, min = 1, max = 1}, +--- +> {name = "mobs:meat_raw", chance = 1, min = 1, max = 1}, +66c64 +< if not mobs.is_creative(clicker:get_player_name()) then +--- +> if not minetest.setting_getbool("creative_mode") then +80,81c78,80 +< end, +< on_spawn = function(self) +--- +> +> -- Azure +> if item:get_name() == "dye:blue" then +83c82,85 +< local pos = self.object:get_pos() ; pos.y = pos.y - 1 +--- +> if not minetest.setting_getbool("creative_mode") then +> item:take_item() +> clicker:set_wielded_item(item) +> end +85,100c87,94 +< -- white snowy bunny +< if minetest.find_node_near(pos, 1, +< {"default:snow", "default:snowblock", "default:dirt_with_snow"}) then +< self.base_texture = {"mobs_bunny_white.png"} +< self.object:set_properties({textures = self.base_texture}) +< -- brown desert bunny +< elseif minetest.find_node_near(pos, 1, +< {"default:desert_sand", "default:desert_stone"}) then +< self.base_texture = {"mobs_bunny_brown.png"} +< self.object:set_properties({textures = self.base_texture}) +< -- grey stone bunny +< elseif minetest.find_node_near(pos, 1, +< {"default:stone", "default:gravel"}) then +< self.base_texture = {"mobs_bunny_grey.png"} +< self.object:set_properties({textures = self.base_texture}) +< end +--- +> self.object:set_properties({ +> textures = {"mobs_bunny_azure.png"}, +> sounds = { +> random = "mobs_bunny_azure", +> }, +> }) +> +> self.health = 1 +102c96,97 +< return true -- run only once, false/nil runs every activation +--- +> return +> end +103a99 +> +118d113 +< neighbors = {"group:grass"}, +120,122c115,116 +< chance = 5000, -- 15000 +< min_height = 5, +< max_height = 200, +--- +> chance = 15000, +> min_height = 0, +131,176d124 +< +< +< -- raw rabbit +< minetest.register_craftitem(":mobs:rabbit_raw", { +< description = S("Raw Rabbit"), +< inventory_image = "mobs_rabbit_raw.png", +< on_use = minetest.item_eat(3), +< groups = {food_meat_raw = 1, food_rabbit_raw = 1, flammable = 2}, +< }) +< +< -- cooked rabbit +< minetest.register_craftitem(":mobs:rabbit_cooked", { +< description = S("Cooked Rabbit"), +< inventory_image = "mobs_rabbit_cooked.png", +< on_use = minetest.item_eat(5), +< groups = {food_meat = 1, food_rabbit = 1, flammable = 2}, +< }) +< +< minetest.register_craft({ +< type = "cooking", +< output = "mobs:rabbit_cooked", +< recipe = "mobs:rabbit_raw", +< cooktime = 5, +< }) +< +< -- rabbit hide +< minetest.register_craftitem(":mobs:rabbit_hide", { +< description = S("Rabbit Hide"), +< inventory_image = "mobs_rabbit_hide.png", +< groups = {flammable = 2}, +< }) +< +< minetest.register_craft({ +< type = "fuel", +< recipe = "mobs:rabbit_hide", +< burntime = 2, +< }) +< +< minetest.register_craft({ +< output = "mobs:leather", +< type = "shapeless", +< recipe = { +< "mobs:rabbit_hide", "mobs:rabbit_hide", +< "mobs:rabbit_hide", "mobs:rabbit_hide" +< } +< }) diff --git a/diff/mobs_animal.diff/cow.lua b/diff/mobs_animal.diff/cow.lua new file mode 100644 index 0000000..764b066 --- /dev/null +++ b/diff/mobs_animal.diff/cow.lua @@ -0,0 +1,175 @@ + +local S = mobs.intllib + + +-- Cow by Krupnovpavel (texture by Tirifto) + +mobs:register_mob("mobs_animal:cow", { + type = "animal", + passive = false, + attack_type = "dogfight", + reach = 2, + damage = 4, + hp_min = 5, + hp_max = 20, + armor = 200, + collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, + visual = "mesh", + mesh = "mobs_cow.x", + textures = { + {"mobs_cow_brown.png"}, + {"mobs_cow_straciatella.png"}, + {"mobs_cow_straciatella2.png"}, + {"mobs_cow_meat.png"}, + }, + makes_footstep_sound = true, + sounds = { + random = "mobs_cow", + }, + walk_velocity = 1, + run_velocity = 2, + jump = true, + drops = { + {name = "mobs:meat_raw", chance = 1, min = 1, max = 3}, + {name = "mobs:leather", chance = 1, min = 1, max = 2}, + }, + water_damage = 1, + lava_damage = 5, + light_damage = 0, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 0, + stand_end = 30, + walk_start = 35, + walk_end = 65, + run_start = 105, + run_end = 135, + punch_start = 70, + punch_end = 100, + }, + follow = "farming:wheat", + view_range = 8, + replace_rate = 10, +-- replace_what = {"default:grass_3", "default:grass_4", "default:grass_5", "farming:wheat_8"}, + replace_what = { + {"group:grass", "air", 0}, + {"default:dirt_with_grass", "default:dirt", -1} + }, + replace_with = "air", + fear_height = 2, + on_rightclick = function(self, clicker) + + -- feed or tame + if mobs:feed_tame(self, clicker, 8, true, true) then return end + if mobs:protect(self, clicker) then return end + if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end + + local tool = clicker:get_wielded_item() + local name = clicker:get_player_name() + + -- milk cow with empty bucket + if tool:get_name() == "bucket:bucket_empty" then + + --if self.gotten == true + if self.child == true then + return + end + + if self.gotten == true then + minetest.chat_send_player(name, + S("Cow already milked!")) + return + end + + local inv = clicker:get_inventory() + + inv:remove_item("main", "bucket:bucket_empty") + + if inv:room_for_item("main", {name = "mobs:bucket_milk"}) then + clicker:get_inventory():add_item("main", "mobs:bucket_milk") + else + local pos = self.object:getpos() + pos.y = pos.y + 0.5 + minetest.add_item(pos, {name = "mobs:bucket_milk"}) + end + + self.gotten = true -- milked + + return + end + end, +}) + + +local spawn_on = "default:dirt_with_grass" + +if minetest.get_modpath("ethereal") then + spawn_on = "ethereal:green_dirt" +end + +mobs:spawn({ + name = "mobs_animal:cow", + nodes = {spawn_on}, + min_light = 0, + max_light = 10, + chance = 15000, + min_height = 0, + max_height = 31000, + day_toggle = true, +}) + + +mobs:register_egg("mobs_animal:cow", S("Cow"), "default_grass.png", 1) + + +mobs:alias_mob("mobs:cow", "mobs_animal:cow") -- compatibility + + +-- bucket of milk +minetest.register_craftitem(":mobs:bucket_milk", { + description = S("Bucket of Milk"), + inventory_image = "mobs_bucket_milk.png", + stack_max = 1, + on_use = minetest.item_eat(8, 'bucket:bucket_empty'), +}) + +-- cheese wedge +minetest.register_craftitem(":mobs:cheese", { + description = S("Cheese"), + inventory_image = "mobs_cheese.png", + on_use = minetest.item_eat(4), +}) + +minetest.register_craft({ + type = "cooking", + output = "mobs:cheese", + recipe = "mobs:bucket_milk", + cooktime = 5, + replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}} +}) + +-- cheese block +minetest.register_node(":mobs:cheeseblock", { + description = S("Cheese Block"), + tiles = {"mobs_cheeseblock.png"}, + is_ground_content = false, + groups = {crumbly = 3}, + sounds = default.node_sound_dirt_defaults() +}) + +minetest.register_craft({ + output = "mobs:cheeseblock", + recipe = { + {'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, + {'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, + {'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, + } +}) + +minetest.register_craft({ + output = "mobs:cheese 9", + recipe = { + {'mobs:cheeseblock'}, + } +}) diff --git a/diff/mobs_animal.diff/cow.lua.diff b/diff/mobs_animal.diff/cow.lua.diff new file mode 100644 index 0000000..c84210e --- /dev/null +++ b/diff/mobs_animal.diff/cow.lua.diff @@ -0,0 +1,47 @@ +5c5 +< -- Cow by Krupnovpavel (additional texture by JurajVajda) +--- +> -- Cow by Krupnovpavel (texture by Tirifto) +16c16 +< collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.2, 0.4}, +--- +> collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, +20,21c20,23 +< {"mobs_cow.png"}, +< {"mobs_cow2.png"}, +--- +> {"mobs_cow_brown.png"}, +> {"mobs_cow_straciatella.png"}, +> {"mobs_cow_straciatella2.png"}, +> {"mobs_cow_meat.png"}, +30d31 +< jump_height = 6, +91c92 +< local pos = self.object:get_pos() +--- +> local pos = self.object:getpos() +103a105,110 +> local spawn_on = "default:dirt_with_grass" +> +> if minetest.get_modpath("ethereal") then +> spawn_on = "ethereal:green_dirt" +> end +> +106,111c113,118 +< nodes = {"default:dirt_with_grass", "ethereal:green_dirt"}, +< neighbors = {"group:grass"}, +< min_light = 10, +< chance = 5000, -- 15000 +< min_height = 5, +< max_height = 200, +--- +> nodes = {spawn_on}, +> min_light = 0, +> max_light = 10, +> chance = 15000, +> min_height = 0, +> max_height = 31000, +128d134 +< groups = {food_milk = 1, flammable = 3}, +136d141 +< groups = {food_cheese = 1, flammable = 2}, diff --git a/diff/mobs_animal.diff/duck.lua b/diff/mobs_animal.diff/duck.lua new file mode 100644 index 0000000..4fe8842 --- /dev/null +++ b/diff/mobs_animal.diff/duck.lua @@ -0,0 +1,283 @@ + +local S = mobs.intllib + + +-- Duck by JK Murray and Tirifto + +mobs:register_mob("mobs_animal:duck", { + type = "animal", + passive = true, + hp_min = 10, + hp_max = 40, + armor = 200, + collisionbox = {-0.3, -0.75, -0.3, 0.3, 0.1, 0.3}, + visual = "mesh", + mesh = "mobs_chicken.x", + -- seems a lot of textures but this fixes the problem with the model + textures = { + {"mobs_duck_drake.png", "mobs_duck_drake.png", "mobs_duck_drake.png", "mobs_duck_drake.png", + "mobs_duck_drake.png", "mobs_duck_drake.png", "mobs_duck_drake.png", "mobs_duck_drake.png", + "mobs_duck_drake.png"}, + {"mobs_duck_female.png", "mobs_duck_female.png", "mobs_duck_female.png", "mobs_duck_female.png", + "mobs_duck_female.png", "mobs_duck_female.png", "mobs_duck_female.png", "mobs_duck_female.png", + "mobs_duck_female.png"}, + }, + child_texture = { + {"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", + "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png"}, + }, + makes_footstep_sound = true, + sounds = { + random = "mobs_duck", + }, + walk_velocity = 3, + run_velocity = 5, + runaway = true, + drops = { + {name = "mobs:duck_raw", chance = 3, min = 1, max = 2}, + {name = "mobs:chicken_feather", chance = 5, min = 1, max = 3}, + }, + water_damage = 0, + lava_damage = 5, + light_damage = 0, + fall_damage = 0, + fall_speed = -8, + fear_height = 100, + animation = { + speed_normal = 15, + stand_start = 0, + stand_end = 1, -- 20 + walk_start = 20, + walk_end = 40, + }, + floats = 1, + follow = {"farming:wheat_seed", "farming:cotton_seed"}, + view_range = 5, + + on_rightclick = function(self, clicker) + + if mobs:feed_tame(self, clicker, 8, true, true) then return end + if mobs:protect(self, clicker) then return end + if mobs:capture_mob(self, clicker, 30, 50, 80, false, nil) then return end + end, + + do_custom = function(self, dtime) + + self.egg_timer = (self.egg_timer or 0) + dtime + if self.egg_timer < 10 then + return + end + self.egg_timer = 0 + + if self.child + or math.random(1, 100) > 1 then + return + end + + local pos = self.object:getpos() + + minetest.add_item(pos, "mobs:duck_egg") + + minetest.sound_play("default_place_node_hard", { + pos = pos, + gain = 1.0, + max_hear_distance = 5, + }) + end, +}) + + +local spawn_on = "default:water_source" + +if minetest.get_modpath("ethereal") then + spawn_on = "ethereal:bamboo_dirt" +end + +mobs:spawn({ + name = "mobs_animal:duck", + nodes = {spawn_on}, + min_light = 5, + chance = 15000, + active_object_count = 2, + min_height = 0, + day_toggle = true, +}) + + +mobs:register_egg("mobs_animal:duck", S("Duck"), "mobs_duck_inv.png", 0) + + +mobs:alias_mob("mobs:duck", "mobs_animal:duck") -- compatibility + + +-- duck egg entity + +mobs:register_arrow("mobs_animal:duck_egg_entity", { + visual = "sprite", + visual_size = {x=.5, y=.5}, + textures = {"mobs_duck_egg.png"}, + velocity = 6, + + hit_player = function(self, player) + player:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = 1}, + }, nil) + end, + + hit_mob = function(self, player) + player:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = 1}, + }, nil) + end, + + hit_node = function(self, pos, node) + + if math.random(1, 10) > 1 then + return + end + + pos.y = pos.y + 1 + + local nod = minetest.get_node_or_nil(pos) + + if not nod + or not minetest.registered_nodes[nod.name] + or minetest.registered_nodes[nod.name].walkable == true then + return + end + + local mob = minetest.add_entity(pos, "mobs_animal:duck") + local ent2 = mob:get_luaentity() + + mob:set_properties({ + textures = ent2.child_texture[1], + visual_size = { + x = ent2.base_size.x / 2, + y = ent2.base_size.y / 2 + }, + collisionbox = { + ent2.base_colbox[1] / 2, + ent2.base_colbox[2] / 2, + ent2.base_colbox[3] / 2, + ent2.base_colbox[4] / 2, + ent2.base_colbox[5] / 2, + ent2.base_colbox[6] / 2 + }, + }) + + ent2.child = true + ent2.tamed = true + ent2.owner = self.playername + end +}) + + +-- egg throwing item + +local egg_GRAVITY = 9 +local egg_VELOCITY = 19 + +-- shoot egg +local mobs_shoot_egg = function (item, player, pointed_thing) + + local playerpos = player:getpos() + + minetest.sound_play("default_place_node_hard", { + pos = playerpos, + gain = 1.0, + max_hear_distance = 5, + }) + + local obj = minetest.add_entity({ + x = playerpos.x, + y = playerpos.y +1.5, + z = playerpos.z + }, "mobs_animal:duck_egg_entity") + + local ent = obj:get_luaentity() + local dir = player:get_look_dir() + + ent.velocity = egg_VELOCITY -- needed for api internal timing + ent.switch = 1 -- needed so that egg doesn't despawn straight away + + obj:setvelocity({ + x = dir.x * egg_VELOCITY, + y = dir.y * egg_VELOCITY, + z = dir.z * egg_VELOCITY + }) + + obj:setacceleration({ + x = dir.x * -3, + y = -egg_GRAVITY, + z = dir.z * -3 + }) + + -- pass player name to egg for chick ownership + local ent2 = obj:get_luaentity() + ent2.playername = player:get_player_name() + + item:take_item() + + return item +end + + +-- egg +minetest.register_node(":mobs:duck_egg", { + description = S("Duck Egg"), + tiles = {"mobs_duck_egg.png"}, + inventory_image = "mobs_duck_egg.png", + visual_scale = 0.7, + drawtype = "plantlike", + wield_image = "mobs_duck_egg.png", + paramtype = "light", + walkable = false, + is_ground_content = true, + sunlight_propagates = true, + selection_box = { + type = "fixed", + fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2} + }, + groups = {snappy = 2, dig_immediate = 3}, + after_place_node = function(pos, placer, itemstack) + if placer:is_player() then + minetest.set_node(pos, {name = "mobs:duck_egg", param2 = 1}) + end + end, + on_use = mobs_shoot_egg +}) + + +minetest.register_craft({ + type = "cooking", + recipe = "mobs:duck_egg", + output = "mobs:chicken_egg_fried", +}) + +-- raw chicken +minetest.register_craftitem(":mobs:duck_raw", { +description = S("Raw Duck"), + inventory_image = "mobs_duck_raw.png", + on_use = minetest.item_eat(3), +}) + +-- cooked chicken +minetest.register_craftitem(":mobs:duck_cooked", { +description = S("Cooked Duck"), + inventory_image = "mobs_duck_cooked.png", + on_use = minetest.item_eat(9), +}) + +minetest.register_craft({ + type = "cooking", + recipe = "mobs:duck_raw", + output = "mobs:duck_cooked", +}) + +-- feather +minetest.register_craftitem(":mobs:chicken_feather", { + description = S("Feather"), + inventory_image = "mobs_chicken_feather.png", +}) diff --git a/diff/mobs_animal.diff/init.lua b/diff/mobs_animal.diff/init.lua new file mode 100644 index 0000000..2ad60c2 --- /dev/null +++ b/diff/mobs_animal.diff/init.lua @@ -0,0 +1,25 @@ + +local path = minetest.get_modpath("mobs_animal") + +-- Load support for intllib. +local MP = minetest.get_modpath(minetest.get_current_modname()) +local S, NS = dofile(MP.."/intllib.lua") +mobs.intllib = S + +-- Animals + +dofile(path .. "/chicken.lua") -- JKmurray +dofile(path .. "/cow.lua") -- KrupnoPavel +dofile(path .. "/duck.lua") -- JKmurray, Tirifto +dofile(path .. "/rat.lua") -- PilzAdam +dofile(path .. "/sheep.lua") -- PilzAdam +dofile(path .. "/warthog.lua") -- KrupnoPavel +dofile(path .. "/bee.lua") -- KrupnoPavel +dofile(path .. "/bunny.lua") -- ExeterDad +dofile(path .. "/kitten.lua") -- Jordach/BFD +dofile(path .. "/penguin.lua") -- D00Med + + +dofile(path .. "/lucky_block.lua") + +print (S("[MOD] Mobs Redo 'Animals' loaded")) diff --git a/diff/mobs_animal.diff/init.lua.diff b/diff/mobs_animal.diff/init.lua.diff new file mode 100644 index 0000000..7bde266 --- /dev/null +++ b/diff/mobs_animal.diff/init.lua.diff @@ -0,0 +1,4 @@ +12a13 +> dofile(path .. "/duck.lua") -- JKmurray, Tirifto +19a21 +> diff --git a/diff/mobs_animal.diff/sheep.lua b/diff/mobs_animal.diff/sheep.lua new file mode 100644 index 0000000..3dab1bd --- /dev/null +++ b/diff/mobs_animal.diff/sheep.lua @@ -0,0 +1,210 @@ + +local S = mobs.intllib + + +local all_colours = { + {"black", S("Black"), "#000000b0"}, + {"blue", S("Blue"), "#015dbb70"}, + {"brown", S("Brown"), "#663300a0"}, + {"cyan", S("Cyan"), "#01ffd870"}, + {"dark_green", S("Dark Green"), "#005b0770"}, + {"dark_grey", S("Dark Grey"), "#303030b0"}, + {"green", S("Green"), "#61ff0170"}, + {"grey", S("Grey"), "#5b5b5bb0"}, + {"magenta", S("Magenta"), "#ff05bb70"}, + {"orange", S("Orange"), "#ff840170"}, + {"pink", S("Pink"), "#ff65b570"}, + {"red", S("Red"), "#ff0000a0"}, + {"violet", S("Violet"), "#2000c970"}, + {"white", S("White"), "#abababc0"}, + {"yellow", S("Yellow"), "#e3ff0070"}, +} + + +-- Sheep by PilzAdam, texture converted to minetest by AMMOnym from Summerfield pack + +for _, col in ipairs(all_colours) do + + mobs:register_mob("mobs_animal:sheep_"..col[1], { + type = "monster", + passive = false, + attack_type = "dogfight", + pathfinding = true, + reach = 2, + hp_min = 8, + hp_max = 10, + armor = 200, + collisionbox = {-0.5, -1, -0.5, 0.5, 0.3, 0.5}, + visual = "mesh", + mesh = "mobs_sheep.b3d", + textures = { + {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"}, + }, + gotten_texture = {"mobs_sheep_shaved.png"}, + gotten_mesh = "mobs_sheep_shaved.b3d", + makes_footstep_sound = true, + sounds = { + random = "mobs_sheep", + }, + walk_velocity = 1, + run_velocity = 2, + runaway = true, + jump = true, + drops = { + {name = "mobs:meat_raw", chance = 1, min = 1, max = 2}, + --{name = "wool:"..col[1], chance = 1, min = 1, max = 1}, + }, + water_damage = 1, + lava_damage = 5, + light_damage = 0, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 0, + stand_end = 80, + walk_start = 81, + walk_end = 100, + }, + follow = {"farming:wheat_harvested", "default:grass_5"}, + view_range = 8, + replace_rate = 10, + replace_what = {"default:grass_3", "default:grass_4", "default:grass_5", "farming:wheat_8"}, + replace_with = "air", + replace_offset = -1, + fear_height = 3, +--[[ + on_replace = function(self, pos, oldnode, newnode) + print ("---- replaced") ; return false -- false to keep node, true to replace + end, +]] + on_rightclick = function(self, clicker) + + --are we feeding? + if mobs:feed_tame(self, clicker, 8, true, true) then + + --if full grow fuzz + if self.gotten == false then + + self.object:set_properties({ + textures = {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"}, + mesh = "mobs_sheep.b3d", + }) + end + + return + end + + local item = clicker:get_wielded_item() + local itemname = item:get_name() + + --are we giving a haircut> + if itemname == "mobs:shears" then + + if self.gotten ~= false + or self.child ~= false + or not minetest.get_modpath("wool") then + return + end + + self.gotten = true -- shaved + + local obj = minetest.add_item( + self.object:getpos(), + ItemStack( "wool:" .. col[1] .. " " .. math.random(1, 3) ) + ) + + if obj then + + obj:setvelocity({ + x = math.random(-1, 1), + y = 5, + z = math.random(-1, 1) + }) + end + + item:add_wear(650) -- 100 uses + + clicker:set_wielded_item(item) + + self.object:set_properties({ + textures = {"mobs_sheep_shaved.png"}, + mesh = "mobs_sheep_shaved.b3d", + }) + + return + end + + local name = clicker:get_player_name() + + --are we coloring? + if itemname:find("dye:") then + + if self.gotten == false + and self.child == false + and self.tamed == true + and name == self.owner then + + local colr = string.split(itemname, ":")[2] + + for _,c in pairs(all_colours) do + + if c[1] == colr then + + local pos = self.object:getpos() + + self.object:remove() + + local mob = minetest.add_entity(pos, "mobs_animal:sheep_" .. colr) + local ent = mob:get_luaentity() + + ent.owner = name + ent.tamed = true + + -- take item + if not minetest.setting_getbool("creative_mode") then + item:take_item() + clicker:set_wielded_item(item) + end + + break + end + end + end + + return + end + + -- protect mod with mobs:protector item + if mobs:protect(self, clicker) then return end + + --are we capturing? + if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end + end + }) + + mobs:register_egg("mobs_animal:sheep_"..col[1], col[2] .. " " .. S("Sheep"), "wool_"..col[1]..".png", 1) + + -- compatibility + mobs:alias_mob("mobs:sheep_" .. col[1], "mobs_animal:sheep_" .. col[1]) + +end + + +local spawn_on = "default:dirt_with_grass" + +if minetest.get_modpath("ethereal") then + spawn_on = "ethereal:green_dirt" +end + +mobs:spawn({ + name = "mobs_animal:sheep_white", + nodes = {spawn_on}, + min_light = 10, + chance = 15000, + min_height = 0, + max_height = 31000, + day_toggle = true, +}) + + +mobs:alias_mob("mobs:sheep", "mobs_animal:sheep_white") -- compatibility diff --git a/diff/mobs_animal.diff/sheep.lua.diff b/diff/mobs_animal.diff/sheep.lua.diff new file mode 100644 index 0000000..bdc30b6 --- /dev/null +++ b/diff/mobs_animal.diff/sheep.lua.diff @@ -0,0 +1,87 @@ +29,31c29,33 +< stepheight = 0.6, +< type = "animal", +< passive = true, +--- +> type = "monster", +> passive = false, +> attack_type = "dogfight", +> pathfinding = true, +> reach = 2, +51d52 +< jump_height = 6, +53c54 +< {name = "mobs:mutton_raw", chance = 1, min = 1, max = 2}, +--- +> {name = "mobs:meat_raw", chance = 1, min = 1, max = 2}, +67c68 +< follow = {"farming:wheat", "default:grass_5"}, +--- +> follow = {"farming:wheat_harvested", "default:grass_5"}, +98d98 +< local name = clicker:get_player_name() +105d104 +< or name ~= self.owner +113c112 +< self.object:get_pos(), +--- +> self.object:getpos(), +137a137,138 +> local name = clicker:get_player_name() +> +152c153 +< local pos = self.object:get_pos() +--- +> local pos = self.object:getpos() +163c164 +< if not mobs.is_creative(clicker:get_player_name()) then +--- +> if not minetest.setting_getbool("creative_mode") then +184c185 +< mobs:register_egg("mobs_animal:sheep_"..col[1], S("@1 Sheep", col[2]), "wool_"..col[1]..".png", 1) +--- +> mobs:register_egg("mobs_animal:sheep_"..col[1], col[2] .. " " .. S("Sheep"), "wool_"..col[1]..".png", 1) +191a193,198 +> local spawn_on = "default:dirt_with_grass" +> +> if minetest.get_modpath("ethereal") then +> spawn_on = "ethereal:green_dirt" +> end +> +194,195c201 +< nodes = {"default:dirt_with_grass", "ethereal:green_dirt"}, +< neighbors = {"group:grass"}, +--- +> nodes = {spawn_on}, +197c203 +< chance = 5000, -- 15000 +--- +> chance = 15000, +199c205 +< max_height = 200, +--- +> max_height = 31000, +205,227d210 +< +< -- raw mutton +< minetest.register_craftitem(":mobs:mutton_raw", { +< description = S("Raw Mutton"), +< inventory_image = "mobs_mutton_raw.png", +< on_use = minetest.item_eat(2), +< groups = {food_meat_raw = 1, food_mutton_raw = 1, flammable = 2}, +< }) +< +< -- cooked mutton +< minetest.register_craftitem(":mobs:mutton_cooked", { +< description = S("Cooked Mutton"), +< inventory_image = "mobs_mutton_cooked.png", +< on_use = minetest.item_eat(6), +< groups = {food_meat = 1, food_mutton = 1, flammable = 2}, +< }) +< +< minetest.register_craft({ +< type = "cooking", +< output = "mobs:mutton_cooked", +< recipe = "mobs:mutton_raw", +< cooktime = 5, +< }) diff --git a/diff/mobs_animal.diff/sounds/mobs_bee.ogg b/diff/mobs_animal.diff/sounds/mobs_bee.ogg new file mode 100644 index 0000000..5317518 Binary files /dev/null and b/diff/mobs_animal.diff/sounds/mobs_bee.ogg differ diff --git a/diff/mobs_animal.diff/sounds/mobs_bunny.ogg b/diff/mobs_animal.diff/sounds/mobs_bunny.ogg new file mode 100644 index 0000000..32f614f Binary files /dev/null and b/diff/mobs_animal.diff/sounds/mobs_bunny.ogg differ diff --git a/diff/mobs_animal.diff/sounds/mobs_bunny_azure.ogg b/diff/mobs_animal.diff/sounds/mobs_bunny_azure.ogg new file mode 100644 index 0000000..e4ae957 Binary files /dev/null and b/diff/mobs_animal.diff/sounds/mobs_bunny_azure.ogg differ diff --git a/diff/mobs_animal.diff/sounds/mobs_chicken.ogg b/diff/mobs_animal.diff/sounds/mobs_chicken.ogg new file mode 100644 index 0000000..d37d9a2 Binary files /dev/null and b/diff/mobs_animal.diff/sounds/mobs_chicken.ogg differ diff --git a/diff/mobs_animal.diff/sounds/mobs_cow.ogg b/diff/mobs_animal.diff/sounds/mobs_cow.ogg new file mode 100644 index 0000000..aa2d465 Binary files /dev/null and b/diff/mobs_animal.diff/sounds/mobs_cow.ogg differ diff --git a/diff/mobs_animal.diff/sounds/mobs_duck.ogg b/diff/mobs_animal.diff/sounds/mobs_duck.ogg new file mode 100644 index 0000000..8f233e6 Binary files /dev/null and b/diff/mobs_animal.diff/sounds/mobs_duck.ogg differ diff --git a/diff/mobs_animal.diff/sounds/mobs_kitten.ogg b/diff/mobs_animal.diff/sounds/mobs_kitten.ogg new file mode 100644 index 0000000..021d3dc Binary files /dev/null and b/diff/mobs_animal.diff/sounds/mobs_kitten.ogg differ diff --git a/diff/mobs_animal.diff/sounds/mobs_pig.ogg b/diff/mobs_animal.diff/sounds/mobs_pig.ogg new file mode 100644 index 0000000..caac3e4 Binary files /dev/null and b/diff/mobs_animal.diff/sounds/mobs_pig.ogg differ diff --git a/diff/mobs_animal.diff/sounds/mobs_pig_angry.ogg b/diff/mobs_animal.diff/sounds/mobs_pig_angry.ogg new file mode 100644 index 0000000..d72e05c Binary files /dev/null and b/diff/mobs_animal.diff/sounds/mobs_pig_angry.ogg differ diff --git a/diff/mobs_animal.diff/sounds/mobs_rat.ogg b/diff/mobs_animal.diff/sounds/mobs_rat.ogg new file mode 100644 index 0000000..ca7b0ad Binary files /dev/null and b/diff/mobs_animal.diff/sounds/mobs_rat.ogg differ diff --git a/diff/mobs_animal.diff/sounds/mobs_sheep.ogg b/diff/mobs_animal.diff/sounds/mobs_sheep.ogg new file mode 100644 index 0000000..8adf505 Binary files /dev/null and b/diff/mobs_animal.diff/sounds/mobs_sheep.ogg differ diff --git a/diff/mobs_animal.diff/textures/mobs_bee.png b/diff/mobs_animal.diff/textures/mobs_bee.png new file mode 100644 index 0000000..654515f Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_bee.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_bee_inv.png b/diff/mobs_animal.diff/textures/mobs_bee_inv.png new file mode 100644 index 0000000..94d5ace Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_bee_inv.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_beehive.png b/diff/mobs_animal.diff/textures/mobs_beehive.png new file mode 100644 index 0000000..7bd1401 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_beehive.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_bucket_milk.png b/diff/mobs_animal.diff/textures/mobs_bucket_milk.png new file mode 100644 index 0000000..ac6d29e Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_bucket_milk.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_bunny_azure.png b/diff/mobs_animal.diff/textures/mobs_bunny_azure.png new file mode 100644 index 0000000..2b5aca4 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_bunny_azure.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_bunny_brown.png b/diff/mobs_animal.diff/textures/mobs_bunny_brown.png new file mode 100644 index 0000000..51f6154 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_bunny_brown.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_bunny_evil.png b/diff/mobs_animal.diff/textures/mobs_bunny_evil.png new file mode 100644 index 0000000..d2c4e92 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_bunny_evil.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_bunny_grey.png b/diff/mobs_animal.diff/textures/mobs_bunny_grey.png new file mode 100644 index 0000000..8525309 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_bunny_grey.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_bunny_inv.png b/diff/mobs_animal.diff/textures/mobs_bunny_inv.png new file mode 100644 index 0000000..0773378 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_bunny_inv.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_bunny_white.png b/diff/mobs_animal.diff/textures/mobs_bunny_white.png new file mode 100644 index 0000000..809c6fa Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_bunny_white.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_cheese.png b/diff/mobs_animal.diff/textures/mobs_cheese.png new file mode 100644 index 0000000..9e2dd9d Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_cheese.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_cheeseblock.png b/diff/mobs_animal.diff/textures/mobs_cheeseblock.png new file mode 100644 index 0000000..a6144d1 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_cheeseblock.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_chick.png b/diff/mobs_animal.diff/textures/mobs_chick.png new file mode 100644 index 0000000..01deaa8 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_chick.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_chicken.png b/diff/mobs_animal.diff/textures/mobs_chicken.png new file mode 100644 index 0000000..83e1c39 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_chicken.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_chicken_black.png b/diff/mobs_animal.diff/textures/mobs_chicken_black.png new file mode 100644 index 0000000..2ca0f47 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_chicken_black.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_chicken_cooked.png b/diff/mobs_animal.diff/textures/mobs_chicken_cooked.png new file mode 100644 index 0000000..7eb3a81 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_chicken_cooked.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_chicken_egg_fried.png b/diff/mobs_animal.diff/textures/mobs_chicken_egg_fried.png new file mode 100644 index 0000000..95c7a59 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_chicken_egg_fried.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_chicken_feather.png b/diff/mobs_animal.diff/textures/mobs_chicken_feather.png new file mode 100644 index 0000000..1f17dc2 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_chicken_feather.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_chicken_inv.png b/diff/mobs_animal.diff/textures/mobs_chicken_inv.png new file mode 100644 index 0000000..c7731f0 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_chicken_inv.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_chicken_raw.png b/diff/mobs_animal.diff/textures/mobs_chicken_raw.png new file mode 100644 index 0000000..067731e Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_chicken_raw.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_cooked_rat.png b/diff/mobs_animal.diff/textures/mobs_cooked_rat.png new file mode 100644 index 0000000..c54c236 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_cooked_rat.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_cow_brown.png b/diff/mobs_animal.diff/textures/mobs_cow_brown.png new file mode 100644 index 0000000..97c754a Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_cow_brown.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_cow_meat.png b/diff/mobs_animal.diff/textures/mobs_cow_meat.png new file mode 100644 index 0000000..9a8ede5 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_cow_meat.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_cow_straciatella.png b/diff/mobs_animal.diff/textures/mobs_cow_straciatella.png new file mode 100644 index 0000000..1db52da Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_cow_straciatella.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_cow_straciatella2.png b/diff/mobs_animal.diff/textures/mobs_cow_straciatella2.png new file mode 100644 index 0000000..254cd77 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_cow_straciatella2.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_duck_cooked.png b/diff/mobs_animal.diff/textures/mobs_duck_cooked.png new file mode 100644 index 0000000..3499344 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_duck_cooked.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_duck_drake.png b/diff/mobs_animal.diff/textures/mobs_duck_drake.png new file mode 100644 index 0000000..56304ab Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_duck_drake.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_duck_female.png b/diff/mobs_animal.diff/textures/mobs_duck_female.png new file mode 100644 index 0000000..b986bae Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_duck_female.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_duck_inv.png b/diff/mobs_animal.diff/textures/mobs_duck_inv.png new file mode 100644 index 0000000..862809d Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_duck_inv.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_duck_raw.png b/diff/mobs_animal.diff/textures/mobs_duck_raw.png new file mode 100644 index 0000000..d087eef Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_duck_raw.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_honey_block.png b/diff/mobs_animal.diff/textures/mobs_honey_block.png new file mode 100644 index 0000000..8f05e77 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_honey_block.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_honey_inv.png b/diff/mobs_animal.diff/textures/mobs_honey_inv.png new file mode 100644 index 0000000..182b3e2 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_honey_inv.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_kitten_ginger.png b/diff/mobs_animal.diff/textures/mobs_kitten_ginger.png new file mode 100755 index 0000000..f27e346 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_kitten_ginger.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_kitten_inv.png b/diff/mobs_animal.diff/textures/mobs_kitten_inv.png new file mode 100644 index 0000000..02c1670 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_kitten_inv.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_kitten_sandy.png b/diff/mobs_animal.diff/textures/mobs_kitten_sandy.png new file mode 100755 index 0000000..89f571d Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_kitten_sandy.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_kitten_splotchy.png b/diff/mobs_animal.diff/textures/mobs_kitten_splotchy.png new file mode 100755 index 0000000..0f9c1c5 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_kitten_splotchy.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_kitten_striped.png b/diff/mobs_animal.diff/textures/mobs_kitten_striped.png new file mode 100755 index 0000000..6ed9826 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_kitten_striped.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_penguin.png b/diff/mobs_animal.diff/textures/mobs_penguin.png new file mode 100644 index 0000000..5b346bc Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_penguin.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_pork_cooked.png b/diff/mobs_animal.diff/textures/mobs_pork_cooked.png new file mode 100644 index 0000000..03839f8 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_pork_cooked.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_pork_raw.png b/diff/mobs_animal.diff/textures/mobs_pork_raw.png new file mode 100644 index 0000000..1a97822 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_pork_raw.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_pumba.png b/diff/mobs_animal.diff/textures/mobs_pumba.png new file mode 100644 index 0000000..c87cbf8 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_pumba.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_rat.png b/diff/mobs_animal.diff/textures/mobs_rat.png new file mode 100644 index 0000000..fc5554d Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_rat.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_rat2.png b/diff/mobs_animal.diff/textures/mobs_rat2.png new file mode 100644 index 0000000..b7178ec Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_rat2.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_rat_inventory.png b/diff/mobs_animal.diff/textures/mobs_rat_inventory.png new file mode 100644 index 0000000..c701572 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_rat_inventory.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_sheep_base.png b/diff/mobs_animal.diff/textures/mobs_sheep_base.png new file mode 100644 index 0000000..a670bc1 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_sheep_base.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_sheep_shaved.png b/diff/mobs_animal.diff/textures/mobs_sheep_shaved.png new file mode 100644 index 0000000..c35df1a Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_sheep_shaved.png differ diff --git a/diff/mobs_animal.diff/textures/mobs_sheep_wool.png b/diff/mobs_animal.diff/textures/mobs_sheep_wool.png new file mode 100644 index 0000000..d657586 Binary files /dev/null and b/diff/mobs_animal.diff/textures/mobs_sheep_wool.png differ diff --git a/diff/mobs_horse.diff/README.txt b/diff/mobs_horse.diff/README.txt new file mode 100644 index 0000000..f3b40d4 --- /dev/null +++ b/diff/mobs_horse.diff/README.txt @@ -0,0 +1,7 @@ +Mobs_Horse +===================================================================== +Main: TenPlus1 +Lisc: MIT +Text: MIT + By Tirifto +Link: https://github.com/tenplus1/mob_horse diff --git a/diff/mobs_horse.diff/license.txt b/diff/mobs_horse.diff/license.txt new file mode 100644 index 0000000..1b1dc65 --- /dev/null +++ b/diff/mobs_horse.diff/license.txt @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright © 2016 TenPlus1 + © 2017 Tirifto + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/diff/mobs_horse.diff/textures/mobs_horse.png b/diff/mobs_horse.diff/textures/mobs_horse.png new file mode 100644 index 0000000..b5b5000 Binary files /dev/null and b/diff/mobs_horse.diff/textures/mobs_horse.png differ diff --git a/diff/mobs_horse.diff/textures/mobs_horseara.png b/diff/mobs_horse.diff/textures/mobs_horseara.png new file mode 100644 index 0000000..a20a83a Binary files /dev/null and b/diff/mobs_horse.diff/textures/mobs_horseara.png differ diff --git a/diff/mobs_horse.diff/textures/mobs_horsenom.png b/diff/mobs_horse.diff/textures/mobs_horsenom.png new file mode 100644 index 0000000..a17d0aa Binary files /dev/null and b/diff/mobs_horse.diff/textures/mobs_horsenom.png differ diff --git a/diff/mobs_horse.diff/textures/mobs_horsepeg.png b/diff/mobs_horse.diff/textures/mobs_horsepeg.png new file mode 100644 index 0000000..78ee935 Binary files /dev/null and b/diff/mobs_horse.diff/textures/mobs_horsepeg.png differ diff --git a/diff/mobs_horse.diff/textures/mobs_horseshoe_bronze.png b/diff/mobs_horse.diff/textures/mobs_horseshoe_bronze.png new file mode 100644 index 0000000..d4f115b Binary files /dev/null and b/diff/mobs_horse.diff/textures/mobs_horseshoe_bronze.png differ diff --git a/diff/mobs_horse.diff/textures/mobs_horseshoe_diamond.png b/diff/mobs_horse.diff/textures/mobs_horseshoe_diamond.png new file mode 100644 index 0000000..ebd0c64 Binary files /dev/null and b/diff/mobs_horse.diff/textures/mobs_horseshoe_diamond.png differ diff --git a/diff/mobs_horse.diff/textures/mobs_horseshoe_mese.png b/diff/mobs_horse.diff/textures/mobs_horseshoe_mese.png new file mode 100644 index 0000000..1d8ebea Binary files /dev/null and b/diff/mobs_horse.diff/textures/mobs_horseshoe_mese.png differ diff --git a/diff/mobs_horse.diff/textures/mobs_horseshoe_steel.png b/diff/mobs_horse.diff/textures/mobs_horseshoe_steel.png new file mode 100644 index 0000000..4820782 Binary files /dev/null and b/diff/mobs_horse.diff/textures/mobs_horseshoe_steel.png differ diff --git a/diff/mobs_monster.diff/init.lua b/diff/mobs_monster.diff/init.lua new file mode 100644 index 0000000..fbffc08 --- /dev/null +++ b/diff/mobs_monster.diff/init.lua @@ -0,0 +1,38 @@ + +local path = minetest.get_modpath("mobs_monster") + +-- Intllib +local S +if minetest.global_exists("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + S = intllib.make_gettext_pair() + else + -- Old method using text files. + S = intllib.Getter() + end +else + S = function(s) return s end +end +mobs.intllib = S + +-- Monsters + +dofile(path .. "/dirt_monster.lua") -- PilzAdam +dofile(path .. "/dungeon_master.lua") +dofile(path .. "/oerkki.lua") +dofile(path .. "/sand_monster.lua") +dofile(path .. "/stone_monster.lua") +-- dofile(path .. "/tree_monster.lua") +dofile(path .. "/lava_flan.lua") -- Zeg9 +dofile(path .. "/mese_monster.lua") +dofile(path .. "/spider.lua") -- AspireMint +dofile(path .. "/tree_monster_acacia.lua") +dofile(path .. "/tree_monster_aspen.lua") +dofile(path .. "/tree_monster_apple.lua") +dofile(path .. "/tree_monster_jungle.lua") +dofile(path .. "/tree_monster_pine.lua") + +dofile(path .. "/lucky_block.lua") + +print ("[MOD] Mobs Redo 'Monsters' loaded") diff --git a/diff/mobs_monster.diff/init.lua.diff b/diff/mobs_monster.diff/init.lua.diff new file mode 100644 index 0000000..282b725 --- /dev/null +++ b/diff/mobs_monster.diff/init.lua.diff @@ -0,0 +1,10 @@ +26c26 +< dofile(path .. "/tree_monster.lua") +--- +> -- dofile(path .. "/tree_monster.lua") +29a30,34 +> dofile(path .. "/tree_monster_acacia.lua") +> dofile(path .. "/tree_monster_aspen.lua") +> dofile(path .. "/tree_monster_apple.lua") +> dofile(path .. "/tree_monster_jungle.lua") +> dofile(path .. "/tree_monster_pine.lua") diff --git a/diff/mobs_monster.diff/mese_monster.lua b/diff/mobs_monster.diff/mese_monster.lua new file mode 100644 index 0000000..cd557e9 --- /dev/null +++ b/diff/mobs_monster.diff/mese_monster.lua @@ -0,0 +1,112 @@ + +local S = mobs.intllib + + +-- Mese Monster by Zeg9 + +mobs:register_mob("mobs_monster:mese_monster", { + type = "monster", + passive = false, + damage = 3, + attack_type = "shoot", + shoot_interval = 0.5, + arrow = "mobs_monster:mese_arrow", + shoot_offset = 2, + hp_min = 10, + hp_max = 25, + armor = 80, + collisionbox = {-0.5, -1.5, -0.5, 0.5, 0.5, 0.5}, + visual = "mesh", + mesh = "zmobs_mese_monster.x", + textures = { + {"zmobs_mese_monster.png"}, + {"zmobs_mese_monster2.png"}, + }, + blood_texture = "default_mese_crystal_fragment.png", + makes_footstep_sound = false, + sounds = { + random = "mobs_mesemonster", + }, + view_range = 10, + walk_velocity = 0.5, + run_velocity = 2, + jump = true, + jump_height = 8, + fall_damage = 0, + fall_speed = -6, + stepheight = 2.1, + drops = { + {name = "default:mese_crystal", chance = 9, min = 1, max = 3}, + {name = "default:mese_crystal_fragment", chance = 1, min = 1, max = 9}, + }, + water_damage = 1, + lava_damage = 1, + light_damage = 0, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 0, + stand_end = 14, + walk_start = 15, + walk_end = 38, + run_start = 40, + run_end = 63, + punch_start = 40, + punch_end = 63, + }, +}) + + +mobs:spawn({ + name = "mobs_monster:mese_monster", + nodes = {"default:stone"}, + max_light = 7, + chance = 5000, + active_object_count = 1, + max_height = -20, +}) + + +mobs:register_egg("mobs_monster:mese_monster", S("Mese Monster"), "default_mese_block.png", 1) + + +mobs:alias_mob("mobs:mese_monster", "mobs_monster:mese_monster") -- compatiblity + + +-- mese arrow (weapon) +mobs:register_arrow("mobs_monster:mese_arrow", { + visual = "sprite", +-- visual = "wielditem", + visual_size = {x = 0.5, y = 0.5}, + textures = {"default_mese_crystal_fragment.png"}, + --textures = {"default:mese_crystal_fragment"}, + velocity = 6, +-- rotate = 180, + + hit_player = function(self, player) + player:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = 2}, + }, nil) + end, + + hit_mob = function(self, player) + player:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = 2}, + }, nil) + end, + + hit_node = function(self, pos, node) + end +}) + +-- 9x mese crystal fragments = 1x mese crystal +minetest.register_craft({ + output = "default:mese_crystal", + recipe = { + {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, + {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, + {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, + } +}) diff --git a/diff/mobs_monster.diff/mese_monster.lua.diff b/diff/mobs_monster.diff/mese_monster.lua.diff new file mode 100644 index 0000000..b6c36c0 --- /dev/null +++ b/diff/mobs_monster.diff/mese_monster.lua.diff @@ -0,0 +1,2 @@ +22a23 +> {"zmobs_mese_monster2.png"}, diff --git a/diff/mobs_monster.diff/sounds/mobs_dirtmonster.ogg b/diff/mobs_monster.diff/sounds/mobs_dirtmonster.ogg new file mode 100644 index 0000000..87fdab0 Binary files /dev/null and b/diff/mobs_monster.diff/sounds/mobs_dirtmonster.ogg differ diff --git a/diff/mobs_monster.diff/sounds/mobs_dungeonmaster.ogg b/diff/mobs_monster.diff/sounds/mobs_dungeonmaster.ogg new file mode 100644 index 0000000..4ac5f4a Binary files /dev/null and b/diff/mobs_monster.diff/sounds/mobs_dungeonmaster.ogg differ diff --git a/diff/mobs_monster.diff/sounds/mobs_fireball.ogg b/diff/mobs_monster.diff/sounds/mobs_fireball.ogg new file mode 100644 index 0000000..bdc4ac2 Binary files /dev/null and b/diff/mobs_monster.diff/sounds/mobs_fireball.ogg differ diff --git a/diff/mobs_monster.diff/sounds/mobs_lavaflan.ogg b/diff/mobs_monster.diff/sounds/mobs_lavaflan.ogg new file mode 100644 index 0000000..08c8f1d Binary files /dev/null and b/diff/mobs_monster.diff/sounds/mobs_lavaflan.ogg differ diff --git a/diff/mobs_monster.diff/sounds/mobs_mesemonster.ogg b/diff/mobs_monster.diff/sounds/mobs_mesemonster.ogg new file mode 100644 index 0000000..c354dfd Binary files /dev/null and b/diff/mobs_monster.diff/sounds/mobs_mesemonster.ogg differ diff --git a/diff/mobs_monster.diff/sounds/mobs_oerkki.ogg b/diff/mobs_monster.diff/sounds/mobs_oerkki.ogg new file mode 100644 index 0000000..978a6b2 Binary files /dev/null and b/diff/mobs_monster.diff/sounds/mobs_oerkki.ogg differ diff --git a/diff/mobs_monster.diff/sounds/mobs_sandmonster.ogg b/diff/mobs_monster.diff/sounds/mobs_sandmonster.ogg new file mode 100644 index 0000000..2feae6a Binary files /dev/null and b/diff/mobs_monster.diff/sounds/mobs_sandmonster.ogg differ diff --git a/diff/mobs_monster.diff/sounds/mobs_spider.ogg b/diff/mobs_monster.diff/sounds/mobs_spider.ogg new file mode 100644 index 0000000..4105006 Binary files /dev/null and b/diff/mobs_monster.diff/sounds/mobs_spider.ogg differ diff --git a/diff/mobs_monster.diff/sounds/mobs_stonemonster.ogg b/diff/mobs_monster.diff/sounds/mobs_stonemonster.ogg new file mode 100644 index 0000000..2d2b9f1 Binary files /dev/null and b/diff/mobs_monster.diff/sounds/mobs_stonemonster.ogg differ diff --git a/diff/mobs_monster.diff/sounds/mobs_treemonster.ogg b/diff/mobs_monster.diff/sounds/mobs_treemonster.ogg new file mode 100644 index 0000000..ce4e11e Binary files /dev/null and b/diff/mobs_monster.diff/sounds/mobs_treemonster.ogg differ diff --git a/diff/mobs_monster.diff/textures/mobs_cobweb.png b/diff/mobs_monster.diff/textures/mobs_cobweb.png new file mode 100644 index 0000000..e675345 Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_cobweb.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_dirt_monster.png b/diff/mobs_monster.diff/textures/mobs_dirt_monster.png new file mode 100644 index 0000000..562f278 Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_dirt_monster.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_dungeon_master.png b/diff/mobs_monster.diff/textures/mobs_dungeon_master.png new file mode 100755 index 0000000..2161ec1 Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_dungeon_master.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_dungeon_master2.png b/diff/mobs_monster.diff/textures/mobs_dungeon_master2.png new file mode 100644 index 0000000..494b61c Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_dungeon_master2.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_dungeon_master3.png b/diff/mobs_monster.diff/textures/mobs_dungeon_master3.png new file mode 100644 index 0000000..12ec035 Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_dungeon_master3.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_dungeon_master4.png b/diff/mobs_monster.diff/textures/mobs_dungeon_master4.png new file mode 100644 index 0000000..f2ff63c Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_dungeon_master4.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_fireball.png b/diff/mobs_monster.diff/textures/mobs_fireball.png new file mode 100644 index 0000000..1142c32 Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_fireball.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_oerkki.png b/diff/mobs_monster.diff/textures/mobs_oerkki.png new file mode 100644 index 0000000..63c72e4 Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_oerkki.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_oerkki2.png b/diff/mobs_monster.diff/textures/mobs_oerkki2.png new file mode 100644 index 0000000..34f878d Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_oerkki2.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_pick_lava.png b/diff/mobs_monster.diff/textures/mobs_pick_lava.png new file mode 100644 index 0000000..62a02a8 Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_pick_lava.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_sand_monster.png b/diff/mobs_monster.diff/textures/mobs_sand_monster.png new file mode 100644 index 0000000..75fcc4b Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_sand_monster.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_spider.png b/diff/mobs_monster.diff/textures/mobs_spider.png new file mode 100644 index 0000000..a416029 Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_spider.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_stone_monster.png b/diff/mobs_monster.diff/textures/mobs_stone_monster.png new file mode 100644 index 0000000..8f02f90 Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_stone_monster.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_stone_monster2.png b/diff/mobs_monster.diff/textures/mobs_stone_monster2.png new file mode 100644 index 0000000..22824cf Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_stone_monster2.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_tree_monster_acacia.png b/diff/mobs_monster.diff/textures/mobs_tree_monster_acacia.png new file mode 100644 index 0000000..372b0ba Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_tree_monster_acacia.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_tree_monster_apple.png b/diff/mobs_monster.diff/textures/mobs_tree_monster_apple.png new file mode 100644 index 0000000..4426a2f Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_tree_monster_apple.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_tree_monster_aspen.png b/diff/mobs_monster.diff/textures/mobs_tree_monster_aspen.png new file mode 100644 index 0000000..1dce176 Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_tree_monster_aspen.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_tree_monster_jungle.png b/diff/mobs_monster.diff/textures/mobs_tree_monster_jungle.png new file mode 100644 index 0000000..dd39799 Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_tree_monster_jungle.png differ diff --git a/diff/mobs_monster.diff/textures/mobs_tree_monster_pine.png b/diff/mobs_monster.diff/textures/mobs_tree_monster_pine.png new file mode 100644 index 0000000..42947fc Binary files /dev/null and b/diff/mobs_monster.diff/textures/mobs_tree_monster_pine.png differ diff --git a/diff/mobs_monster.diff/textures/zmobs_lava_flan.png b/diff/mobs_monster.diff/textures/zmobs_lava_flan.png new file mode 100644 index 0000000..b9b3d57 Binary files /dev/null and b/diff/mobs_monster.diff/textures/zmobs_lava_flan.png differ diff --git a/diff/mobs_monster.diff/textures/zmobs_lava_flan2.png b/diff/mobs_monster.diff/textures/zmobs_lava_flan2.png new file mode 100644 index 0000000..08e79f3 Binary files /dev/null and b/diff/mobs_monster.diff/textures/zmobs_lava_flan2.png differ diff --git a/diff/mobs_monster.diff/textures/zmobs_lava_flan3.png b/diff/mobs_monster.diff/textures/zmobs_lava_flan3.png new file mode 100644 index 0000000..820af98 Binary files /dev/null and b/diff/mobs_monster.diff/textures/zmobs_lava_flan3.png differ diff --git a/diff/mobs_monster.diff/textures/zmobs_lava_orb.png b/diff/mobs_monster.diff/textures/zmobs_lava_orb.png new file mode 100644 index 0000000..bf85274 Binary files /dev/null and b/diff/mobs_monster.diff/textures/zmobs_lava_orb.png differ diff --git a/diff/mobs_monster.diff/textures/zmobs_mese_monster.png b/diff/mobs_monster.diff/textures/zmobs_mese_monster.png new file mode 100644 index 0000000..ab860e8 Binary files /dev/null and b/diff/mobs_monster.diff/textures/zmobs_mese_monster.png differ diff --git a/diff/mobs_monster.diff/textures/zmobs_mese_monster2.png b/diff/mobs_monster.diff/textures/zmobs_mese_monster2.png new file mode 100644 index 0000000..0e0be99 Binary files /dev/null and b/diff/mobs_monster.diff/textures/zmobs_mese_monster2.png differ diff --git a/diff/mobs_monster.diff/tree_monster.lua b/diff/mobs_monster.diff/tree_monster.lua new file mode 100644 index 0000000..1c87ed4 --- /dev/null +++ b/diff/mobs_monster.diff/tree_monster.lua @@ -0,0 +1,74 @@ + +local S = mobs.intllib + + +-- Tree Monster (or Tree Gollum) by PilzAdam + +mobs:register_mob("mobs_monster:tree_monster", { + type = "monster", + passive = false, + attack_type = "dogfight", + attack_animals = true, + --specific_attack = {"player", "mobs_animal:chicken"}, + reach = 2, + damage = 2, + hp_min = 7, + hp_max = 33, + armor = 100, + collisionbox = {-0.4, -1, -0.4, 0.4, 0.8, 0.4}, + visual = "mesh", + mesh = "mobs_tree_monster.b3d", + textures = { + {"mobs_tree_monster_acacia.png"}, + {"mobs_tree_monster_aspen.png"}, + {"mobs_tree_monster_jungle.png"}, + {"mobs_tree_monster_pine.png"}, + {"mobs_tree_monster_tree.png"}, + }, + blood_texture = "default_wood.png", + makes_footstep_sound = true, + sounds = { + random = "mobs_treemonster", + }, + walk_velocity = 1, + run_velocity = 3, + jump = true, + view_range = 15, + drops = { + {name = "default:sapling", chance = 3, min = 1, max = 2}, + {name = "default:junglesapling", chance = 3, min = 1, max = 2}, + {name = "default:apple", chance = 2, min = 1, max=3}, + }, + water_damage = 0, + lava_damage = 0, + light_damage = 2, + fall_damage = 0, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 0, + stand_end = 24, + walk_start = 25, + walk_end = 47, + run_start = 48, + run_end = 62, + punch_start = 48, + punch_end = 62, + }, +}) + + +mobs:spawn({ + name = "mobs_monster:tree_monster", + nodes = {"default:leaves", "default:jungleleaves", "default:acacia_leaves", "default:aspen_leaves"}, + max_light = 7, + chance = 7000, + min_height = 0, + day_toggle = false, +}) + + +mobs:register_egg("mobs_monster:tree_monster", S("Tree Monster"), "default_tree_top.png", 1) + + +mobs:alias_mob("mobs:tree_monster", "mobs_monster:tree_monster") -- compatibility diff --git a/diff/mobs_monster.diff/tree_monster_acacia.lua b/diff/mobs_monster.diff/tree_monster_acacia.lua new file mode 100644 index 0000000..130e920 --- /dev/null +++ b/diff/mobs_monster.diff/tree_monster_acacia.lua @@ -0,0 +1,67 @@ + +local S = mobs.intllib + + +-- Tree Monster (or Tree Gollum) by PilzAdam + +mobs:register_mob("mobs_monster:tree_monster_acacia", { + type = "monster", + passive = false, + attack_type = "dogfight", + attack_animals = true, + --specific_attack = {"player", "mobs_animal:chicken"}, + reach = 2, + damage = 2, + hp_min = 7, + hp_max = 33, + armor = 100, + collisionbox = {-0.4, -1, -0.4, 0.4, 0.8, 0.4}, + visual = "mesh", + mesh = "mobs_tree_monster.b3d", + textures = { + {"mobs_tree_monster_acacia.png"}, + }, + blood_texture = "default_acacia_wood.png", + makes_footstep_sound = true, + sounds = { + random = "mobs_treemonster", + }, + walk_velocity = 1, + run_velocity = 3, + jump = true, + view_range = 15, + drops = { + {name = "default:acacia_sapling", chance = 3, min = 1, max = 2}, + }, + water_damage = 0, + lava_damage = 0, + light_damage = 2, + fall_damage = 0, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 0, + stand_end = 24, + walk_start = 25, + walk_end = 47, + run_start = 48, + run_end = 62, + punch_start = 48, + punch_end = 62, + }, +}) + + +mobs:spawn({ + name = "mobs_monster:tree_monster_acacia", + nodes = {"default:acacia_leaves"}, + max_light = 7, + chance = 7000, + min_height = 0, + day_toggle = false, +}) + + +mobs:register_egg("mobs_monster:tree_monster_acacia", S("Acacia Tree Monster"), "default_tree_top.png", 1) + + diff --git a/diff/mobs_monster.diff/tree_monster_apple.lua b/diff/mobs_monster.diff/tree_monster_apple.lua new file mode 100644 index 0000000..383e10d --- /dev/null +++ b/diff/mobs_monster.diff/tree_monster_apple.lua @@ -0,0 +1,69 @@ + +local S = mobs.intllib + + +-- Tree Monster (or Tree Gollum) by PilzAdam + +mobs:register_mob("mobs_monster:tree_monster_apple", { + type = "monster", + passive = false, + attack_type = "dogfight", + attack_animals = true, + --specific_attack = {"player", "mobs_animal:chicken"}, + reach = 2, + damage = 2, + hp_min = 7, + hp_max = 33, + armor = 100, + collisionbox = {-0.4, -1, -0.4, 0.4, 0.8, 0.4}, + visual = "mesh", + mesh = "mobs_tree_monster.b3d", + textures = { + {"mobs_tree_monster_apple.png"}, + }, + blood_texture = "default_wood.png", + makes_footstep_sound = true, + sounds = { + random = "mobs_treemonster", + }, + walk_velocity = 1, + run_velocity = 3, + jump = true, + view_range = 15, + drops = { + {name = "default:sapling", chance = 3, min = 1, max = 2}, + {name = "default:apple", chance = 2, min = 1, max=3}, + }, + water_damage = 0, + lava_damage = 0, + light_damage = 2, + fall_damage = 0, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 0, + stand_end = 24, + walk_start = 25, + walk_end = 47, + run_start = 48, + run_end = 62, + punch_start = 48, + punch_end = 62, + }, +}) + + +mobs:spawn({ + name = "mobs_monster:tree_monster_apple", + nodes = {"default:leaves"}, + max_light = 7, + chance = 7000, + min_height = 0, + day_toggle = false, +}) + + +mobs:register_egg("mobs_monster:tree_monster", S("Apple Tree Monster"), "default_tree_top.png", 1) + + +--mobs:alias_mob("mobs:tree_monster", "mobs_monster:tree_monster", "mobs_monster:tree_monster_apple") -- compatibility diff --git a/diff/mobs_monster.diff/tree_monster_aspen.lua b/diff/mobs_monster.diff/tree_monster_aspen.lua new file mode 100644 index 0000000..9ce33c5 --- /dev/null +++ b/diff/mobs_monster.diff/tree_monster_aspen.lua @@ -0,0 +1,68 @@ + +local S = mobs.intllib + + +-- Tree Monster (or Tree Gollum) by PilzAdam + +mobs:register_mob("mobs_monster:tree_monster_aspen", { + type = "monster", + passive = false, + attack_type = "dogfight", + attack_animals = true, + --specific_attack = {"player", "mobs_animal:chicken"}, + reach = 2, + damage = 2, + hp_min = 7, + hp_max = 33, + armor = 100, + collisionbox = {-0.4, -1, -0.4, 0.4, 0.8, 0.4}, + visual = "mesh", + mesh = "mobs_tree_monster.b3d", + textures = { + {"mobs_tree_monster_aspen.png"}, + }, + blood_texture = "default_aspen_wood.png", + makes_footstep_sound = true, + sounds = { + random = "mobs_treemonster", + }, + walk_velocity = 1, + run_velocity = 3, + jump = true, + view_range = 15, + drops = { + {name = "default:aspen_sapling", chance = 3, min = 1, max = 2}, + }, + water_damage = 0, + lava_damage = 0, + light_damage = 2, + fall_damage = 0, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 0, + stand_end = 24, + walk_start = 25, + walk_end = 47, + run_start = 48, + run_end = 62, + punch_start = 48, + punch_end = 62, + }, +}) + + +mobs:spawn({ + name = "mobs_monster:tree_monster_aspen", + nodes = {"default:aspen_leaves"}, + max_light = 7, + chance = 7000, + min_height = 0, + day_toggle = false, +}) + + +mobs:register_egg("mobs_monster:tree_monster_aspen", S("Aspen Tree Monster"), "default_tree_top.png", 1) + + +--mobs:alias_mob("mobs_monster:tree_monster_aspen") -- compatibility diff --git a/diff/mobs_monster.diff/tree_monster_jungle.lua b/diff/mobs_monster.diff/tree_monster_jungle.lua new file mode 100644 index 0000000..956fe63 --- /dev/null +++ b/diff/mobs_monster.diff/tree_monster_jungle.lua @@ -0,0 +1,68 @@ + +local S = mobs.intllib + + +-- Tree Monster (or Tree Gollum) by PilzAdam + +mobs:register_mob("mobs_monster:tree_monster_jungle", { + type = "monster", + passive = false, + attack_type = "dogfight", + attack_animals = true, + --specific_attack = {"player", "mobs_animal:chicken"}, + reach = 2, + damage = 2, + hp_min = 7, + hp_max = 33, + armor = 100, + collisionbox = {-0.4, -1, -0.4, 0.4, 0.8, 0.4}, + visual = "mesh", + mesh = "mobs_tree_monster.b3d", + textures = { + {"mobs_tree_monster_jungle.png"}, + }, + blood_texture = "default_junglewood.png", + makes_footstep_sound = true, + sounds = { + random = "mobs_treemonster", + }, + walk_velocity = 1, + run_velocity = 3, + jump = true, + view_range = 15, + drops = { + {name = "default:junglesapling", chance = 3, min = 1, max = 2}, + }, + water_damage = 0, + lava_damage = 0, + light_damage = 2, + fall_damage = 0, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 0, + stand_end = 24, + walk_start = 25, + walk_end = 47, + run_start = 48, + run_end = 62, + punch_start = 48, + punch_end = 62, + }, +}) + + +mobs:spawn({ + name = "mobs_monster:tree_monster_jungle", + nodes = {"default:jungleleaves"}, + max_light = 7, + chance = 7000, + min_height = 0, + day_toggle = false, +}) + + +mobs:register_egg("mobs_monster:tree_monster_jungle", S("Jungle Tree Monster"), "default_tree_top.png", 1) + + +--mobs:alias_mob("mobs_monster:tree_monster_jungle") -- compatibility diff --git a/diff/mobs_monster.diff/tree_monster_pine.lua b/diff/mobs_monster.diff/tree_monster_pine.lua new file mode 100644 index 0000000..18f225f --- /dev/null +++ b/diff/mobs_monster.diff/tree_monster_pine.lua @@ -0,0 +1,68 @@ + +local S = mobs.intllib + + +-- Tree Monster (or Tree Gollum) by PilzAdam + +mobs:register_mob("mobs_monster:tree_monster_pine", { + type = "monster", + passive = false, + attack_type = "dogfight", + attack_animals = true, + --specific_attack = {"player", "mobs_animal:chicken"}, + reach = 2, + damage = 2, + hp_min = 7, + hp_max = 33, + armor = 100, + collisionbox = {-0.4, -1, -0.4, 0.4, 0.8, 0.4}, + visual = "mesh", + mesh = "mobs_tree_monster.b3d", + textures = { + {"mobs_tree_monster_pine.png"}, + }, + blood_texture = "default_pine_wood.png", + makes_footstep_sound = true, + sounds = { + random = "mobs_treemonster", + }, + walk_velocity = 1, + run_velocity = 3, + jump = true, + view_range = 15, + drops = { + {name = "default:pine_sapling", chance = 3, min = 1, max = 2}, + }, + water_damage = 0, + lava_damage = 0, + light_damage = 2, + fall_damage = 0, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 0, + stand_end = 24, + walk_start = 25, + walk_end = 47, + run_start = 48, + run_end = 62, + punch_start = 48, + punch_end = 62, + }, +}) + + +mobs:spawn({ + name = "mobs_monster:tree_monster_pine", + nodes = {"default:pine_needles"}, + max_light = 7, + chance = 7000, + min_height = 0, + day_toggle = false, +}) + + +mobs:register_egg("mobs_monster:tree_monster_pine", S("Pine Tree Monster"), "default_tree_top.png", 1) + + +--mobs:alias_mob("mobs_monster:tree_monster_pine") -- compatibility diff --git a/diff/mobs_redo.diff/crafts.lua b/diff/mobs_redo.diff/crafts.lua new file mode 100644 index 0000000..7257388 --- /dev/null +++ b/diff/mobs_redo.diff/crafts.lua @@ -0,0 +1,123 @@ + +local S = mobs.intllib + +-- name tag +minetest.register_craftitem("mobs:nametag", { + description = S("Name Tag"), + inventory_image = "mobs_nametag.png", +}) + +if minetest.get_modpath("dye") and minetest.get_modpath("farming") then + minetest.register_craft({ + type = "shapeless", + output = "mobs:nametag", + recipe = {"default:paper", "dye:black", "farming:string"}, + }) +end + +-- leather +minetest.register_craftitem("mobs:leather", { + description = S("Leather"), + inventory_image = "mobs_leather.png", +}) + +-- raw meat +minetest.register_craftitem("mobs:meat_raw", { + description = S("Raw Meat"), + inventory_image = "mobs_meat_raw.png", + on_use = minetest.item_eat(3), +}) + +-- cooked meat +minetest.register_craftitem("mobs:meat", { + description = S("Meat"), + inventory_image = "mobs_meat.png", + on_use = minetest.item_eat(8), +}) + +minetest.register_craft({ + type = "cooking", + output = "mobs:meat", + recipe = "mobs:meat_raw", + cooktime = 5, +}) + +-- lasso +minetest.register_tool("mobs:lasso", { + description = S("Lasso (right-click animal to put in inventory)"), + inventory_image = "mobs_magic_lasso.png", +}) + +if minetest.get_modpath("farming") then + minetest.register_craft({ + output = "mobs:lasso", + recipe = { + {"farming:string", "", "farming:string"}, + {"", "default:diamond", ""}, + {"farming:string", "", "farming:string"}, + } + }) +end + +minetest.register_alias("mobs:magic_lasso", "mobs:lasso") + +-- net +minetest.register_tool("mobs:net", { + description = S("Net (right-click animal to put in inventory)"), + inventory_image = "mobs_net.png", +}) + +if minetest.get_modpath("farming") then + minetest.register_craft({ + output = "mobs:net", + recipe = { + {"group:stick", "", "group:stick"}, + {"group:stick", "", "group:stick"}, + {"farming:string", "group:stick", "farming:string"}, + } + }) +end + +-- shears (right click to shear animal) +minetest.register_tool("mobs:shears", { + description = S("Steel Shears (right-click to shear)"), + inventory_image = "mobs_shears.png", +}) + +minetest.register_craft({ + output = 'mobs:shears', + recipe = { + {'', 'default:steel_ingot', ''}, + {'', 'group:stick', 'default:steel_ingot'}, + } +}) + +-- protection rune +minetest.register_craftitem("mobs:protector", { + description = S("Mob Protection Rune"), + inventory_image = "mobs_protector.png", +}) + +minetest.register_craft({ + output = "mobs:protector", + recipe = { + {"default:stone", "default:stone", "default:stone"}, + {"default:stone", "default:goldblock", "default:stone"}, + {"default:stone", "default:stone", "default:stone"}, + } +}) + +-- saddle +minetest.register_craftitem("mobs:saddle", { + description = S("Saddle"), + inventory_image = "mobs_saddle.png" +}) + +minetest.register_craft({ + output = "mobs:saddle", + recipe = { + {"mobs:leather", "mobs:leather", "mobs:leather"}, + {"mobs:leather", "default:steel_ingot", "mobs:leather"}, + {"mobs:leather", "default:steel_ingot", "mobs:leather"}, + } +}) diff --git a/diff/mobs_redo.diff/crafts.lua.diff b/diff/mobs_redo.diff/crafts.lua.diff new file mode 100644 index 0000000..362a1c1 --- /dev/null +++ b/diff/mobs_redo.diff/crafts.lua.diff @@ -0,0 +1,68 @@ +8d7 +< groups = {flammable = 2}, +23d21 +< groups = {flammable = 2}, +31d28 +< groups = {food_meat_raw = 1, flammable = 2}, +39d35 +< groups = {food_meat = 1, flammable = 2}, +53d48 +< groups = {flammable = 2}, +73d67 +< groups = {flammable = 2}, +91d84 +< groups = {flammable = 2}, +106d98 +< groups = {flammable = 2}, +121,122c113 +< inventory_image = "mobs_saddle.png", +< groups = {flammable = 2}, +--- +> inventory_image = "mobs_saddle.png" +132,177d122 +< }) +< +< -- mob fence (looks like normal fence but collision is 2 high) +< default.register_fence("mobs:fence_wood", { +< description = S("Mob Fence"), +< texture = "default_wood.png", +< material = "default:fence_wood", +< groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, +< sounds = default.node_sound_wood_defaults(), +< collision_box = { +< type = "fixed", +< fixed = { +< {-0.5, -0.5, -0.5, 0.5, 1.9, 0.5}, +< }, +< }, +< }) +< +< -- items that can be used as fuel +< minetest.register_craft({ +< type = "fuel", +< recipe = "mobs:nametag", +< burntime = 3, +< }) +< +< minetest.register_craft({ +< type = "fuel", +< recipe = "mobs:lasso", +< burntime = 7, +< }) +< +< minetest.register_craft({ +< type = "fuel", +< recipe = "mobs:net", +< burntime = 8, +< }) +< +< minetest.register_craft({ +< type = "fuel", +< recipe = "mobs:leather", +< burntime = 4, +< }) +< +< minetest.register_craft({ +< type = "fuel", +< recipe = "mobs:saddle", +< burntime = 7, diff --git a/diff/mobs_redo.diff/readme.MD b/diff/mobs_redo.diff/readme.MD new file mode 100644 index 0000000..ae879e5 --- /dev/null +++ b/diff/mobs_redo.diff/readme.MD @@ -0,0 +1,72 @@ + +MOBS REDO for MINETEST + +Built from PilzAdam's original Simple Mobs with additional mobs by KrupnoPavel, Zeg9, ExeterDad and AspireMint. + + +This mod contains the API only for adding your own mobs into the world, so please use the additional modpacks to add animals, monsters etc. + + +https://forum.minetest.net/viewtopic.php?f=11&t=9917 + + +Crafts: + + - Nametag (paper, black dye, string) can be used right-click on a tamed mob to give them a name. + - Nets can be used to right-click tamed mobs to pick them up and place inside inventory as a spawn egg. + - Magic Lasso is similar to nets but with a better chance of picking up larger mobs. + - Shears are used to right-click sheep and return 1-3 wool. + - Protection Rune lets you protect tamed mobs from harm by other players + +Lucky Blocks: 9 + + +Changelog: +- 1.37- Added support for Raymoo's CMI (common mob interface) mod: https://forum.minetest.net/viewtopic.php?f=9&t=15448 +- 1.36- Death check added, if mob dies in fire/lava/with lava pick then drops are cooked +- 1.35- Added owner_loyal flag for owned mobs to attack player enemies, also fixed group_attack +- 1.34- Added function to fly mob using directional movement (thanks D00Med for flying code) +- 1.33- Added functions to mount ride mobs (mobs.attach, mobs.detach, mobs.drive) many thanks to Blert2112 +- 1.32- Added new spawn check to count specific mobs AND new minetest.conf setting to chance spawn chance and numbers, added ability to protect tamed mobs +- 1.31- Added 'attack_animals' and 'specific_attack' flags for custom monster attacks, also 'mob_difficulty' .conf setting to make mobs harder. +- 1.30- Added support for invisibility mod (mobs cant attack what they cant see), tweaked and tidied code +- 1.29- Split original Mobs Redo into a modpack to make it easier to disable mob sets (animal, monster, npc) or simply use the Api itself for your own mod +- 1.28- New damage system added with ability for mob to be immune to weapons or healed by them :) +- 1.27- Added new sheep, lava flan and spawn egg textures. New Lava Pick tool smelts what you dig. New atan checking function. +- 1.26- Pathfinding feature added thanks to rnd, when monsters attack they become scary smart in finding you :) also, beehive produces honey now :) +- 1.25- Mobs no longer spawn within 12 blocks of player or despawn within same range, spawners now have player detection, Code tidy and tweak. +- 1.24- Added feature where certain animals run away when punched (runaway = true in mob definition) +- 1.23- Added mob spawner block for admin to setup spawners in-game (place and right click to enter settings) +- 1.22- Added ability to name tamed animals and npc using nametags, also npc will attack anyone who punches them apart from owner +- 1.21- Added some more error checking to reduce serialize.h error and added height checks for falling off cliffs (thanks cmdskp) +- 1.20- Error checking added to remove bad mobs, out of map limit mobs and stop serialize.h error +- 1.19- Chickens now drop egg items instead of placing the egg, also throwing eggs result in 1/8 chance of spawning chick +- 1.18- Added docile_by_day flag so that monsters will not attack automatically during daylight hours unless hit first +- 1.17- Added 'dogshoot' attack type, shoots when out of reach, melee attack when in reach, also api tweaks and self.reach added +- 1.16- Mobs follow multiple items now, Npc's can breed +- 1.15- Added Feeding/Taming/Breeding function, right-click to pick up any sheep with X mark on them and replace with new one to fix compatibility. +- 1.14- All .self variables saved in staticdata, Fixed self.health bug +- 1.13- Added capture function (thanks blert2112) chance of picking up mob with hand; net; magic lasso, replaced some .x models with newer .b3d one's +- 1.12- Added animal ownership so that players cannot steal your tamed animals +- 1.11- Added flying mobs (and swimming), fly=true and fly_in="air" or "deafult:water_source" for fishy +- 1,10- Footstep removed (use replace), explosion routine added for exploding mobs. +- 1.09- reworked breeding routine, added mob rotation value, added footstep feature, added jumping mobs with sounds feature, added magic lasso for picking up animals +- 1.08- Mob throwing attack has been rehauled so that they can damage one another, also drops and on_die function added +- 1.07- Npc's can now be set to follow player or stand by using self.order and self.owner variables +- beta- Npc mob added, kills monsters, attacks player when punched, right click with food to heal or gold lump for drop +- 1.06- Changed recovery times after breeding, and time taken to grow up (can be sped up by feeding baby animal) +- 1.05- Added ExeterDad's bunny's which can be picked up and tamed with 4 carrots from farming redo or farming_plus, also shears added to get wool from sheep and lastly Jordach/BSD's kitten +- 1.04- Added mating for sheep, cows and hogs... feed animals to make horny and hope for a baby which is half size, will grow up quick though :) +- 1.03- Added mob drop/replace feature so that chickens can drop eggs, cow/sheep can eat grass/wheat etc. +- 1.02- Sheared sheep are remembered and spawn shaven, Warthogs will attack when threatened, Api additions +- 1.01- Mobs that suffer fall damage or die in water/lava/sunlight will now drop items +- 1.0 - more work on Api so that certain mobs can float in water while some sink like a brick :) +- 0.9 - Spawn eggs added for all mobs (admin only, cannot be placed in protected areas)... Api tweaked +- 0.8 - Added sounds to monster mobs (thanks Cyberpangolin for the sfx) and also chicken sound +- 0.7 - mobs.protected switch added to api.lua, when set to 1 mobs no longer spawn in protected areas, also bug fixes +- 0.6 - Api now supports multi-textured mobs, e.g oerkki, dungeon master, rats and chickens have random skins when spawning (sheep fix TODO), also new Honey block +- 0.5 - Mobs now float in water, die from falling, and some code improvements +- 0.4 - Dungeon Masters and Mese Monsters have much better aim due to shoot_offset, also they can both shoot through nodes that aren't walkable (flowers, grass etc) plus new sheep sound :) +- 0.3 - Added LOTT's Spider mob, made Cobwebs, added KPavel's Bee with Honey and Beehives (made texture), Warthogs now have sound and can be tamed, taming of shaved sheep or milked cow with 8 wheat so it will not despawn, many bug fixes :) +- 0.2 - Cooking bucket of milk into cheese now returns empty bucket +- 0.1 - Initial Release diff --git a/diff/mobs_redo.diff/sounds/default_punch.ogg b/diff/mobs_redo.diff/sounds/default_punch.ogg new file mode 100644 index 0000000..28a500b Binary files /dev/null and b/diff/mobs_redo.diff/sounds/default_punch.ogg differ diff --git a/diff/mobs_redo.diff/sounds/license.txt b/diff/mobs_redo.diff/sounds/license.txt new file mode 100644 index 0000000..3b160fe --- /dev/null +++ b/diff/mobs_redo.diff/sounds/license.txt @@ -0,0 +1,7 @@ +Creative Commons sounds from Freesound.org + +mobs_swing.ogg by qubodup + - http://freesound.org/people/qubodup/sounds/60012/ + +mobs_spell.ogg by littlerobotsoundfactory + - http://freesound.org/people/LittleRobotSoundFactory/sounds/270396/ diff --git a/diff/mobs_redo.diff/sounds/mobs_spell.ogg b/diff/mobs_redo.diff/sounds/mobs_spell.ogg new file mode 100644 index 0000000..455b54f Binary files /dev/null and b/diff/mobs_redo.diff/sounds/mobs_spell.ogg differ diff --git a/diff/mobs_redo.diff/sounds/mobs_swing.ogg b/diff/mobs_redo.diff/sounds/mobs_swing.ogg new file mode 100644 index 0000000..ffe6a9c Binary files /dev/null and b/diff/mobs_redo.diff/sounds/mobs_swing.ogg differ diff --git a/diff/mobs_redo.diff/textures/mob_spawner.png b/diff/mobs_redo.diff/textures/mob_spawner.png new file mode 100644 index 0000000..92edc14 Binary files /dev/null and b/diff/mobs_redo.diff/textures/mob_spawner.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_blood.png b/diff/mobs_redo.diff/textures/mobs_blood.png new file mode 100644 index 0000000..7c62367 Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_blood.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_chicken_egg.png b/diff/mobs_redo.diff/textures/mobs_chicken_egg.png new file mode 100644 index 0000000..a6d33be Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_chicken_egg.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_chicken_egg_overlay.png b/diff/mobs_redo.diff/textures/mobs_chicken_egg_overlay.png new file mode 100644 index 0000000..974f182 Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_chicken_egg_overlay.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_duck_egg.png b/diff/mobs_redo.diff/textures/mobs_duck_egg.png new file mode 100644 index 0000000..24313ee Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_duck_egg.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_duck_egg_overlay.png b/diff/mobs_redo.diff/textures/mobs_duck_egg_overlay.png new file mode 100644 index 0000000..c659e51 Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_duck_egg_overlay.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_leather.png b/diff/mobs_redo.diff/textures/mobs_leather.png new file mode 100644 index 0000000..2a7cdd5 Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_leather.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_magic_lasso.png b/diff/mobs_redo.diff/textures/mobs_magic_lasso.png new file mode 100644 index 0000000..9e7ba77 Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_magic_lasso.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_meat.png b/diff/mobs_redo.diff/textures/mobs_meat.png new file mode 100644 index 0000000..35b6891 Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_meat.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_meat_raw.png b/diff/mobs_redo.diff/textures/mobs_meat_raw.png new file mode 100644 index 0000000..999742a Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_meat_raw.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_nametag.png b/diff/mobs_redo.diff/textures/mobs_nametag.png new file mode 100644 index 0000000..ee2dde1 Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_nametag.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_net.png b/diff/mobs_redo.diff/textures/mobs_net.png new file mode 100644 index 0000000..586b67d Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_net.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_noentry_particle.png b/diff/mobs_redo.diff/textures/mobs_noentry_particle.png new file mode 100644 index 0000000..3f5371b Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_noentry_particle.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_protect_particle.png b/diff/mobs_redo.diff/textures/mobs_protect_particle.png new file mode 100644 index 0000000..f67f804 Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_protect_particle.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_protector.png b/diff/mobs_redo.diff/textures/mobs_protector.png new file mode 100644 index 0000000..8cb71c5 Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_protector.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_saddle.png b/diff/mobs_redo.diff/textures/mobs_saddle.png new file mode 100644 index 0000000..2227221 Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_saddle.png differ diff --git a/diff/mobs_redo.diff/textures/mobs_shears.png b/diff/mobs_redo.diff/textures/mobs_shears.png new file mode 100644 index 0000000..02eaa96 Binary files /dev/null and b/diff/mobs_redo.diff/textures/mobs_shears.png differ diff --git a/diff/mobs_redo.diff/textures/tnt_smoke.png b/diff/mobs_redo.diff/textures/tnt_smoke.png new file mode 100644 index 0000000..09f2063 Binary files /dev/null and b/diff/mobs_redo.diff/textures/tnt_smoke.png differ diff --git a/diff/mychisel.diff/README.md b/diff/mychisel.diff/README.md new file mode 100644 index 0000000..75bf847 --- /dev/null +++ b/diff/mychisel.diff/README.md @@ -0,0 +1,5 @@ +Mychisel +===================================================================== +Main: Donbatman +Lisc: WTFPL +Link: https://github.com/minetest-mods/mychisel/ diff --git a/diff/mychisel.diff/README.md.diff b/diff/mychisel.diff/README.md.diff new file mode 100644 index 0000000..0e938dd --- /dev/null +++ b/diff/mychisel.diff/README.md.diff @@ -0,0 +1,122 @@ +1,114c1,5 +< A chisel that allows you to shape blocks. +< If technic mod is present the chisel will be rechargeable. +< +< To craft a chisel just put a steel ingot and a brown wool in the crafting grid. The steel goes above the wool. +< (different recipe for technic device) +< +< Once you have your chisel you can set the style by right clicking. +< +< There are 5 styles to choose from(default) +< - horizontal groove +< - vertical groove +< - cross groves (this matches up with the vertical and horizontal grooves +< - square +< - 4 edges +< +< Right click until you see the style you want in the chat then point at the node and left click. +< Each node can be cut 4 times. Each time you chisel the groove will get a little deeper. +< +< Shift right click to change the supported mod. Here the list of supported mods: +< default (mychisel mod) 5 styles +< facade 10 styles +< +< Only certain nodes can be chiseled. Here are the supported nodes +< +< +< Cobble +< Sandstone +< Clay +< Coal Block +< Stone +< Desert Stone" +< Wood +< Acacia Wood +< Aspen Wood +< Pine Wood +< Desert Cobble +< Jungle Wood +< Sandstone Brick +< Stone Brick +< Desert Stone Brick +< +< Forum - https://forum.minetest.net/viewtopic.php?f=11&t=13104 +< +< +< +< ************************************************************************* +< ************************************************************************* +< *** added 01/2018 by Gundul *** +< *** chiselapi: *** +< ************************************************************************* +< ************************************************************************* +< +< Fist init your mod with mychisel: +< +< chisel.add_mod(modname,number) +< +< modname = the name of your mod +< number = number of different styles for each node +< +< +< Then register your nodes with mychisel: +< +< chisel.register_node(modname, prefix, raw, design) +< +< modname = the name of your node +< prefix = prefix of your new node name right behind the ":", usually the name of the raw material without "modname:" +< raw = name of the raw material for example "default:stone" +< design = name of your nodestyle after beeing chiseled +< +< +< Naming your nodes: +< +< In your mod the nodes should be named like this: modname..":"..prefix.."_"..design +< +< +< +< depends.txt: +< +< In your modfolder add this line to your depends.txt: mychisel? +< +< +< +< +< +< Example: you made a mod named "pillar" with 3 different pillar designs +< +< first register your mod: chisel.add_mod(pillar,3) +< +< +< then register each node of it: +< +< chisel.register_node("pillar", "stone", "default:stone", "round") +< chisel.register_node("pillar", "stone", "default:stone", "square") +< chisel.register_node("pillar", "stone", "default:stone", "hexagon") +< +< +< Do this for every material your mod supports: +< +< chisel.register_node("pillar", "sandstone", "default:sandstone", "round") +< chisel.register_node("pillar", "sandstone", "default:sandstone", "square") +< chisel.register_node("pillar", "sandstone", "default:sandstone", "hexagon") +< ... +< +< +< In your mod the nodes should have names like: +< +< pillar:stone_round +< pillar:stone_square +< pillar:stone_hexagon +< pillar:sandstone_round +< ... +< +< +< +\ No newline at end of file +--- +> Mychisel +> ===================================================================== +> Main: Donbatman +> Lisc: WTFPL +> Link: https://github.com/minetest-mods/mychisel/ diff --git a/diff/mychisel.diff/chisel.lua b/diff/mychisel.diff/chisel.lua new file mode 100644 index 0000000..a90be93 --- /dev/null +++ b/diff/mychisel.diff/chisel.lua @@ -0,0 +1,247 @@ +local USES = 200 +local mode = {} + +local function parti(pos) + minetest.add_particlespawner(25, 0.3, + pos, pos, + {x=2, y=0.2, z=2}, {x=-2, y=2, z=-2}, + {x=0, y=-6, z=0}, {x=0, y=-10, z=0}, + 0.2, 1, + 0.2, 2, + true, "mychisel_parti.png") +end + + mode = "1" + +minetest.register_tool( "mychisel:chisel",{ + description = "Chisel", + inventory_image = "mychisel_chisel.png", + wield_image = "mychisel_chisel.png", + + on_use = function(itemstack, user, pointed_thing) + + if pointed_thing.type ~= "node" then + return + end + + local pos = pointed_thing.under + local node = minetest.get_node(pos) + + local default_material = { + {"default:cobble", "default_cobble", "Cobble"}, + {"default:sandstone","default_sandstone", "Sandstone"}, + {"default:clay","default_clay", "Clay"}, + {"default:coalblock","default_coal_block", "Coal Block"}, + {"default:stone","default_stone", "Stone"}, + {"default:desert_stone","default_desert_stone", "Desert Stone"}, + {"default:wood","default_wood", "Wood"}, + {"default:acacia_wood","default_acacia_wood", "Acacia Wood"}, + {"default:aspen_wood","default_aspen_wood", "Aspen Wood"}, + {"default:pine_wood","default_pine_wood", "Pine Wood"}, + {"default:desert_cobble","default_desert_cobble", "Desert Cobble"}, + {"default:junglewood","default_junglewood", "Jungle Wood"}, + {"default:sandstonebrick","default_sandstone_brick", "Sandstone Brick"}, + {"default:stonebrick","default_stone_brick", "Stone Brick"}, + {"default:desert_stonebrick","default_desert_stone_brick", "Desert Stone Brick"}, + } + + for i in ipairs (default_material) do + local item = default_material [i][1] + local mat = default_material [i][2] + local desc = default_material [i][3] + + if pointed_thing.type ~= "node" then + return + end + + if minetest.is_protected(pos, user:get_player_name()) then + minetest.record_protection_violation(pos, user:get_player_name()) + return + end + + if mode == "1" then + + if node.name == item then + minetest.set_node(pos,{name = "mychisel:chiseled_"..mat.."1", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:chiseled_"..mat.."1" then + minetest.set_node(pos,{name = "mychisel:chiseled_"..mat.."2", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:chiseled_"..mat.."2" then + minetest.set_node(pos,{name = "mychisel:chiseled_"..mat.."3", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:chiseled_"..mat.."3" then + minetest.set_node(pos,{name = "mychisel:chiseled_"..mat.."4", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + end + + if mode == "2" then + + if node.name == item then + minetest.set_node(pos,{name = "mychisel:horizontal_"..mat.."1", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:horizontal_"..mat.."1" then + minetest.set_node(pos,{name = "mychisel:horizontal_"..mat.."2", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:horizontal_"..mat.."2" then + minetest.set_node(pos,{name = "mychisel:horizontal_"..mat.."3", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:horizontal_"..mat.."3" then + minetest.set_node(pos,{name = "mychisel:horizontal_"..mat.."4", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + end + + if mode == "3" then + + if node.name == item then + minetest.set_node(pos,{name = "mychisel:vertical_"..mat.."1", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:vertical_"..mat.."1" then + minetest.set_node(pos,{name = "mychisel:vertical_"..mat.."2", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:vertical_"..mat.."2" then + minetest.set_node(pos,{name = "mychisel:vertical_"..mat.."3", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:vertical_"..mat.."3" then + minetest.set_node(pos,{name = "mychisel:vertical_"..mat.."4", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + end + + if mode == "4" then + + if node.name == item then + minetest.set_node(pos,{name = "mychisel:cross_"..mat.."1", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:cross_"..mat.."1" then + minetest.set_node(pos,{name = "mychisel:cross_"..mat.."2", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:cross_"..mat.."2" then + minetest.set_node(pos,{name = "mychisel:cross_"..mat.."3", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:cross_"..mat.."3" then + minetest.set_node(pos,{name = "mychisel:cross_"..mat.."4", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + end + + if mode == "5" then + + if node.name == item then + minetest.set_node(pos,{name = "mychisel:square_"..mat.."1", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:square_"..mat.."1" then + minetest.set_node(pos,{name = "mychisel:square_"..mat.."2", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:square_"..mat.."2" then + minetest.set_node(pos,{name = "mychisel:square_"..mat.."3", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:square_"..mat.."3" then + minetest.set_node(pos,{name = "mychisel:square_"..mat.."4", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + end + + if mode == "6" then +-- on_place = function(itemstack, placer, pointed_thing) + local pt = pointed_thing + if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then + local wear = itemstack:get_wear() + local direction = minetest.dir_to_facedir(user:get_look_dir()) + local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) + local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) + minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="mychisel:chisel_deco", param2=direction}) + meta1:set_int("wear", wear) + meta2:set_int("wear", wear) + itemstack:take_item() + return itemstack + end + end + + end + + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535 / (USES - 1)) + end + + return itemstack + + end, + + on_place = function(itemstack, user, pointed_thing) + + local usr = user:get_player_name() + + if mode == "1" then + mode = "2" + minetest.chat_send_player(usr,"Horizontal Groove") + + elseif mode == "2" then + mode = "3" + minetest.chat_send_player(usr,"Vertical Groove") + + elseif mode == "3" then + mode = "4" + minetest.chat_send_player(usr,"Cross Grooves") + + elseif mode == "4" then + mode = "5" + minetest.chat_send_player(usr,"Square") + + elseif mode == "5" then + mode = "6" + minetest.chat_send_player(usr,"Place Tool") + elseif mode == "6" then + mode = "1" + minetest.chat_send_player(usr,"Chisel 4 Edges") + end + + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535 / (USES - 1)) + end + + return itemstack + + end + +}) + +minetest.register_craft({ + output = "mychisel:chisel", + recipe = { + {"default:steel_ingot"}, + {"wool:brown"}, + }, +}) diff --git a/diff/mychisel.diff/chisel.lua.diff b/diff/mychisel.diff/chisel.lua.diff new file mode 100644 index 0000000..b4ff8b0 --- /dev/null +++ b/diff/mychisel.diff/chisel.lua.diff @@ -0,0 +1,550 @@ +2,11c2 +< local color = '#FF6700' +< local TechnicMaxCharge = 300000 +< chisel = {} +< +< chisel.materials = {} +< chisel.mods = {} +< chisel.selected = {} +< chisel.active = {} +< chisel.program = {} +< chisel.mode = {} +--- +> local mode = {} +12a4,12 +> local function parti(pos) +> minetest.add_particlespawner(25, 0.3, +> pos, pos, +> {x=2, y=0.2, z=2}, {x=-2, y=2, z=-2}, +> {x=0, y=-6, z=0}, {x=0, y=-10, z=0}, +> 0.2, 1, +> 0.2, 2, +> true, "mychisel_parti.png") +> end +13a14 +> mode = "1" +14a16,19 +> minetest.register_tool( "mychisel:chisel",{ +> description = "Chisel", +> inventory_image = "mychisel_chisel.png", +> wield_image = "mychisel_chisel.png", +16c21 +< local wehavetechnic = minetest.get_modpath("technic") +--- +> on_use = function(itemstack, user, pointed_thing) +17a23,25 +> if pointed_thing.type ~= "node" then +> return +> end +19,20c27,28 +< +< +--- +> local pos = pointed_thing.under +> local node = minetest.get_node(pos) +22c30 +< local default_material = { +--- +> local default_material = { +40,185d47 +< -- Chatcommand to show loaded mods with names and number of styles +< +< minetest.register_chatcommand("chisel", { +< params = "", +< description = "Shows supported mods in mychisel", +< privs = {interact = true}, +< func = function(name, poi_name) +< +< for i in ipairs (chisel.mods) do +< +< minetest.chat_send_player(name,core.colorize(color,i..") modname :"..chisel.mods[i][1].." styles: "..chisel.mods[i][2])) +< end +< +< end, +< }) +< +< -- global API +< +< function chisel.register_node(modname, prefix, raw, design) -- global function to register new stuff +< local counter = chisel.count_stuff() +1 +< chisel.materials [counter] = {} +< chisel.materials [counter][1] = modname +< chisel.materials [counter][2] = prefix +< chisel.materials [counter][3] = raw +< chisel.materials [counter][4] = design +< end +< +< +< function chisel.add_mod(modname,number) -- global function to init a new mod for the chisel. +< local counter = chisel.count_mods() +1 +< chisel.mods [counter] = {} +< chisel.mods [counter][1] = modname +< chisel.mods [counter][2] = number +< minetest.log("action","[CHISEL] Added mod "..modname .. " with " .. number.." styles to mychisel") -- log loaded mods to debug.txt +< end +< +< +< +< function chisel.count_stuff() -- how many materials have been registered already ? +< local counter = 0 +< for i in ipairs (chisel.materials) do counter = counter +1 end +< return counter +< end +< +< +< +< function chisel.count_mods() -- how many different mods are registered ? +< +< local counter = 0 +< for i in ipairs (chisel.mods) do counter = counter +1 end +< return counter +< end +< +< +< +< +< -- init chisel for each player joining +< +< local function chiselinit(name) +< chisel.selected[name] = 1 +< chisel.active[name] = "default" +< chisel.program[name] = 1 +< chisel.mode[name] = "1" +< end +< +< minetest.register_on_joinplayer(function(player) +< chiselinit(player:get_player_name()) +< end) +< +< -- end init +< +< +< +< +< local function parti(pos) +< minetest.add_particlespawner(25, 0.3, +< pos, pos, +< {x=2, y=0.2, z=2}, {x=-2, y=2, z=-2}, +< {x=0, y=-6, z=0}, {x=0, y=-10, z=0}, +< 0.2, 1, +< 0.2, 2, +< true, "mychisel_parti.png") +< end +< +< +< +< +< local function chiselcut(pos,user,node) +< local name = user:get_player_name() +< +< for i in ipairs (chisel.materials) do +< +< if chisel.materials[i][1] == chisel.active[name] then +< if node.name == chisel.materials[i][3] and chisel.materials[i][4] == chisel.materials[chisel.program[name]][4] then +< +< minetest.set_node(pos, {name=chisel.materials[i][1]..":"..chisel.materials[i][2].."_"..chisel.materials[i][4], param2=minetest.dir_to_facedir(user:get_look_dir())}) +< end +< end +< end +< end +< +< +< local function change_mode(user, choice) +< +< local name = user:get_player_name() +< +< +< if choice then +< if chisel.mode[name] == "1" then +< chisel.mode[name] = "2" +< minetest.chat_send_player(name,core.colorize(color, "Horizontal Groove")) +< +< elseif chisel.mode[name] == "2" then +< chisel.mode[name] = "3" +< minetest.chat_send_player(name,core.colorize(color, "Vertical Groove")) +< +< elseif chisel.mode[name] == "3" then +< chisel.mode[name] = "4" +< minetest.chat_send_player(name, core.colorize(color, "Cross Grooves")) +< +< elseif chisel.mode[name] == "4" then +< chisel.mode[name] = "5" +< minetest.chat_send_player(name, core.colorize(color, "Square")) +< +< elseif chisel.mode[name] == "5" then +< chisel.mode[name] = "1" +< minetest.chat_send_player(name, core.colorize(color, "Chisel 4 Edges")) +< end +< else +< chisel.program[name] = chisel.program[name] +1 +< if chisel.program[name] > chisel.mods [chisel.selected[name]][2] then chisel.program[name] = 1 end +< minetest.chat_send_player(name, core.colorize(color, chisel.materials [chisel.program[name]][4])) +< end +< +< end +< +< +< +< +< local function chiselme(pos, user, node) +< +< +< local name = user:get_player_name() +< +< +< +190d51 +< +192c53,62 +< if chisel.mode[name] == "1" then +--- +> if pointed_thing.type ~= "node" then +> return +> end +> +> if minetest.is_protected(pos, user:get_player_name()) then +> minetest.record_protection_violation(pos, user:get_player_name()) +> return +> end +> +> if mode == "1" then +197d66 +< +203d71 +< +209d76 +< +215d81 +< +217,218d82 +< +< +221c85 +< if chisel.mode[name] == "2" then +--- +> if mode == "2" then +226d89 +< +232d94 +< +238d99 +< +244d104 +< +246d105 +< +249c108 +< if chisel.mode[name] == "3" then +--- +> if mode == "3" then +254d112 +< +260d117 +< +266d122 +< +272d127 +< +274d128 +< +277c131 +< if chisel.mode[name] == "4" then +--- +> if mode == "4" then +282d135 +< +288d140 +< +294d145 +< +300d150 +< +302d151 +< +305c154 +< if chisel.mode[name] == "5" then +--- +> if mode == "5" then +310d158 +< +316d163 +< +322d168 +< +328d173 +< +330d174 +< +332a177,192 +> if mode == "6" then +> -- on_place = function(itemstack, placer, pointed_thing) +> local pt = pointed_thing +> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then +> local wear = itemstack:get_wear() +> local direction = minetest.dir_to_facedir(user:get_look_dir()) +> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) +> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) +> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="mychisel:chisel_deco", param2=direction}) +> meta1:set_int("wear", wear) +> meta2:set_int("wear", wear) +> itemstack:take_item() +> return itemstack +> end +> end +> +334,335d193 +< +< end +337,338c195,197 +< +< if not wehavetechnic then +--- +> if not minetest.setting_getbool("creative_mode") then +> itemstack:add_wear(65535 / (USES - 1)) +> end +340,531c199,221 +< minetest.register_tool( "mychisel:chisel",{ +< description = "Chisel", +< inventory_image = "mychisel_chisel.png", +< wield_image = "mychisel_chisel.png", +< +< on_use = function(itemstack, user, pointed_thing) +< +< if pointed_thing.type ~= "node" then +< return +< end +< +< local pos = pointed_thing.under +< local node = minetest.get_node(pos)local feedback = false +< local name = user:get_player_name() +< +< +< +< +< if minetest.is_protected(pos, user:get_player_name()) then +< minetest.record_protection_violation(pos, user:get_player_name()) +< return +< end +< +< +< if chisel.active[name] == "default" then +< chiselme(pos,user,node) +< +< else +< +< chiselcut(pos,user,node) +< +< end +< +< +< if not minetest.setting_getbool("creative_mode") then +< itemstack:add_wear(65535 / (USES - 1)) +< end +< +< return itemstack +< +< end, +< +< on_place = function(itemstack, user, pointed_thing) +< +< +< local number = chisel.count_mods() +< local keys = user:get_player_control() +< local name = user:get_player_name() +< +< +< +< -- change design mode of chisel by pressing sneak while right-clicking +< if( not( keys["sneak"] )) then +< if chisel.active[name] == "default" then +< change_mode(user,true) +< else +< +< change_mode(user,false) +< +< end +< else +< chisel.selected[name] = chisel.selected[name] +1 +< if chisel.selected[name] > chisel.count_mods() then chisel.selected[name] = 1 end +< +< chisel.active[name] = chisel.mods[chisel.selected[name]][1] +< minetest.chat_send_player(user:get_player_name(), core.colorize(color, " ***>>> switched to mod: "..chisel.active[name])) +< +< end +< +< return itemstack +< +< end +< +< }) +< +< minetest.register_craft({ +< output = "mychisel:chisel", +< recipe = { +< {"default:steel_ingot"}, +< {"wool:brown"}, +< }, +< }) +< +< +< +< +< else +< +< +< local S = technic.getter +< +< technic.register_power_tool("mychisel:chisel",TechnicMaxCharge) +< local chisel_charge_per_node =math.floor( TechnicMaxCharge / USES ) +< +< +< minetest.register_tool("mychisel:chisel", { +< description = S("Chisel"), +< inventory_image = "mychisel_chisel.png", +< stack_max = 1, +< wear_represents = "technic_RE_charge", +< on_refill = technic.refill_RE_charge, +< on_use = function(itemstack, user, pointed_thing) +< +< +< if pointed_thing.type ~= "node" then +< return +< end +< +< local pos = pointed_thing.under +< local node = minetest.get_node(pos) +< local name = user:get_player_name() +< +< +< +< if minetest.is_protected(pos, user:get_player_name()) then +< minetest.record_protection_violation(pos, user:get_player_name()) +< return +< end +< +< -- +< +< local meta = minetest.deserialize(itemstack:get_metadata()) +< if not meta or not meta.charge or +< meta.charge < chisel_charge_per_node then +< return +< end +< +< if chisel.active[name] == "default" then +< chiselme(pos,user,node) +< meta.charge = meta.charge - chisel_charge_per_node +< else +< +< chiselcut(pos,user,node) +< meta.charge = meta.charge - chisel_charge_per_node +< end +< +< +< +< if not technic.creative_mode then +< technic.set_RE_wear(itemstack, meta.charge, TechnicMaxCharge) +< itemstack:set_metadata(minetest.serialize(meta)) +< end +< +< return itemstack +< +< +< end, +< +< on_place = function(itemstack, user, pointed_thing) +< +< local number = chisel.count_mods() +< local keys = user:get_player_control() +< local name = user:get_player_name() +< +< +< +< -- change design mode of chisel by pressing sneak while right-clicking +< if( not( keys["sneak"] )) then +< if chisel.active[name] == "default" then +< change_mode(user,true) +< else +< +< change_mode(user,false) +< +< end +< else +< chisel.selected[name] = chisel.selected[name] +1 +< if chisel.selected[name] > chisel.count_mods() then chisel.selected[name] = 1 end +< +< chisel.active[name] = chisel.mods[chisel.selected[name]][1] +< minetest.chat_send_player(user:get_player_name(),core.colorize(color, " ***>>> switched to mod: "..chisel.active[name])) +< +< end +< +< return itemstack +< +< end +< }) +< +< +< minetest.register_craft({ +< output = "mychisel:chisel", +< recipe = { +< {"default:diamond", "default:diamond" , "default:diamond" }, +< {"", "technic:stainless_steel_ingot", ""}, +< {"", "technic:battery", ""}, +< } +< }) +< +< +< +< end +--- +> return itemstack +> +> end, +> +> on_place = function(itemstack, user, pointed_thing) +> +> local usr = user:get_player_name() +> +> if mode == "1" then +> mode = "2" +> minetest.chat_send_player(usr,"Horizontal Groove") +> +> elseif mode == "2" then +> mode = "3" +> minetest.chat_send_player(usr,"Vertical Groove") +> +> elseif mode == "3" then +> mode = "4" +> minetest.chat_send_player(usr,"Cross Grooves") +> +> elseif mode == "4" then +> mode = "5" +> minetest.chat_send_player(usr,"Square") +533c223,247 +< chisel.add_mod("default",5) +\ No newline at end of file +--- +> elseif mode == "5" then +> mode = "6" +> minetest.chat_send_player(usr,"Place Tool") +> elseif mode == "6" then +> mode = "1" +> minetest.chat_send_player(usr,"Chisel 4 Edges") +> end +> +> if not minetest.setting_getbool("creative_mode") then +> itemstack:add_wear(65535 / (USES - 1)) +> end +> +> return itemstack +> +> end +> +> }) +> +> minetest.register_craft({ +> output = "mychisel:chisel", +> recipe = { +> {"default:steel_ingot"}, +> {"wool:brown"}, +> }, +> }) diff --git a/diff/mychisel.diff/init.lua b/diff/mychisel.diff/init.lua new file mode 100644 index 0000000..d538441 --- /dev/null +++ b/diff/mychisel.diff/init.lua @@ -0,0 +1,12 @@ + +dofile(minetest.get_modpath("mychisel").."/chisel.lua") + +dofile(minetest.get_modpath("mychisel").."/nodes.lua") + + + + + + + + diff --git a/diff/mychisel.diff/init.lua.diff b/diff/mychisel.diff/init.lua.diff new file mode 100644 index 0000000..e5233fd --- /dev/null +++ b/diff/mychisel.diff/init.lua.diff @@ -0,0 +1,3 @@ +1,2d0 +< chisel = {} +< diff --git a/diff/mychisel.diff/nodes.lua b/diff/mychisel.diff/nodes.lua new file mode 100644 index 0000000..c3fb836 --- /dev/null +++ b/diff/mychisel.diff/nodes.lua @@ -0,0 +1,659 @@ + +local vert1 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, 0.5, 0.5}, + } + } + +local vert2 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.375, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, 0.5, 0.5}, + } + } + +local vert3 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, 0.5, 0.5}, + } + } + +local vert4 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.25, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, 0.5, 0.5}, + } + } + +local hori1 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.5}, + {-0.5, 0.1875, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -0.1875, 0.5}, + } + } + +local hori2 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.375, 0.5, 0.5, 0.5}, + {-0.5, 0.1875, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -0.1875, 0.5}, + } + } + +local hori3 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, + {-0.5, 0.1875, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -0.1875, 0.5}, + } + } + +local hori4 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.25, 0.5, 0.5, 0.5}, + {-0.5, 0.1875, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -0.1875, 0.5}, + } + } + +local cross1 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, -0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, -0.1875, 0.5}, + {-0.5, 0.1875, -0.5, -0.1875, 0.5, 0.5}, + {0.1875, 0.1875, -0.5, 0.5, 0.5, 0.5}, + } + } + +local cross2 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.375, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, -0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, -0.1875, 0.5}, + {-0.5, 0.1875, -0.5, -0.1875, 0.5, 0.5}, + {0.1875, 0.1875, -0.5, 0.5, 0.5, 0.5}, + } + } + +local cross3 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, -0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, -0.1875, 0.5}, + {-0.5, 0.1875, -0.5, -0.1875, 0.5, 0.5}, + {0.1875, 0.1875, -0.5, 0.5, 0.5, 0.5}, + } + } + +local cross4 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.25, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, -0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, -0.1875, 0.5}, + {-0.5, 0.1875, -0.5, -0.1875, 0.5, 0.5}, + {0.1875, 0.1875, -0.5, 0.5, 0.5, 0.5}, + } + } + +local chis1 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.5}, + {-0.4375, -0.4375, -0.5, 0.4375, 0.4375, 0.5}, + } + } + +local chis2 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.375, 0.5, 0.5, 0.5}, + {-0.375, -0.375, -0.5, 0.375, 0.375, 0.5}, + {-0.4375, -0.4375, -0.4375, 0.4375, 0.4375, 0.5}, + } + } + +local chis3 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, + {-0.375, -0.375, -0.4375, 0.375, 0.375, 0.5}, + {-0.4375, -0.4375, -0.375, 0.4375, 0.4375, 0.5}, + {-0.3125, -0.3125, -0.5, 0.3125, 0.3125, 0.5}, + } + } + +local chis4 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.25, 0.5, 0.5, 0.5}, + {-0.375, -0.375, -0.375, 0.375, 0.375, 0.5}, + {-0.4375, -0.4375, -0.3125, 0.4375, 0.4375, 0.5}, + {-0.3125, -0.3125, -0.4375, 0.3125, 0.3125, 0.5}, + {-0.25, -0.25, -0.5, 0.25, 0.25, 0.5}, + } + } + +local squar1 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.4375}, + {0.3125, -0.5, -0.5, 0.5, 0.5, -0.4375}, + {-0.5, -0.5, -0.5, 0.5, -0.3125, -0.4375}, + {-0.5, 0.3125, -0.5, 0.5, 0.5, -0.4375}, + } + } + +local squar2 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.375, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.375}, + {0.3125, -0.5, -0.5, 0.5, 0.5, -0.375}, + {-0.5, -0.5, -0.5, 0.5, -0.3125, -0.375}, + {-0.5, 0.3125, -0.5, 0.5, 0.5, -0.375}, + } + } + +local squar3 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.3125}, + {0.3125, -0.5, -0.5, 0.5, 0.5, -0.3125}, + {-0.5, -0.5, -0.5, 0.5, -0.3125, -0.3125}, + {-0.5, 0.3125, -0.5, 0.5, 0.5, -0.3125}, + } + } + +local squar4 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.25, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.25}, + {0.3125, -0.5, -0.5, 0.5, 0.5, -0.25}, + {-0.5, -0.5, -0.5, 0.5, -0.3125, -0.25}, + {-0.5, 0.3125, -0.5, 0.5, 0.5, -0.25}, + } + } + +local default_material = { + {"default:cobble", "default_cobble", "Cobble", {cracky = 3, not_in_creative_inventory=1}}, + {"default:sandstone","default_sandstone", "Sandstone", {crumbly=2, not_in_creative_inventory=1}}, + {"default:clay","default_clay", "Clay", {crumbly=3, not_in_creative_inventory=1}}, + {"default:coalblock","default_coal_block", "Coal Block", {cracky = 3, not_in_creative_inventory=1}}, + {"default:stone","default_stone", "Stone", {cracky = 3, not_in_creative_inventory=1}}, + {"default:desert_stone","default_desert_stone", "Desert Stone", {cracky = 3, not_in_creative_inventory=1}}, + {"default:wood","default_wood", "Wood", {choppy=2, not_in_creative_inventory=1}}, + {"default:acacia_wood","default_acacia_wood", "Acacia Wood", {choppy=2, not_in_creative_inventory=1}}, + {"default:aspen_wood","default_aspen_wood", "Aspen Wood", {choppy=2, not_in_creative_inventory=1}}, + {"default:pine_wood","default_pine_wood", "Pine Wood", {choppy=2, not_in_creative_inventory=1}}, + {"default:desert_cobble","default_desert_cobble", "Desert Cobble", {cracky = 3, not_in_creative_inventory=1}}, + {"default:junglewood","default_junglewood", "Jungle Wood", {choppy=2, not_in_creative_inventory=1}}, + {"default:sandstonebrick","default_sandstone_brick", "Sandstone Brick", {cracky = 2, not_in_creative_inventory=1}}, + {"default:stonebrick","default_stone_brick", "Stone Brick", {cracky = 2, not_in_creative_inventory=1}}, + {"default:desert_stonebrick","default_desert_stone_brick", "Desert Stone Brick", {cracky = 2, not_in_creative_inventory=1}}, + } + +for i in ipairs (default_material) do + local item = default_material [i][1] + local mat = default_material [i][2] + local desc = default_material [i][3] + local gro = default_material [i][4] + +minetest.register_node("mychisel:vertical_"..mat.."1", { + description = "Vertical "..desc.."1", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_vtint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = vert1, + selection_box = vert1, + on_place = minetest.rotate_node, +}) + +minetest.register_node("mychisel:vertical_"..mat.."2", { + description = "Vertical "..desc.."2", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_vtint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = vert2, + selection_box = vert2 +}) + +minetest.register_node("mychisel:vertical_"..mat.."3", { + description = "Vertical "..desc.."3", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_vtint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = vert3, + selection_box = vert3 +}) + +minetest.register_node("mychisel:vertical_"..mat.."4", { + description = "Vertical "..desc.."4", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_vtint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = vert4, + selection_box = vert4 +}) + +minetest.register_node("mychisel:chiseled_"..mat.."1", { + description = "Chiseled"..desc.."1", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint1.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = chis1, + selection_box = chis1, +}) + +minetest.register_node("mychisel:chiseled_"..mat.."2", { + description = "Chiseled"..desc.."2", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint2.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = chis2, + selection_box = chis2 +}) + +minetest.register_node("mychisel:chiseled_"..mat.."3", { + description = "Chiseled"..desc.."3", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint3.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = chis3, + selection_box = chis3 +}) + +minetest.register_node("mychisel:chiseled_"..mat.."4", { + description = "Chiseled"..desc.."4", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint4.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = chis4, + selection_box = chis4 +}) + +minetest.register_node("mychisel:horizontal_"..mat.."1", { + description = "Horizontal "..desc.."1", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_htint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = hori1, + selection_box = hori1 +}) + +minetest.register_node("mychisel:horizontal_"..mat.."2", { + description = "Horizontal"..desc.."2", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_htint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = hori2, + selection_box = hori2 +}) + +minetest.register_node("mychisel:horizontal_"..mat.."3", { + description = "Horizontal"..desc.."3", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_htint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = hori3, + selection_box = hori3 +}) + +minetest.register_node("mychisel:horizontal_"..mat.."4", { + description = "Horizontal"..desc.."4", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_htint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = hori4, + selection_box = hori4 +}) + +minetest.register_node("mychisel:cross_"..mat.."1", { + description = "cross "..desc.."1", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = cross1, + selection_box = cross1 +}) + +minetest.register_node("mychisel:cross_"..mat.."2", { + description = "cross"..desc.."2", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = cross2, + selection_box = cross2 +}) + +minetest.register_node("mychisel:cross_"..mat.."3", { + description = "cross"..desc.."3", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = cross3, + selection_box = cross3 +}) + +minetest.register_node("mychisel:cross_"..mat.."4", { + description = "cross"..desc.."4", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = cross4, + selection_box = cross4 +}) + +minetest.register_node("mychisel:square_"..mat.."1", { + description = "cross "..desc.."1", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_stint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = squar1, + selection_box = squar1 +}) + +minetest.register_node("mychisel:square_"..mat.."2", { + description = "cross"..desc.."2", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_stint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = squar2, + selection_box = squar2 +}) + +minetest.register_node("mychisel:square_"..mat.."3", { + description = "cross"..desc.."3", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_stint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = squar3, + selection_box = squar3 +}) + +minetest.register_node("mychisel:square_"..mat.."4", { + description = "cross"..desc.."4", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", mat..".png", mat..".png", + mat..".png^mychisel_stint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = squar4, + selection_box = squar4 + +}) + +minetest.register_node("mychisel:square_"..mat.."4", { + description = "cross"..desc.."4", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_stint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = squar4, + selection_box = squar4 + +}) + +minetest.register_node("mychisel:chisel_deco", { + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + tiles = { + "default_steel_block.png", + "default_wood.png", + "mychisel_chisel.png", + "mychisel_chisel.png", + "mychisel_chisel.png", + "mychisel_chisel.png" + }, + groups = { + snappy=3, + flammable=2, + not_in_creative_inventory=1 + }, + node_box = { + type = "fixed", + fixed = { + {-0.125, -0.5, -0.125, 0.125, 0.25, 0.125}, -- NodeBox1 + {-0.1875, 0.25, -0.1875, 0.1875, 0.5, 0.1875}, -- NodeBox2 + } + }, + sounds = default.node_sound_wood_defaults(), + on_dig = function(pos, node, digger) + if digger:is_player() and digger:get_inventory() then + local meta = minetest.env:get_meta(pos) + local wear_out = meta:get_int("wear") + digger:get_inventory():add_item("main", {name="mychisel:chisel", count=1, wear=wear_out, metadata=""}) + end + minetest.remove_node(pos) + end, +}) + +end diff --git a/diff/mychisel.diff/nodes.lua.diff b/diff/mychisel.diff/nodes.lua.diff new file mode 100644 index 0000000..eb01855 --- /dev/null +++ b/diff/mychisel.diff/nodes.lua.diff @@ -0,0 +1,55 @@ +591a592,609 +> mat..".png", mat..".png", mat..".png", +> mat..".png^mychisel_stint.png", +> }, +> paramtype = "light", +> paramtype2 = "facedir", +> drop = item, +> groups = gro, +> node_box = squar4, +> selection_box = squar4 +> +> }) +> +> minetest.register_node("mychisel:square_"..mat.."4", { +> description = "cross"..desc.."4", +> drawtype = "nodebox", +> tiles = { +> mat..".png", +> mat..".png", +603a622,656 +> }) +> +> minetest.register_node("mychisel:chisel_deco", { +> drawtype = "nodebox", +> paramtype = "light", +> paramtype2 = "facedir", +> tiles = { +> "default_steel_block.png", +> "default_wood.png", +> "mychisel_chisel.png", +> "mychisel_chisel.png", +> "mychisel_chisel.png", +> "mychisel_chisel.png" +> }, +> groups = { +> snappy=3, +> flammable=2, +> not_in_creative_inventory=1 +> }, +> node_box = { +> type = "fixed", +> fixed = { +> {-0.125, -0.5, -0.125, 0.125, 0.25, 0.125}, -- NodeBox1 +> {-0.1875, 0.25, -0.1875, 0.1875, 0.5, 0.1875}, -- NodeBox2 +> } +> }, +> sounds = default.node_sound_wood_defaults(), +> on_dig = function(pos, node, digger) +> if digger:is_player() and digger:get_inventory() then +> local meta = minetest.env:get_meta(pos) +> local wear_out = meta:get_int("wear") +> digger:get_inventory():add_item("main", {name="mychisel:chisel", count=1, wear=wear_out, metadata=""}) +> end +> minetest.remove_node(pos) +> end, diff --git a/diff/mychisel.diff/textures/default_steel_block.png b/diff/mychisel.diff/textures/default_steel_block.png new file mode 100644 index 0000000..8a5c885 Binary files /dev/null and b/diff/mychisel.diff/textures/default_steel_block.png differ diff --git a/diff/mychisel.diff/textures/default_wood.png b/diff/mychisel.diff/textures/default_wood.png new file mode 100644 index 0000000..1e1660d Binary files /dev/null and b/diff/mychisel.diff/textures/default_wood.png differ diff --git a/diff/mychisel.diff/textures/mychisel_chisel.png b/diff/mychisel.diff/textures/mychisel_chisel.png new file mode 100644 index 0000000..5c7cdfc Binary files /dev/null and b/diff/mychisel.diff/textures/mychisel_chisel.png differ diff --git a/diff/mychisel.diff/textures/mychisel_ctint.png b/diff/mychisel.diff/textures/mychisel_ctint.png new file mode 100644 index 0000000..3cb7ab7 Binary files /dev/null and b/diff/mychisel.diff/textures/mychisel_ctint.png differ diff --git a/diff/mychisel.diff/textures/mychisel_ctint1.png b/diff/mychisel.diff/textures/mychisel_ctint1.png new file mode 100644 index 0000000..42c3138 Binary files /dev/null and b/diff/mychisel.diff/textures/mychisel_ctint1.png differ diff --git a/diff/mychisel.diff/textures/mychisel_ctint2.png b/diff/mychisel.diff/textures/mychisel_ctint2.png new file mode 100644 index 0000000..4073339 Binary files /dev/null and b/diff/mychisel.diff/textures/mychisel_ctint2.png differ diff --git a/diff/mychisel.diff/textures/mychisel_ctint3.png b/diff/mychisel.diff/textures/mychisel_ctint3.png new file mode 100644 index 0000000..54c5bf0 Binary files /dev/null and b/diff/mychisel.diff/textures/mychisel_ctint3.png differ diff --git a/diff/mychisel.diff/textures/mychisel_ctint4.png b/diff/mychisel.diff/textures/mychisel_ctint4.png new file mode 100644 index 0000000..7c90b1b Binary files /dev/null and b/diff/mychisel.diff/textures/mychisel_ctint4.png differ diff --git a/diff/mychisel.diff/textures/mychisel_htint.png b/diff/mychisel.diff/textures/mychisel_htint.png new file mode 100644 index 0000000..ef4a9d1 Binary files /dev/null and b/diff/mychisel.diff/textures/mychisel_htint.png differ diff --git a/diff/mychisel.diff/textures/mychisel_parti.png b/diff/mychisel.diff/textures/mychisel_parti.png new file mode 100644 index 0000000..9350e67 Binary files /dev/null and b/diff/mychisel.diff/textures/mychisel_parti.png differ diff --git a/diff/mychisel.diff/textures/mychisel_stint.png b/diff/mychisel.diff/textures/mychisel_stint.png new file mode 100644 index 0000000..a97b999 Binary files /dev/null and b/diff/mychisel.diff/textures/mychisel_stint.png differ diff --git a/diff/mychisel.diff/textures/mychisel_vtint.png b/diff/mychisel.diff/textures/mychisel_vtint.png new file mode 100644 index 0000000..f466f56 Binary files /dev/null and b/diff/mychisel.diff/textures/mychisel_vtint.png differ diff --git a/diff/protector.diff/README.md b/diff/protector.diff/README.md new file mode 100644 index 0000000..93ebbba --- /dev/null +++ b/diff/protector.diff/README.md @@ -0,0 +1,6 @@ +Protector +===================================================================== +Main: gloomie & Zeg9 & TenPlus1 +Lisc: MIT +Text: MIT +Link: https://github.com/tenplus1/protector diff --git a/diff/protector.diff/README.md.diff b/diff/protector.diff/README.md.diff new file mode 100644 index 0000000..25f30c9 --- /dev/null +++ b/diff/protector.diff/README.md.diff @@ -0,0 +1,128 @@ +1,120c1,6 +< Protector Redo mod [protect] +< +< Protector redo for minetest is a mod that protects a players builds by placing +< a block that stops other players from digging or placing blocks in that area. +< +< based on glomie's mod, remade by Zeg9 and rewritten by TenPlus1. +< +< https://forum.minetest.net/viewtopic.php?f=11&t=9376 +< +< Change log: +< +< - 0.1 - Initial release +< - 0.2 - Texture update +< - 0.3 - Added Protection Logo to blend in with player builds +< - 0.4 - Code tweak for 0.4.10+ +< - 0.5 - Added protector.radius variable in init.lua (default: 5) +< - 0.6 - Added Protected Doors (wood and steel) and Protected Chest +< - 0.7 - Protected Chests now have "To Chest" and "To Inventory" buttons to copy +< contents across, also chests can be named +< - 0.8 - Updated to work with Minetest 0.4.12, simplified textures +< - 0.9 - Tweaked code +< - 1.0 - Only owner can remove protector +< - 1.1 - Set 'protector_pvp = true' in minetest.conf to disable pvp in protected +< areas except your own, also setting protector_pvp_spawn higher than 0 will +< disable pvp around spawn area with the radius you entered +< - 1.2 - Shift and click support added with Minetest 0.4.13 to quickly copy stacks +< to and from protected chest +< - 1.3 - Moved protector on_place into node itself, protector zone display changed +< from 10 to 5 seconds, general code tidy +< - 1.4 - Changed protector recipes to give single item instead of 4, added + button +< to interface, tweaked and tidied code, added admin command /delprot to remove +< protectors in bulk from banned/old players +< - 1.5 - Added much requested protected trapdoor +< - 1.6 - Added protector_drop (true or false) and protector_hurt (hurt by this num) +< variables to minetest.conf settings to stop players breaking protected +< areas by dropping tools and hurting player. +< - 1.7 - Included an edited version of WTFPL doors mod since protected doors didn't +< work with the doors mod in the latest daily build... Now it's fine :) +< added support for "protection_bypass" privelage. +< - 1.8 - Added 'protector_flip' setting to stop players using lag to grief into +< another players house, it flips them around to stop them digging. +< - 1.9 - Renamed 'protector_pvp_spawn' setting to 'protector_spawn' which protects +< an area around static spawnpoint and disables pvp if active. +< (note: previous name can still be used) +< - 2.0 - Added protector placement tool (thanks to Shara) so that players can easily +< stand on a protector, face in a direction and it places a new one at a set +< distance to cover protection radius. Added /protector_show command (thanks agaran) +< Protectors and chest cannot be moved by mesecon pistons or machines. +< - 2.1 - Added 'protector_night_pvp' setting so night-time becomes a free for all and +< players can hurt one another even inside protected areas (not spawn protected) +< - 2.2 - Updated protector tool so that player only needs to stand nearby (2 block radius) +< It can also place vertically (up and down) as well. New protector recipe added. +< - 2.3 - Localise many of the protector functions and tidy code. +< - 2.4 - Update to newer functions, Minetest 0.4.16 needed to run now. +< - 2.5 - Added HUD text to show when player is inside a protected area (updates every 5 seconds) +< +< Lucky Blocks: 10 +< +< +< Usage: (requires server privelage) +< +< list names to remove +< +< /protector_remove +< +< remove specific user names +< +< /protector_remove name1 name2 +< +< remove all names from list +< +< /protector_remove - +< +< Whenever a player is near any protectors with name1 or name2 then it will be +< replaced by an air block. +< +< +< show owner name to replace +< +< /protector_replace +< +< replace owner with new name +< +< /protector_replace owner new_owner +< +< reset name list +< +< /protector_replace - +< +< +< show protected areas of your nearby protectors (max of 5) +< /protector_show +< +< +< The following lines can be added to your minetest.conf file to configure specific features of the mod: +< +< protector_radius = 5 +< - Sets the area around each protection node so that other players cannot dig, place or enter through protected doors or chests. +< +< protector_pvp = true +< - true or false this setting disabled pvp inside of protected areas for all players apart from those listed on the protector node. +< +< protector_night_pvp = false +< - when true this setting enables pvp at night time only, even inside protected areas, requires protector_pvp to be active to work. +< +< protector_spawn = 10 +< - Sets an area 10 nodes around static spawnpoint that is protected. +< +< protector_hurt = 2 +< - When set to above 0, players digging in protected areas will be hurt by 2 health points (or whichever number it's set to) +< +< protector_flip = true +< - When true players who dig inside a protected area will flipped around to stop them using lag to grief into someone else's build +< +< +< Protector Tool +< +< Can be crafted with a protector surrounded by steel ingots and is used to place new protectors at a set distance of protector.radius in all directions including up and down simply by looking in a direction. +< +< Use by standing near an existing protector, looking in a direction and using as a tool, hold sneak/shift to place new protector containing member list from inside nearest one. +--- +> Protector +> ===================================================================== +> Main: gloomie & Zeg9 & TenPlus1 +> Lisc: MIT +> Text: MIT +> Link: https://github.com/tenplus1/protector diff --git a/diff/sprint.diff/README.md b/diff/sprint.diff/README.md new file mode 100644 index 0000000..0d8d206 --- /dev/null +++ b/diff/sprint.diff/README.md @@ -0,0 +1,7 @@ +Sprint +===================================================================== +Main: GunshipPenguin +Lisc: CC0 +Text: CC0 + By Tirifto +Link: https://github.com/GunshipPenguin/sprint diff --git a/diff/sprint.diff/README.md.diff b/diff/sprint.diff/README.md.diff new file mode 100644 index 0000000..94a6448 --- /dev/null +++ b/diff/sprint.diff/README.md.diff @@ -0,0 +1,71 @@ +1,62c1,7 +< Sprint Mod For Minetest by GunshipPenguin +< +< Allows the player to sprint by either double tapping w or pressing e. +< By default, sprinting will make the player travel 80% faster and +< allow him/her to jump 10% higher. Also adds a stamina bar that goes +< down when the player sprints and goes up when he/she isn't +< sprinting. +< +< This mod is compatible with the HUD bars [hudbars] mod, but does +< not depend on it. In this care, a green HUD bar will be displayed, +< also showing a number. +< If this mod is not present, a standard statbar with 0-20 +< “half-arrows†is shown, which is a bit more coarse than the HUD +< bar version. +< +< +< Licence: CC0 (see COPYING file) +< +< --- +< +< This mod can be configured by changing the variables declared in +< the start of init.lua. The following is a brief explanation of each +< one. +< +< SPRINT_METHOD (default 1) +< +< What a player has to do to start sprinting. 0 = double tap w, 1 = press e. +< Note that if you have the fast privlige, and have the fast +< speed turned on, you will run very, very fast. You can toggle this +< by pressing j. +< +< SPRINT_SPEED (default 1.5) +< +< How fast the player will move when sprinting as opposed to normal +< movement speed. 1.0 represents normal speed so 1.5 would mean that a +< sprinting player would travel 50% faster than a walking player and +< 2.4 would mean that a sprinting player would travel 140% faster than +< a walking player. +< +< SPRINT_JUMP (default 1.1) +< +< How high the player will jump when sprinting as opposed to normal +< jump height. Same as SPRINT_SPEED, just controls jump height while +< sprinting rather than speed. +< +< SPRINT_STAMINA (default 20) +< +< How long the player can sprint for in seconds. Each player has a +< stamina variable assigned to them, it is initially set to +< SPRINT_STAMINA and can go no higher. When the player is sprinting, +< this variable ticks down once each second, and when it reaches 0, +< the player stops sprinting. It ticks back up when the player isn't +< sprinting and stops at SPRINT_STAMINA. Set this to a huge value if +< you want unlimited sprinting. +< +< SPRINT_TIMEOUT (default 0.5) +< +< Only used if SPRINT_METHOD = 0. +< How much time the player has after releasing w, to press w again and +< start sprinting. Setting this too high will result in unwanted +< sprinting and setting it too low will result in it being +< difficult/impossible to sprint. +--- +> Sprint +> ===================================================================== +> Main: GunshipPenguin +> Lisc: CC0 +> Text: CC0 +> By Tirifto +> Link: https://github.com/GunshipPenguin/sprint diff --git a/diff/sprint.diff/init.lua b/diff/sprint.diff/init.lua new file mode 100644 index 0000000..582842d --- /dev/null +++ b/diff/sprint.diff/init.lua @@ -0,0 +1,34 @@ +--[[ +Sprint mod for Minetest by GunshipPenguin + +To the extent possible under law, the author(s) +have dedicated all copyright and related and neighboring rights +to this software to the public domain worldwide. This software is +distributed without any warranty. +]] + +--Configuration variables, these are all explained in README.md +SPRINT_METHOD = 1 +SPRINT_SPEED = 2.0 +SPRINT_JUMP = 1.1 +SPRINT_STAMINA = 20 +SPRINT_TIMEOUT = 0.5 --Only used if SPRINT_METHOD = 0 + +if minetest.get_modpath("hudbars") ~= nil then + hb.register_hudbar("sprint", 0xFFFFFF, "Stamina", + { bar = "sprint_stamina_bar.png", icon = "sprint_stamina_icon.png" }, + SPRINT_STAMINA, SPRINT_STAMINA, + false, "%s: %.1f/%.1f") + SPRINT_HUDBARS_USED = true +else + SPRINT_HUDBARS_USED = false +end + +if SPRINT_METHOD == 0 then + dofile(minetest.get_modpath("sprint") .. "/wsprint.lua") +elseif SPRINT_METHOD == 1 then + dofile(minetest.get_modpath("sprint") .. "/esprint.lua") +else + minetest.log("error", "Sprint Mod - SPRINT_METHOD is not set properly, using e to sprint") + dofile(minetest.get_modpath("sprint") .. "/esprint.lua") +end diff --git a/diff/sprint.diff/init.lua.diff b/diff/sprint.diff/init.lua.diff new file mode 100644 index 0000000..a54584e --- /dev/null +++ b/diff/sprint.diff/init.lua.diff @@ -0,0 +1,4 @@ +12c12 +< SPRINT_SPEED = 1.8 +--- +> SPRINT_SPEED = 2.0 diff --git a/diff/sprint.diff/textures/sprint_particle.png b/diff/sprint.diff/textures/sprint_particle.png new file mode 100644 index 0000000..fa784c0 Binary files /dev/null and b/diff/sprint.diff/textures/sprint_particle.png differ diff --git a/diff/sprint.diff/textures/sprint_stamina_bar.png b/diff/sprint.diff/textures/sprint_stamina_bar.png new file mode 100644 index 0000000..1ca7a75 Binary files /dev/null and b/diff/sprint.diff/textures/sprint_stamina_bar.png differ diff --git a/diff/sprint.diff/textures/sprint_stamina_icon.png b/diff/sprint.diff/textures/sprint_stamina_icon.png new file mode 100644 index 0000000..74b9eed Binary files /dev/null and b/diff/sprint.diff/textures/sprint_stamina_icon.png differ diff --git a/mods/beds/README.txt b/mods/beds/README.txt deleted file mode 100644 index cda6ebd..0000000 --- a/mods/beds/README.txt +++ /dev/null @@ -1,26 +0,0 @@ -Minetest Game mod: beds -======================= -See license.txt for license information. - -Authors of source code ----------------------- -Originally by BlockMen (MIT) -Various Minetest developers and contributors (MIT) - -Authors of media (textures) ---------------------------- -BlockMen (CC BY-SA 3.0) - -This mod adds a bed to Minetest which allows to skip the night. -To sleep, rightclick the bed. If playing in singleplayer mode the night gets skipped -immediately. If playing multiplayer you get shown how many other players are in bed too, -if all players are sleeping the night gets skipped. The night skip can be forced if more -than 50% of the players are lying in bed and use this option. - -Another feature is a controlled respawning. If you have slept in bed (not just lying in -it) your respawn point is set to the beds location and you will respawn there after -death. -You can disable the respawn at beds by setting "enable_bed_respawn = false" in -minetest.conf. -You can disable the night skip feature by setting "enable_bed_night_skip = false" in -minetest.conf or by using the /set command in-game. diff --git a/mods/beds/api.lua b/mods/beds/api.lua deleted file mode 100644 index 97dde43..0000000 --- a/mods/beds/api.lua +++ /dev/null @@ -1,167 +0,0 @@ - -local reverse = true - -local function destruct_bed(pos, n) - local node = minetest.get_node(pos) - local other - - if n == 2 then - local dir = minetest.facedir_to_dir(node.param2) - other = vector.subtract(pos, dir) - elseif n == 1 then - local dir = minetest.facedir_to_dir(node.param2) - other = vector.add(pos, dir) - end - - if reverse then - reverse = not reverse - minetest.remove_node(other) - minetest.check_for_falling(other) - else - reverse = not reverse - end -end - -function beds.register_bed(name, def) - minetest.register_node(name .. "_bottom", { - description = def.description, - inventory_image = def.inventory_image, - wield_image = def.wield_image, - drawtype = "nodebox", - tiles = def.tiles.bottom, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - stack_max = 1, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 1}, - sounds = def.sounds or default.node_sound_wood_defaults(), - node_box = { - type = "fixed", - fixed = def.nodebox.bottom, - }, - selection_box = { - type = "fixed", - fixed = def.selectionbox, - }, - - on_place = function(itemstack, placer, pointed_thing) - local under = pointed_thing.under - local node = minetest.get_node(under) - local udef = minetest.registered_nodes[node.name] - if udef and udef.on_rightclick and - not (placer and placer:get_player_control().sneak) then - return udef.on_rightclick(under, node, placer, itemstack, - pointed_thing) or itemstack - end - - local pos - if minetest.registered_items[minetest.get_node(under).name].buildable_to then - pos = under - else - pos = pointed_thing.above - end - - if minetest.is_protected(pos, placer:get_player_name()) and - not minetest.check_player_privs(placer, "protection_bypass") then - minetest.record_protection_violation(pos, placer:get_player_name()) - return itemstack - end - - local node_def = minetest.registered_nodes[minetest.get_node(pos).name] - if not node_def or not node_def.buildable_to then - return itemstack - end - - local dir = minetest.dir_to_facedir(placer:get_look_dir()) - local botpos = vector.add(pos, minetest.facedir_to_dir(dir)) - - if minetest.is_protected(botpos, placer:get_player_name()) and - not minetest.check_player_privs(placer, "protection_bypass") then - minetest.record_protection_violation(botpos, placer:get_player_name()) - return itemstack - end - - local botdef = minetest.registered_nodes[minetest.get_node(botpos).name] - if not botdef or not botdef.buildable_to then - return itemstack - end - - minetest.set_node(pos, {name = name .. "_bottom", param2 = dir}) - minetest.set_node(botpos, {name = name .. "_top", param2 = dir}) - - if not (creative and creative.is_enabled_for - and creative.is_enabled_for(placer:get_player_name())) then - itemstack:take_item() - end - return itemstack - end, - - on_destruct = function(pos) - destruct_bed(pos, 1) - end, - - on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - beds.on_rightclick(pos, clicker) - return itemstack - end, - - on_rotate = function(pos, node, user, mode, new_param2) - local dir = minetest.facedir_to_dir(node.param2) - local p = vector.add(pos, dir) - local node2 = minetest.get_node_or_nil(p) - if not node2 or not minetest.get_item_group(node2.name, "bed") == 2 or - not node.param2 == node2.param2 then - return false - end - if minetest.is_protected(p, user:get_player_name()) then - minetest.record_protection_violation(p, user:get_player_name()) - return false - end - if mode ~= screwdriver.ROTATE_FACE then - return false - end - local newp = vector.add(pos, minetest.facedir_to_dir(new_param2)) - local node3 = minetest.get_node_or_nil(newp) - local node_def = node3 and minetest.registered_nodes[node3.name] - if not node_def or not node_def.buildable_to then - return false - end - if minetest.is_protected(newp, user:get_player_name()) then - minetest.record_protection_violation(newp, user:get_player_name()) - return false - end - node.param2 = new_param2 - -- do not remove_node here - it will trigger destroy_bed() - minetest.set_node(p, {name = "air"}) - minetest.set_node(pos, node) - minetest.set_node(newp, {name = name .. "_top", param2 = new_param2}) - return true - end, - }) - - minetest.register_node(name .. "_top", { - drawtype = "nodebox", - tiles = def.tiles.top, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - pointable = false, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 2}, - sounds = def.sounds or default.node_sound_wood_defaults(), - drop = name .. "_bottom", - node_box = { - type = "fixed", - fixed = def.nodebox.top, - }, - on_destruct = function(pos) - destruct_bed(pos, 2) - end, - }) - - minetest.register_alias(name, name .. "_bottom") - - minetest.register_craft({ - output = name, - recipe = def.recipe - }) -end diff --git a/mods/beds/beds.lua b/mods/beds/beds.lua deleted file mode 100644 index bb2fd5d..0000000 --- a/mods/beds/beds.lua +++ /dev/null @@ -1,104 +0,0 @@ --- Fancy shaped bed - -beds.register_bed("beds:fancy_bed", { - description = "Fancy Bed", - inventory_image = "beds_bed_fancy.png", - wield_image = "beds_bed_fancy.png", - tiles = { - bottom = { - "beds_bed_top1.png", - "default_wood.png", - "beds_bed_side1.png", - "beds_bed_side1.png^[transformFX", - "default_wood.png", - "beds_bed_foot.png", - }, - top = { - "beds_bed_top2.png", - "default_wood.png", - "beds_bed_side2.png", - "beds_bed_side2.png^[transformFX", - "beds_bed_head.png", - "default_wood.png", - } - }, - nodebox = { - bottom = { - {-0.5, -0.5, -0.5, -0.375, -0.065, -0.4375}, - {0.375, -0.5, -0.5, 0.5, -0.065, -0.4375}, - {-0.5, -0.375, -0.5, 0.5, -0.125, -0.4375}, - {-0.5, -0.375, -0.5, -0.4375, -0.125, 0.5}, - {0.4375, -0.375, -0.5, 0.5, -0.125, 0.5}, - {-0.4375, -0.3125, -0.4375, 0.4375, -0.0625, 0.5}, - }, - top = { - {-0.5, -0.5, 0.4375, -0.375, 0.1875, 0.5}, - {0.375, -0.5, 0.4375, 0.5, 0.1875, 0.5}, - {-0.5, 0, 0.4375, 0.5, 0.125, 0.5}, - {-0.5, -0.375, 0.4375, 0.5, -0.125, 0.5}, - {-0.5, -0.375, -0.5, -0.4375, -0.125, 0.5}, - {0.4375, -0.375, -0.5, 0.5, -0.125, 0.5}, - {-0.4375, -0.3125, -0.5, 0.4375, -0.0625, 0.4375}, - } - }, - selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.06, 1.5}, - recipe = { - {"", "", "group:stick"}, - {"wool:red", "wool:red", "wool:white"}, - {"group:wood", "group:wood", "group:wood"}, - }, -}) - --- Simple shaped bed - -beds.register_bed("beds:bed", { - description = "Simple Bed", - inventory_image = "beds_bed.png", - wield_image = "beds_bed.png", - tiles = { - bottom = { - "beds_bed_top_bottom.png^[transformR90", - "default_wood.png", - "beds_bed_side_bottom_r.png", - "beds_bed_side_bottom_r.png^[transformfx", - "beds_transparent.png", - "beds_bed_side_bottom.png" - }, - top = { - "beds_bed_top_top.png^[transformR90", - "default_wood.png", - "beds_bed_side_top_r.png", - "beds_bed_side_top_r.png^[transformfx", - "beds_bed_side_top.png", - "beds_transparent.png", - } - }, - nodebox = { - bottom = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5}, - top = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5}, - }, - selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.06, 1.5}, - recipe = { - {"wool:red", "wool:red", "wool:white"}, - {"group:wood", "group:wood", "group:wood"} - }, -}) - --- Aliases for PilzAdam's beds mod - -minetest.register_alias("beds:bed_bottom_red", "beds:bed_bottom") -minetest.register_alias("beds:bed_top_red", "beds:bed_top") - --- Fuel - -minetest.register_craft({ - type = "fuel", - recipe = "beds:fancy_bed_bottom", - burntime = 13, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "beds:bed_bottom", - burntime = 12, -}) diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua deleted file mode 100644 index 78df9a1..0000000 --- a/mods/beds/functions.lua +++ /dev/null @@ -1,220 +0,0 @@ -local pi = math.pi -local player_in_bed = 0 -local is_sp = minetest.is_singleplayer() -local enable_respawn = minetest.settings:get_bool("enable_bed_respawn") -if enable_respawn == nil then - enable_respawn = true -end - --- Helper functions - -local function get_look_yaw(pos) - local n = minetest.get_node(pos) - if n.param2 == 1 then - return pi / 2, n.param2 - elseif n.param2 == 3 then - return -pi / 2, n.param2 - elseif n.param2 == 0 then - return pi, n.param2 - else - return 0, n.param2 - end -end - -local function is_night_skip_enabled() - local enable_night_skip = minetest.settings:get_bool("enable_bed_night_skip") - if enable_night_skip == nil then - enable_night_skip = true - end - return enable_night_skip -end - -local function check_in_beds(players) - local in_bed = beds.player - if not players then - players = minetest.get_connected_players() - end - - for n, player in ipairs(players) do - local name = player:get_player_name() - if not in_bed[name] then - return false - end - end - - return #players > 0 -end - -local function lay_down(player, pos, bed_pos, state, skip) - local name = player:get_player_name() - local hud_flags = player:hud_get_flags() - - if not player or not name then - return - end - - -- stand up - if state ~= nil and not state then - local p = beds.pos[name] or nil - if beds.player[name] ~= nil then - beds.player[name] = nil - player_in_bed = player_in_bed - 1 - end - -- skip here to prevent sending player specific changes (used for leaving players) - if skip then - return - end - if p then - player:setpos(p) - end - - -- physics, eye_offset, etc - 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) - default.player_attached[name] = false - player:set_physics_override(1, 1, 1) - hud_flags.wielditem = true - default.player_set_animation(player, "stand" , 30) - - -- lay down - else - beds.player[name] = 1 - beds.pos[name] = pos - player_in_bed = player_in_bed + 1 - - -- physics, eye_offset, etc - player:set_eye_offset({x = 0, y = -13, z = 0}, {x = 0, y = 0, z = 0}) - local yaw, param2 = get_look_yaw(bed_pos) - player:set_look_horizontal(yaw) - local dir = minetest.facedir_to_dir(param2) - local p = {x = bed_pos.x + dir.x / 2, y = bed_pos.y, z = bed_pos.z + dir.z / 2} - player:set_physics_override(0, 0, 0) - player:setpos(p) - default.player_attached[name] = true - hud_flags.wielditem = false - default.player_set_animation(player, "lay" , 0) - end - - player:hud_set_flags(hud_flags) -end - -local function update_formspecs(finished) - local ges = #minetest.get_connected_players() - local form_n - local is_majority = (ges / 2) < player_in_bed - - if finished then - form_n = beds.formspec .. "label[2.7,11; Good morning.]" - else - form_n = beds.formspec .. "label[2.2,11;" .. tostring(player_in_bed) .. - " of " .. tostring(ges) .. " players are in bed]" - if is_majority and is_night_skip_enabled() then - form_n = form_n .. "button_exit[2,8;4,0.75;force;Force night skip]" - end - end - - for name,_ in pairs(beds.player) do - minetest.show_formspec(name, "beds_form", form_n) - end -end - - --- Public functions - -function beds.kick_players() - for name, _ in pairs(beds.player) do - local player = minetest.get_player_by_name(name) - lay_down(player, nil, nil, false) - end -end - -function beds.skip_night() - minetest.set_timeofday(0.23) -end - -function beds.on_rightclick(pos, player) - local name = player:get_player_name() - local ppos = player:getpos() - local tod = minetest.get_timeofday() - - if tod > 0.2 and tod < 0.805 then - if beds.player[name] then - lay_down(player, nil, nil, false) - end - minetest.chat_send_player(name, "You can only sleep at night.") - return - end - - -- move to bed - if not beds.player[name] then - lay_down(player, ppos, pos) - beds.set_spawns() -- save respawn positions when entering bed - else - lay_down(player, nil, nil, false) - end - - if not is_sp then - update_formspecs(false) - end - - -- skip the night and let all players stand up - if check_in_beds() then - minetest.after(2, function() - if not is_sp then - update_formspecs(is_night_skip_enabled()) - end - if is_night_skip_enabled() then - beds.skip_night() - beds.kick_players() - end - end) - end -end - - --- Callbacks --- Only register respawn callback if respawn enabled -if enable_respawn then - -- respawn player at bed if enabled and valid position is found - minetest.register_on_respawnplayer(function(player) - local name = player:get_player_name() - local pos = beds.spawn[name] - if pos then - player:setpos(pos) - return true - end - end) -end - -minetest.register_on_leaveplayer(function(player) - local name = player:get_player_name() - lay_down(player, nil, nil, false, true) - beds.player[name] = nil - if check_in_beds() then - minetest.after(2, function() - update_formspecs(is_night_skip_enabled()) - if is_night_skip_enabled() then - beds.skip_night() - beds.kick_players() - end - end) - end -end) - -minetest.register_on_player_receive_fields(function(player, formname, fields) - if formname ~= "beds_form" then - return - end - if fields.quit or fields.leave then - lay_down(player, nil, nil, false) - update_formspecs(false) - end - - if fields.force then - update_formspecs(is_night_skip_enabled()) - if is_night_skip_enabled() then - beds.skip_night() - beds.kick_players() - end - end -end) diff --git a/mods/beds/init.lua b/mods/beds/init.lua deleted file mode 100644 index 8b25890..0000000 --- a/mods/beds/init.lua +++ /dev/null @@ -1,17 +0,0 @@ -beds = {} -beds.player = {} -beds.pos = {} -beds.spawn = {} - -beds.formspec = "size[8,15;true]" .. - "bgcolor[#080808BB; true]" .. - "button_exit[2,12;4,0.75;leave;Leave Bed]" - -local modpath = minetest.get_modpath("beds") - --- Load files - -dofile(modpath .. "/functions.lua") -dofile(modpath .. "/api.lua") -dofile(modpath .. "/beds.lua") -dofile(modpath .. "/spawns.lua") diff --git a/mods/beds/license.txt b/mods/beds/license.txt deleted file mode 100644 index 0494b36..0000000 --- a/mods/beds/license.txt +++ /dev/null @@ -1,60 +0,0 @@ -License of source code ----------------------- - -The MIT License (MIT) -Copyright (C) 2014-2016 BlockMen -Copyright (C) 2014-2016 Various Minetest developers and contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this -software and associated documentation files (the "Software"), to deal in the Software -without restriction, including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or -substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -For more details: -https://opensource.org/licenses/MIT - - -Licenses of media (textures) ----------------------------- - -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -Copyright (C) 2014-2016 BlockMen - -You are free to: -Share — copy and redistribute the material in any medium or format. -Adapt — remix, transform, and build upon the material for any purpose, even commercially. -The licensor cannot revoke these freedoms as long as you follow the license terms. - -Under the following terms: - -Attribution — You must give appropriate credit, provide a link to the license, and -indicate if changes were made. You may do so in any reasonable manner, but not in any way -that suggests the licensor endorses you or your use. - -ShareAlike — If you remix, transform, or build upon the material, you must distribute -your contributions under the same license as the original. - -No additional restrictions — You may not apply legal terms or technological measures that -legally restrict others from doing anything the license permits. - -Notices: - -You do not have to comply with the license for elements of the material in the public -domain or where your use is permitted by an applicable exception or limitation. -No warranties are given. The license may not give you all of the permissions necessary -for your intended use. For example, other rights such as publicity, privacy, or moral -rights may limit how you use the material. - -For more details: -http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/beds/spawns.lua b/mods/beds/spawns.lua deleted file mode 100644 index 6b1f404..0000000 --- a/mods/beds/spawns.lua +++ /dev/null @@ -1,63 +0,0 @@ -local world_path = minetest.get_worldpath() -local org_file = world_path .. "/beds_spawns" -local file = world_path .. "/beds_spawns" -local bkwd = false - --- check for PA's beds mod spawns -local cf = io.open(world_path .. "/beds_player_spawns", "r") -if cf ~= nil then - io.close(cf) - file = world_path .. "/beds_player_spawns" - bkwd = true -end - -function beds.read_spawns() - local spawns = beds.spawn - local input = io.open(file, "r") - if input and not bkwd then - repeat - local x = input:read("*n") - if x == nil then - break - end - local y = input:read("*n") - local z = input:read("*n") - local name = input:read("*l") - spawns[name:sub(2)] = {x = x, y = y, z = z} - until input:read(0) == nil - io.close(input) - elseif input and bkwd then - beds.spawn = minetest.deserialize(input:read("*all")) - input:close() - beds.save_spawns() - os.rename(file, file .. ".backup") - file = org_file - end -end - -beds.read_spawns() - -function beds.save_spawns() - if not beds.spawn then - return - end - local data = {} - local output = io.open(org_file, "w") - for k, v in pairs(beds.spawn) do - table.insert(data, string.format("%.1f %.1f %.1f %s\n", v.x, v.y, v.z, k)) - end - output:write(table.concat(data)) - io.close(output) -end - -function beds.set_spawns() - for name,_ in pairs(beds.player) do - local player = minetest.get_player_by_name(name) - local p = player:getpos() - -- but don't change spawn location if borrowing a bed - if not minetest.is_protected(p, name) then - beds.spawn[name] = p - end - end - beds.save_spawns() -end diff --git a/mods/beds/textures/beds_bed.png b/mods/beds/textures/beds_bed.png deleted file mode 100644 index 5c0054c..0000000 Binary files a/mods/beds/textures/beds_bed.png and /dev/null differ diff --git a/mods/beds/textures/beds_bed_fancy.png b/mods/beds/textures/beds_bed_fancy.png deleted file mode 100644 index 4f9e8a7..0000000 Binary files a/mods/beds/textures/beds_bed_fancy.png and /dev/null differ diff --git a/mods/beds/textures/beds_bed_foot.png b/mods/beds/textures/beds_bed_foot.png deleted file mode 100644 index 74d84c8..0000000 Binary files a/mods/beds/textures/beds_bed_foot.png and /dev/null differ diff --git a/mods/beds/textures/beds_bed_head.png b/mods/beds/textures/beds_bed_head.png deleted file mode 100644 index 763f5e1..0000000 Binary files a/mods/beds/textures/beds_bed_head.png and /dev/null differ diff --git a/mods/beds/textures/beds_bed_side1.png b/mods/beds/textures/beds_bed_side1.png deleted file mode 100644 index 1ed8158..0000000 Binary files a/mods/beds/textures/beds_bed_side1.png and /dev/null differ diff --git a/mods/beds/textures/beds_bed_side2.png b/mods/beds/textures/beds_bed_side2.png deleted file mode 100644 index 9d1384d..0000000 Binary files a/mods/beds/textures/beds_bed_side2.png and /dev/null differ diff --git a/mods/beds/textures/beds_bed_side_bottom.png b/mods/beds/textures/beds_bed_side_bottom.png deleted file mode 100644 index 99ff309..0000000 Binary files a/mods/beds/textures/beds_bed_side_bottom.png and /dev/null differ diff --git a/mods/beds/textures/beds_bed_side_bottom_r.png b/mods/beds/textures/beds_bed_side_bottom_r.png deleted file mode 100644 index 6f870e8..0000000 Binary files a/mods/beds/textures/beds_bed_side_bottom_r.png and /dev/null differ diff --git a/mods/beds/textures/beds_bed_side_top.png b/mods/beds/textures/beds_bed_side_top.png deleted file mode 100644 index b2807c5..0000000 Binary files a/mods/beds/textures/beds_bed_side_top.png and /dev/null differ diff --git a/mods/beds/textures/beds_bed_side_top_r.png b/mods/beds/textures/beds_bed_side_top_r.png deleted file mode 100644 index 429ad7d..0000000 Binary files a/mods/beds/textures/beds_bed_side_top_r.png and /dev/null differ diff --git a/mods/beds/textures/beds_bed_top1.png b/mods/beds/textures/beds_bed_top1.png deleted file mode 100644 index b6fcc2c..0000000 Binary files a/mods/beds/textures/beds_bed_top1.png and /dev/null differ diff --git a/mods/beds/textures/beds_bed_top2.png b/mods/beds/textures/beds_bed_top2.png deleted file mode 100644 index 2fe5bf2..0000000 Binary files a/mods/beds/textures/beds_bed_top2.png and /dev/null differ diff --git a/mods/beds/textures/beds_bed_top_bottom.png b/mods/beds/textures/beds_bed_top_bottom.png deleted file mode 100644 index 9b78be6..0000000 Binary files a/mods/beds/textures/beds_bed_top_bottom.png and /dev/null differ diff --git a/mods/beds/textures/beds_bed_top_top.png b/mods/beds/textures/beds_bed_top_top.png deleted file mode 100644 index e877c80..0000000 Binary files a/mods/beds/textures/beds_bed_top_top.png and /dev/null differ diff --git a/mods/beds/textures/beds_transparent.png b/mods/beds/textures/beds_transparent.png deleted file mode 100644 index 2dc0e3d..0000000 Binary files a/mods/beds/textures/beds_transparent.png and /dev/null differ diff --git a/mods/bees/depends.txt b/mods/bees/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/bees/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/bees/images/craft_bees_extractor.png b/mods/bees/images/craft_bees_extractor.png new file mode 100644 index 0000000..5f93f88 Binary files /dev/null and b/mods/bees/images/craft_bees_extractor.png differ diff --git a/mods/bees/images/craft_bees_frame.png b/mods/bees/images/craft_bees_frame.png new file mode 100644 index 0000000..0a955f6 Binary files /dev/null and b/mods/bees/images/craft_bees_frame.png differ diff --git a/mods/bees/images/craft_bees_grafting_tool.png b/mods/bees/images/craft_bees_grafting_tool.png new file mode 100644 index 0000000..98bbec0 Binary files /dev/null and b/mods/bees/images/craft_bees_grafting_tool.png differ diff --git a/mods/bees/images/craft_bees_hive.png b/mods/bees/images/craft_bees_hive.png new file mode 100644 index 0000000..782a0e8 Binary files /dev/null and b/mods/bees/images/craft_bees_hive.png differ diff --git a/mods/bees/images/craft_bees_smoker.png b/mods/bees/images/craft_bees_smoker.png new file mode 100644 index 0000000..70b1104 Binary files /dev/null and b/mods/bees/images/craft_bees_smoker.png differ diff --git a/mods/bees/images/screen_0.png b/mods/bees/images/screen_0.png new file mode 100644 index 0000000..b9c9373 Binary files /dev/null and b/mods/bees/images/screen_0.png differ diff --git a/mods/bees/init.lua b/mods/bees/init.lua new file mode 100644 index 0000000..232d452 --- /dev/null +++ b/mods/bees/init.lua @@ -0,0 +1,813 @@ +--Bees +------ +--Author Bas080 +--Version 2.2 +--License WTFPL + +--VARIABLES + local bees = {} + local formspecs = {} + +--FUNCTIONS + function formspecs.hive_wild(pos, grafting) + local spos = pos.x .. ',' .. pos.y .. ',' ..pos.z + local formspec = + 'size[8,9]'.. + 'list[nodemeta:'.. spos .. ';combs;1.5,3;5,1;]'.. + 'list[current_player;main;0,5;8,4;]' + if grafting then + formspec = formspec..'list[nodemeta:'.. spos .. ';queen;3.5,1;1,1;]' + end + return formspec + end + + function formspecs.hive_artificial(pos) + local spos = pos.x..','..pos.y..','..pos.z + local formspec = + 'size[8,9]'.. + 'list[nodemeta:'..spos..';queen;3.5,1;1,1;]'.. + 'list[nodemeta:'..spos..';frames;0,3;8,1;]'.. + 'list[current_player;main;0,5;8,4;]' + return formspec + end + + function bees.polinate_flower(pos, flower) + local spawn_pos = { x=pos.x+math.random(-3,3) , y=pos.y+math.random(-3,3) , z=pos.z+math.random(-3,3) } + local floor_pos = { x=spawn_pos.x , y=spawn_pos.y-1 , z=spawn_pos.z } + local spawn = minetest.get_node(spawn_pos).name + local floor = minetest.get_node(floor_pos).name + if floor == 'default:dirt_with_grass' and spawn == 'air' then + minetest.set_node(spawn_pos, {name=flower}) + end + end + +--NODES + minetest.register_node('bees:extractor', { + description = 'honey extractor', + tiles = {"bees_extractor.png", "bees_extractor.png", "bees_extractor.png", "bees_extractor.png", "bees_extractor.png", "bees_extractor_front.png"}, + paramtype2 = "facedir", + groups = {choppy=2,oddly_breakable_by_hand=2,tubedevice=1,tubedevice_receiver=1}, + on_construct = function(pos, node) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local pos = pos.x..','..pos.y..','..pos.z + inv:set_size('frames_filled' ,1) + inv:set_size('frames_emptied' ,1) + inv:set_size('bottles_empty' ,1) + inv:set_size('bottles_full' ,1) + inv:set_size('wax',1) + meta:set_string('formspec', + 'size[8,9]'.. + --input + 'list[nodemeta:'..pos..';frames_filled;2,1;1,1;]'.. + 'list[nodemeta:'..pos..';bottles_empty;2,3;1,1;]'.. + --output + 'list[nodemeta:'..pos..';frames_emptied;5,0.5;1,1;]'.. + 'list[nodemeta:'..pos..';wax;5,2;1,1;]'.. + 'list[nodemeta:'..pos..';bottles_full;5,3.5;1,1;]'.. + --player inventory + 'list[current_player;main;0,5;8,4;]' + ) + end, + on_timer = function(pos, node) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if not inv:contains_item('frames_filled','bees:frame_full') or not inv:contains_item('bottles_empty','vessels:glass_bottle') then + return + end + if inv:room_for_item('frames_emptied', 'bees:frame_empty') + and inv:room_for_item('wax','bees:wax') + and inv:room_for_item('bottles_full', 'bees:bottle_honey') then + --add to output + inv:add_item('frames_emptied', 'bees:frame_empty') + inv:add_item('wax', 'bees:wax') + inv:add_item('bottles_full', 'bees:bottle_honey') + --remove from input + inv:remove_item('bottles_empty','vessels:glass_bottle') + inv:remove_item('frames_filled','bees:frame_full') + local p = {x=pos.x+math.random()-0.5, y=pos.y+math.random()-0.5, z=pos.z+math.random()-0.5} + --wax flying all over the place + minetest.add_particle({ + pos = {x=pos.x, y=pos.y, z=pos.z}, + vel = {x=math.random(-4,4),y=math.random(8),z=math.random(-4,4)}, + acc = {x=0,y=-6,z=0}, + expirationtime = 2, + size = math.random(1,3), + collisiondetection = false, + texture = 'bees_wax_particle.png', + }) + local timer = minetest.get_node_timer(pos) + timer:start(5) + else + local timer = minetest.get_node_timer(pos) + timer:start(1) -- Try again in 1 second + end + end, + tube = { + insert_object = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local timer = minetest.get_node_timer(pos) + if stack:get_name() == "bees:frame_full" then + if inv:is_empty("frames_filled") then + timer:start(5) + end + return inv:add_item("frames_filled",stack) + elseif stack:get_name() == "vessels:glass_bottle" then + if inv:is_empty("bottles_empty") then + timer:start(5) + end + return inv:add_item("bottles_empty",stack) + end + return stack + end, + can_insert = function(pos,node,stack,direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if stack:get_name() == "bees:frame_full" then + return inv:room_for_item("frames_filled",stack) + elseif stack:get_name() == "vessels:glass_bottle" then + return inv:room_for_item("bottles_empty",stack) + end + return false + end, + input_inventory = {"frames_emptied", "bottles_full", "wax"}, + connect_sides = {left=1, right=1, back=1, front=1, bottom=1, top=1} + }, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + local timer = minetest.get_node_timer(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if inv:get_stack(listname, 1):get_count() == stack:get_count() then -- inv was empty -> start the timer + timer:start(5) --create a honey bottle and empty frame and wax every 5 seconds + end + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + if (listname == 'bottles_empty' and stack:get_name() == 'vessels:glass_bottle') or (listname == 'frames_filled' and stack:get_name() == 'bees:frame_full') then + return stack:get_count() + else + return 0 + end + end, + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + return 0 + end, + }) + + minetest.register_node('bees:bees', { + description = 'flying bees', + drawtype = 'plantlike', + paramtype = 'light', + groups = { not_in_creative_inventory=1 }, + tiles = { + { + name='bees_strip.png', + animation={type='vertical_frames', aspect_w=16,aspect_h=16, length=2.0} + } + }, + damage_per_second = 1, + walkable = false, + buildable_to = true, + pointable = false, + on_punch = function(pos, node, puncher) + local health = puncher:get_hp() + puncher:set_hp(health-2) + end, + }) + + minetest.register_node('bees:hive_wild', { + description = 'wild bee hive', + tiles = {'bees_hive_wild.png','bees_hive_wild.png','bees_hive_wild.png', 'bees_hive_wild.png', 'bees_hive_wild_bottom.png'}, --Neuromancer's base texture + drawtype = 'nodebox', + paramtype = 'light', + paramtype2 = 'wallmounted', + drop = { + max_items = 6, + items = { + { items = {'bees:honey_comb'}, rarity = 5} + } + }, + groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,attached_node=1}, + node_box = { --VanessaE's wild hive nodebox contribution + type = 'fixed', + fixed = { + {-0.250000,-0.500000,-0.250000,0.250000,0.375000,0.250000}, --NodeBox 2 + {-0.312500,-0.375000,-0.312500,0.312500,0.250000,0.312500}, --NodeBox 4 + {-0.375000,-0.250000,-0.375000,0.375000,0.125000,0.375000}, --NodeBox 5 + {-0.062500,-0.500000,-0.062500,0.062500,0.500000,0.062500}, --NodeBox 6 + } + }, + on_timer = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local timer= minetest.get_node_timer(pos) + local rad = 10 + local minp = {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad} + local maxp = {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad} + local flowers = minetest.find_nodes_in_area(minp, maxp, 'group:flower') + if #flowers == 0 then + inv:set_stack('queen', 1, '') + meta:set_string('infotext', 'this colony died, not enough flowers in area') + return + end --not any flowers nearby The queen dies! + if #flowers < 3 then return end --requires 2 or more flowers before can make honey + local flower = flowers[math.random(#flowers)] + bees.polinate_flower(flower, minetest.get_node(flower).name) + local stacks = inv:get_list('combs') + for k, v in pairs(stacks) do + if inv:get_stack('combs', k):is_empty() then --then replace that with a full one and reset pro.. + inv:set_stack('combs',k,'bees:honey_comb') + timer:start(1000/#flowers) + return + end + end + --what to do if all combs are filled + end, + on_construct = function(pos) + minetest.get_node(pos).param2 = 0 + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local timer = minetest.get_node_timer(pos) + meta:set_int('agressive', 1) + timer:start(100+math.random(100)) + inv:set_size('queen', 1) + inv:set_size('combs', 5) + inv:set_stack('queen', 1, 'bees:queen') + for i=1,math.random(3) do + inv:set_stack('combs', i, 'bees:honey_comb') + end + end, + on_punch = function(pos, node, puncher) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if inv:contains_item('queen','bees:queen') then + local health = puncher:get_hp() + puncher:set_hp(health-4) + end + end, + on_metadata_inventory_take = function(pos, listname, index, stack, taker) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local timer= minetest.get_node_timer(pos) + if listname == 'combs' and inv:contains_item('queen', 'bees:queen') then + local health = taker:get_hp() + timer:start(10) + taker:set_hp(health-2) + end + end, + on_metadata_inventory_put = function(pos, listname, index, stack, taker) --restart the colony by adding a queen + local timer = minetest.get_node_timer(pos) + if not timer:is_started() then + timer:start(10) + end + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + if listname == 'queen' and stack:get_name() == 'bees:queen' then + return 1 + else + return 0 + end + end, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + minetest.show_formspec( + clicker:get_player_name(), + 'bees:hive_artificial', + formspecs.hive_wild(pos, (itemstack:get_name() == 'bees:grafting_tool')) + ) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if meta:get_int('agressive') == 1 and inv:contains_item('queen', 'bees:queen') then + local health = clicker:get_hp() + clicker:set_hp(health-4) + else + meta:set_int('agressive', 1) + end + end, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if inv:is_empty('queen') and inv:is_empty('combs') then + return true + else + return false + end + end, + after_dig_node = function(pos, oldnode, oldmetadata, user) + local wielded if user:get_wielded_item() ~= nil then wielded = user:get_wielded_item() else return end + if 'bees:grafting_tool' == wielded:get_name() then + local inv = user:get_inventory() + if inv then + inv:add_item('main', ItemStack('bees:queen')) + end + end + end + }) + + minetest.register_node('bees:hive_artificial', { + description = 'bee hive', + tiles = {'default_wood.png','default_wood.png','default_wood.png', 'default_wood.png','default_wood.png','bees_hive_artificial.png'}, + drawtype = 'nodebox', + paramtype = 'light', + paramtype2 = 'facedir', + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1}, + sounds = default.node_sound_wood_defaults(), + node_box = { + type = 'fixed', + fixed = { + {-4/8, 2/8, -4/8, 4/8, 3/8, 4/8}, + {-3/8, -4/8, -2/8, 3/8, 2/8, 3/8}, + {-3/8, 0/8, -3/8, 3/8, 2/8, -2/8}, + {-3/8, -4/8, -3/8, 3/8, -1/8, -2/8}, + {-3/8, -1/8, -3/8, -1/8, 0/8, -2/8}, + {1/8, -1/8, -3/8, 3/8, 0/8, -2/8}, + } + }, + on_construct = function(pos) + local timer = minetest.get_node_timer(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + meta:set_int('agressive', 1) + inv:set_size('queen', 1) + inv:set_size('frames', 8) + meta:set_string('infotext','requires queen bee to function') + end, + on_rightclick = function(pos, node, clicker, itemstack) + minetest.show_formspec( + clicker:get_player_name(), + 'bees:hive_artificial', + formspecs.hive_artificial(pos) + ) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if meta:get_int('agressive') == 1 and inv:contains_item('queen', 'bees:queen') then + local health = clicker:get_hp() + clicker:set_hp(health-4) + else + meta:set_int('agressive', 1) + end + end, + on_timer = function(pos,elapsed) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local timer = minetest.get_node_timer(pos) + if inv:contains_item('queen', 'bees:queen') then + if inv:contains_item('frames', 'bees:frame_empty') then + timer:start(30) + local rad = 10 + local minp = {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad} + local maxp = {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad} + local flowers = minetest.find_nodes_in_area(minp, maxp, 'group:flower') + local progress = meta:get_int('progress') + progress = progress + #flowers + meta:set_int('progress', progress) + if progress > 1000 then + local flower = flowers[math.random(#flowers)] + bees.polinate_flower(flower, minetest.get_node(flower).name) + local stacks = inv:get_list('frames') + for k, v in pairs(stacks) do + if inv:get_stack('frames', k):get_name() == 'bees:frame_empty' then + meta:set_int('progress', 0) + inv:set_stack('frames',k,'bees:frame_full') + return + end + end + else + meta:set_string('infotext', 'progress: '..progress..'+'..#flowers..'/1000') + end + else + meta:set_string('infotext', 'does not have empty frame(s)') + timer:stop() + end + end + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + if listname == 'queen' then + local timer = minetest.get_node_timer(pos) + local meta = minetest.get_meta(pos) + meta:set_string('infotext','requires queen bee to function') + timer:stop() + end + end, + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + local inv = minetest.get_meta(pos):get_inventory() + if from_list == to_list then + if inv:get_stack(to_list, to_index):is_empty() then + return 1 + else + return 0 + end + else + return 0 + end + end, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local timer = minetest.get_node_timer(pos) + if listname == 'queen' or listname == 'frames' then + meta:set_string('queen', stack:get_name()) + meta:set_string('infotext','queen is inserted, now for the empty frames'); + if inv:contains_item('frames', 'bees:frame_empty') then + timer:start(30) + meta:set_string('infotext','bees are aclimating'); + end + end + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + if not minetest.get_meta(pos):get_inventory():get_stack(listname, index):is_empty() then return 0 end + if listname == 'queen' then + if stack:get_name():match('bees:queen*') then + return 1 + end + elseif listname == 'frames' then + if stack:get_name() == ('bees:frame_empty') then + return 1 + end + end + return 0 + end, + }) + +--ABMS + minetest.register_abm({ --particles + nodenames = {'bees:hive_artificial', 'bees:hive_wild', 'bees:hive_industrial'}, + interval = 10, + chance = 4, + action = function(pos) + minetest.add_particle({ + pos = {x=pos.x, y=pos.y, z=pos.z}, + vel = {x=(math.random()-0.5)*5,y=(math.random()-0.5)*5,z=(math.random()-0.5)*5}, + acc = {x=math.random()-0.5,y=math.random()-0.5,z=math.random()-0.5}, + expirationtime = math.random(2.5), + size = math.random(3), + collisiondetection = true, + texture = 'bees_particle_bee.png', + }) + end, + }) + + minetest.register_abm({ --spawn abm. This should be changed to a more realistic type of spawning + nodenames = {'group:leaves'}, + neighbors = {''}, + interval = 1600, + chance = 20, + action = function(pos, node, _, _) + local p = {x=pos.x, y=pos.y-1, z=pos.z} + if minetest.get_node(p).walkable == false then return end + if (minetest.find_node_near(p, 5, 'group:flora') ~= nil and minetest.find_node_near(p, 40, 'bees:hive_wild') == nil) then + minetest.add_node(p, {name='bees:hive_wild'}) + end + end, + }) + + minetest.register_abm({ --spawning bees around bee hive + nodenames = {'bees:hive_wild', 'bees:hive_artificial', 'bees:hive_industrial'}, + neighbors = {'group:flowers', 'group:leaves'}, + interval = 30, + chance = 4, + action = function(pos, node, _, _) + local p = {x=pos.x+math.random(-5,5), y=pos.y-math.random(0,3), z=pos.z+math.random(-5,5)} + if minetest.get_node(p).name == 'air' then + minetest.add_node(p, {name='bees:bees'}) + end + end, + }) + + minetest.register_abm({ --remove bees + nodenames = {'bees:bees'}, + interval = 30, + chance = 5, + action = function(pos, node, _, _) + minetest.remove_node(pos) + end, + }) + +--ITEMS + minetest.register_craftitem('bees:frame_empty', { + description = 'empty hive frame', + inventory_image = 'bees_frame_empty.png', + stack_max = 24, + }) + + minetest.register_craftitem('bees:frame_full', { + description = 'filled hive frame', + inventory_image = 'bees_frame_full.png', + stack_max = 12, + }) + + minetest.register_craftitem('bees:bottle_honey', { + description = 'honey bottle', + inventory_image = 'bees_bottle_honey.png', + stack_max = 12, + on_use = minetest.item_eat(3, "vessels:glass_bottle"), + }) + + minetest.register_craftitem('bees:wax', { + description = 'bees wax', + inventory_image = 'bees_wax.png', + stack_max = 48, + }) + + minetest.register_craftitem('bees:honey_comb', { + description = 'honey comb', + inventory_image = 'bees_comb.png', + on_use = minetest.item_eat(2), + stack_max = 8, + }) + + minetest.register_craftitem('bees:queen', { + description = 'Queen Bee', + inventory_image = 'bees_particle_bee.png', + stack_max = 1, + }) + +--CRAFTS + minetest.register_craft({ + output = 'bees:extractor', + recipe = { + {'','default:steel_ingot',''}, + {'default:steel_ingot','default:stick','default:steel_ingot'}, + {'default:mese_crystal','default:steel_ingot','default:mese_crystal'}, + } + }) + + minetest.register_craft({ + output = 'bees:smoker', + recipe = { + {'default:steel_ingot', 'wool:red', ''}, + {'', 'default:torch', ''}, + {'', 'default:steel_ingot',''}, + } + }) + + minetest.register_craft({ + output = 'bees:hive_artificial', + recipe = { + {'group:wood','group:wood','group:wood'}, + {'group:wood','default:stick','group:wood'}, + {'group:wood','default:stick','group:wood'}, + } + }) + + minetest.register_craft({ + output = 'bees:grafting_tool', + recipe = { + {'', '', 'default:steel_ingot'}, + {'', 'default:stick', ''}, + {'', '', ''}, + } + }) + + minetest.register_craft({ + output = 'bees:frame_empty', + recipe = { + {'group:wood', 'group:wood', 'group:wood'}, + {'default:stick', 'default:stick', 'default:stick'}, + {'default:stick', 'default:stick', 'default:stick'}, + } + }) + + if minetest.get_modpath('bushes_classic') then + minetest.register_craft({ + type = 'cooking', + cooktime = 5, + recipe = 'bees:bottle_honey', + output = 'bushes:sugar', + }) + end + +--TOOLS + minetest.register_tool('bees:smoker', { + description = 'smoker', + inventory_image = 'bees_smoker.png', + tool_capabilities = { + full_punch_interval = 3.0, + max_drop_level=0, + damage_groups = {fleshy=2}, + }, + on_use = function(tool, user, node) + if node then + local pos = node.under + if pos then + for i=1,6 do + minetest.add_particle({ + pos = {x=pos.x+math.random()-0.5, y=pos.y, z=pos.z+math.random()-0.5}, + vel = {x=0,y=0.5+math.random(),z=0}, + acc = {x=0,y=0,z=0}, + expirationtime = 2+math.random(2.5), + size = math.random(3), + collisiondetection = false, + texture = 'bees_smoke_particle.png', + }) + end + --tool:add_wear(2) + local meta = minetest.get_meta(pos) + meta:set_int('agressive', 0) + return nil + end + end + end, + }) + + minetest.register_tool('bees:grafting_tool', { + description = 'grafting tool', + inventory_image = 'bees_grafting_tool.png', + tool_capabilities = { + full_punch_interval = 3.0, + max_drop_level=0, + damage_groups = {fleshy=2}, + }, + }) + +--COMPATIBILTY --remove after all has been updated + --ALIASES + minetest.register_alias('bees:honey_extractor', 'bees:extractor') + --BACKWARDS COMPATIBILITY WITH OLDER VERSION + minetest.register_alias('bees:honey_bottle', 'bees:bottle_honey') + minetest.register_abm({ + nodenames = {'bees:hive', 'bees:hive_artificial_inhabited'}, + interval = 0, + chance = 1, + action = function(pos, node) + if node.name == 'bees:hive' then + minetest.set_node(pos, { name = 'bees:hive_wild' }) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_stack('queen', 1, 'bees:queen') + end + if node.name == 'bees:hive_artificial_inhabited' then + minetest.set_node(pos, { name = 'bees:hive_artificial' }) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_stack('queen', 1, 'bees:queen') + local timer = minetest.get_node_timer(pos) + timer:start(60) + end + end, + }) + + --PIPEWORKS + if minetest.get_modpath("pipeworks") then + minetest.register_node('bees:hive_industrial', { + description = 'industrial bee hive', + tiles = { 'bees_hive_industrial.png'}, + paramtype2 = 'facedir', + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,tubedevice=1,tubedevice_receiver=1}, + sounds = default.node_sound_wood_defaults(), + tube = { + insert_object = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if stack:get_name() ~= "bees:frame_empty" or stack:get_count() > 1 then + return stack + end + for i = 1, 8 do + if inv:get_stack("frames", i):is_empty() then + inv:set_stack("frames", i, stack) + local timer = minetest.get_node_timer(pos) + timer:start(30) + meta:set_string('infotext','bees are aclimating') + return ItemStack("") + end + end + return stack + end, + can_insert = function(pos,node,stack,direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if stack:get_name() ~= "bees:frame_empty" or stack:get_count() > 1 then + return false + end + for i = 1, 8 do + if inv:get_stack("frames", i):is_empty() then + return true + end + end + return false + end, + can_remove = function(pos,node,stack,direction) + if stack:get_name() == "bees:frame_full" then + return 1 + else + return 0 + end + end, + input_inventory = "frames", + connect_sides = {left=1, right=1, back=1, front=1, bottom=1, top=1} + }, + on_construct = function(pos) + local timer = minetest.get_node_timer(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + meta:set_int('agressive', 1) + inv:set_size('queen', 1) + inv:set_size('frames', 8) + meta:set_string('infotext','requires queen bee to function') + end, + on_rightclick = function(pos, node, clicker, itemstack) + minetest.show_formspec( + clicker:get_player_name(), + 'bees:hive_artificial', + formspecs.hive_artificial(pos) + ) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if meta:get_int('agressive') == 1 and inv:contains_item('queen', 'bees:queen') then + local health = clicker:get_hp() + clicker:set_hp(health-4) + else + meta:set_int('agressive', 1) + end + end, + on_timer = function(pos,elapsed) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local timer = minetest.get_node_timer(pos) + if inv:contains_item('queen', 'bees:queen') then + if inv:contains_item('frames', 'bees:frame_empty') then + timer:start(30) + local rad = 10 + local minp = {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad} + local maxp = {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad} + local flowers = minetest.find_nodes_in_area(minp, maxp, 'group:flower') + local progress = meta:get_int('progress') + progress = progress + #flowers + meta:set_int('progress', progress) + if progress > 1000 then + local flower = flowers[math.random(#flowers)] + bees.polinate_flower(flower, minetest.get_node(flower).name) + local stacks = inv:get_list('frames') + for k, v in pairs(stacks) do + if inv:get_stack('frames', k):get_name() == 'bees:frame_empty' then + meta:set_int('progress', 0) + inv:set_stack('frames',k,'bees:frame_full') + return + end + end + else + meta:set_string('infotext', 'progress: '..progress..'+'..#flowers..'/1000') + end + else + meta:set_string('infotext', 'does not have empty frame(s)') + timer:stop() + end + end + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + if listname == 'queen' then + local timer = minetest.get_node_timer(pos) + local meta = minetest.get_meta(pos) + meta:set_string('infotext','requires queen bee to function') + timer:stop() + end + end, + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + local inv = minetest.get_meta(pos):get_inventory() + if from_list == to_list then + if inv:get_stack(to_list, to_index):is_empty() then + return 1 + else + return 0 + end + else + return 0 + end + end, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local timer = minetest.get_node_timer(pos) + if listname == 'queen' or listname == 'frames' then + meta:set_string('queen', stack:get_name()) + meta:set_string('infotext','queen is inserted, now for the empty frames'); + if inv:contains_item('frames', 'bees:frame_empty') then + timer:start(30) + meta:set_string('infotext','bees are aclimating'); + end + end + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + if not minetest.get_meta(pos):get_inventory():get_stack(listname, index):is_empty() then return 0 end + if listname == 'queen' then + if stack:get_name():match('bees:queen*') then + return 1 + end + elseif listname == 'frames' then + if stack:get_name() == ('bees:frame_empty') then + return 1 + end + end + return 0 + end, + }) + minetest.register_craft({ + output = 'bees:hive_industrial', + recipe = { + {'default:steel_ingot','homedecor:plastic_sheeting','default:steel_ingot'}, + {'pipeworks:tube_1','bees:hive_artificial','pipeworks:tube_1'}, + {'default:steel_ingot','homedecor:plastic_sheeting','default:steel_ingot'}, + } + }) + end + +print('[Mod]Bees Loaded!') diff --git a/mods/bees/readme.txt b/mods/bees/readme.txt new file mode 100644 index 0000000..9949d5e --- /dev/null +++ b/mods/bees/readme.txt @@ -0,0 +1,7 @@ +Bees +===================================================================== +Main: bass080 +Lisc: WTFPL +Text: CC0 + By Tirifto +Link: https://github.com/bas080/bees diff --git a/mods/bees/readme.txt.diff b/mods/bees/readme.txt.diff new file mode 100644 index 0000000..04920af --- /dev/null +++ b/mods/bees/readme.txt.diff @@ -0,0 +1,62 @@ +1,53c1,7 +< BEES MOD V2.2 +< ------------- +< +< FEATURES +< -------- +< 3.0 +< - Pipeworks compatibility (Industrial beehive) +< - Get honey comb from full frame +< +< 2.2.1 +< - removed steel dependency temporarily +< - fixed the craft for the extractor (and added alias for) +< +< 2.2 +< - craft for extractor +< - extractor texture update +< - a craft for the smoker +< +< 2.1 +< - bees polinate flowers nearby, causing them to multiply +< - add formspec to wild and artificial hive when using grafting tool +< - smoke, flying wax and bee particles +< - smokers to calm down the bees before opening the hive +< - a centrifuge to extract the honey and from the filled frames +< - grab eatable honeycomb from wild hives +< - craft a grafting tool to extract queen bees from wild hives +< - craft artificial hives and frames +< +< 1.0 +< - spawn wild bee hives on tree leaves +< - use the queen bee to populate artificial hives +< - plant flowers near hives to increase their productivity +< - spawning bee colonies +< +< FUTURE +< ------ +< - more realistic spawning of wild bee hives +< +< CONTRIBUTORS +< ------------ +< - bas080 +< - VanessaE (wild bee hive nodebox) +< - Neuromancer (textures for wild bee hive and inspiration for other textures) +< - Novatux (enabled pipeworks compatibility) +< +< FORUM +< ----- +< https://forum.minetest.net/viewtopic.php?pid=102905 +< +< LICENSE +< ------- +< - codes is WTFPL +< - textures are CC BY-SA +--- +> Bees +> ===================================================================== +> Main: bass080 +> Lisc: WTFPL +> Text: CC0 +> By Tirifto +> Link: https://github.com/bas080/bees diff --git a/mods/bees/sounds/bees.1.ogg b/mods/bees/sounds/bees.1.ogg new file mode 100644 index 0000000..62adbfe Binary files /dev/null and b/mods/bees/sounds/bees.1.ogg differ diff --git a/mods/bees/sounds/bees.2.ogg b/mods/bees/sounds/bees.2.ogg new file mode 100644 index 0000000..4bab2a9 Binary files /dev/null and b/mods/bees/sounds/bees.2.ogg differ diff --git a/mods/bees/sounds/bees.3.ogg b/mods/bees/sounds/bees.3.ogg new file mode 100644 index 0000000..f90d882 Binary files /dev/null and b/mods/bees/sounds/bees.3.ogg differ diff --git a/mods/bees/textures/bees_bottle_honey.png b/mods/bees/textures/bees_bottle_honey.png new file mode 100644 index 0000000..d2690b4 Binary files /dev/null and b/mods/bees/textures/bees_bottle_honey.png differ diff --git a/mods/bees/textures/bees_comb.png b/mods/bees/textures/bees_comb.png new file mode 100644 index 0000000..35c6da5 Binary files /dev/null and b/mods/bees/textures/bees_comb.png differ diff --git a/mods/bees/textures/bees_extractor.png b/mods/bees/textures/bees_extractor.png new file mode 100644 index 0000000..00551aa Binary files /dev/null and b/mods/bees/textures/bees_extractor.png differ diff --git a/mods/bees/textures/bees_extractor_front.png b/mods/bees/textures/bees_extractor_front.png new file mode 100644 index 0000000..c2d2be9 Binary files /dev/null and b/mods/bees/textures/bees_extractor_front.png differ diff --git a/mods/bees/textures/bees_frame_empty.png b/mods/bees/textures/bees_frame_empty.png new file mode 100644 index 0000000..361aada Binary files /dev/null and b/mods/bees/textures/bees_frame_empty.png differ diff --git a/mods/bees/textures/bees_frame_full.png b/mods/bees/textures/bees_frame_full.png new file mode 100644 index 0000000..5fb1eb3 Binary files /dev/null and b/mods/bees/textures/bees_frame_full.png differ diff --git a/mods/bees/textures/bees_grafting_tool.png b/mods/bees/textures/bees_grafting_tool.png new file mode 100644 index 0000000..8f737a0 Binary files /dev/null and b/mods/bees/textures/bees_grafting_tool.png differ diff --git a/mods/bees/textures/bees_hive_artificial.png b/mods/bees/textures/bees_hive_artificial.png new file mode 100644 index 0000000..2034255 Binary files /dev/null and b/mods/bees/textures/bees_hive_artificial.png differ diff --git a/mods/bees/textures/bees_hive_industrial.png b/mods/bees/textures/bees_hive_industrial.png new file mode 100644 index 0000000..de82d09 Binary files /dev/null and b/mods/bees/textures/bees_hive_industrial.png differ diff --git a/mods/bees/textures/bees_hive_wild.png b/mods/bees/textures/bees_hive_wild.png new file mode 100644 index 0000000..96b41f2 Binary files /dev/null and b/mods/bees/textures/bees_hive_wild.png differ diff --git a/mods/bees/textures/bees_hive_wild_bottom.png b/mods/bees/textures/bees_hive_wild_bottom.png new file mode 100644 index 0000000..cd229f6 Binary files /dev/null and b/mods/bees/textures/bees_hive_wild_bottom.png differ diff --git a/mods/bees/textures/bees_hive_wild_s.png b/mods/bees/textures/bees_hive_wild_s.png new file mode 100644 index 0000000..96b41f2 Binary files /dev/null and b/mods/bees/textures/bees_hive_wild_s.png differ diff --git a/mods/bees/textures/bees_honey_bottle.png b/mods/bees/textures/bees_honey_bottle.png new file mode 100644 index 0000000..9e02aa2 Binary files /dev/null and b/mods/bees/textures/bees_honey_bottle.png differ diff --git a/mods/bees/textures/bees_particle_bee.png b/mods/bees/textures/bees_particle_bee.png new file mode 100644 index 0000000..f58c4dc Binary files /dev/null and b/mods/bees/textures/bees_particle_bee.png differ diff --git a/mods/bees/textures/bees_particle_bee_r.png b/mods/bees/textures/bees_particle_bee_r.png new file mode 100644 index 0000000..42a36ff Binary files /dev/null and b/mods/bees/textures/bees_particle_bee_r.png differ diff --git a/mods/bees/textures/bees_smoke_particle.png b/mods/bees/textures/bees_smoke_particle.png new file mode 100644 index 0000000..59e77a0 Binary files /dev/null and b/mods/bees/textures/bees_smoke_particle.png differ diff --git a/mods/bees/textures/bees_smoker.png b/mods/bees/textures/bees_smoker.png new file mode 100644 index 0000000..b2886a3 Binary files /dev/null and b/mods/bees/textures/bees_smoker.png differ diff --git a/mods/bees/textures/bees_strip.png b/mods/bees/textures/bees_strip.png new file mode 100644 index 0000000..1afe28e Binary files /dev/null and b/mods/bees/textures/bees_strip.png differ diff --git a/mods/bees/textures/bees_wax.png b/mods/bees/textures/bees_wax.png new file mode 100644 index 0000000..4891e06 Binary files /dev/null and b/mods/bees/textures/bees_wax.png differ diff --git a/mods/bees/textures/bees_wax_particle.png b/mods/bees/textures/bees_wax_particle.png new file mode 100644 index 0000000..974fb09 Binary files /dev/null and b/mods/bees/textures/bees_wax_particle.png differ diff --git a/mods/boats.diff/README.txt b/mods/boats.diff/README.txt deleted file mode 100644 index 1625a5a..0000000 --- a/mods/boats.diff/README.txt +++ /dev/null @@ -1,10 +0,0 @@ -Boats -===================================================================== -Main: PilzAdam -Lisc: MIT -Text: CC0 - By Tirifto -3Dmo: CC-BY-SA 3.0 - By thetoon & Zeg9 - Modified by PavelS & sofar -Link: https://github.com/minetest/minetest_game diff --git a/mods/boats.diff/README.txt.diff b/mods/boats.diff/README.txt.diff deleted file mode 100644 index badbcb7..0000000 --- a/mods/boats.diff/README.txt.diff +++ /dev/null @@ -1,27 +0,0 @@ -1,15c1,10 -< Minetest Game mod: boats -< ======================== -< See license.txt for license information. -< -< Authors of source code -< ---------------------- -< Originally by PilzAdam (MIT) -< Various Minetest developers and contributors (MIT) -< -< Authors of media (textures and model) -< ------------------------------------- -< Textures: Zeg9 (CC BY-SA 3.0) -< Model: thetoon and Zeg9 (CC BY-SA 3.0), -< modified by PavelS(SokolovPavel) (CC BY-SA 3.0), -< modified by sofar (CC BY-SA 3.0) ---- -> Boats -> ===================================================================== -> Main: PilzAdam -> Lisc: MIT -> Text: CC0 -> By Tirifto -> 3Dmo: CC-BY-SA 3.0 -> By thetoon & Zeg9 -> Modified by PavelS & sofar -> Link: https://github.com/minetest/minetest_game diff --git a/mods/boats.diff/license.txt b/mods/boats.diff/license.txt deleted file mode 100644 index f0a0107..0000000 --- a/mods/boats.diff/license.txt +++ /dev/null @@ -1,77 +0,0 @@ -License of source code ----------------------- - -The MIT License (MIT) -Copyright (C) 2012-2016 PilzAdam -Copyright (C) 2012-2016 Various Minetest developers and contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this -software and associated documentation files (the "Software"), to deal in the Software -without restriction, including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or -substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -For more details: -https://opensource.org/licenses/MIT - - -Licenses of model ------------------ - -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -Copyright (C) 2012-2016 Zeg9 -Copyright (C) 2012-2016 thetoon -Copyright (C) 2012-2016 PavelS(SokolovPavel) -Copyright (C) 2016 sofar (sofar@foo-projects.org) - -You are free to: -Share — copy and redistribute the material in any medium or format. -Adapt — remix, transform, and build upon the material for any purpose, even commercially. -The licensor cannot revoke these freedoms as long as you follow the license terms. - -Under the following terms: - -Attribution — You must give appropriate credit, provide a link to the license, and -indicate if changes were made. You may do so in any reasonable manner, but not in any way -that suggests the licensor endorses you or your use. - -ShareAlike — If you remix, transform, or build upon the material, you must distribute -your contributions under the same license as the original. - -No additional restrictions — You may not apply legal terms or technological measures that -legally restrict others from doing anything the license permits. - -Notices: - -You do not have to comply with the license for elements of the material in the public -domain or where your use is permitted by an applicable exception or limitation. -No warranties are given. The license may not give you all of the permissions necessary -for your intended use. For example, other rights such as publicity, privacy, or moral -rights may limit how you use the material. - -For more details: -http://creativecommons.org/licenses/by-sa/3.0/ - - -License of textures -------------------- - -CC0 1.0 Universal – Public Domain Dedication -Copyright (C) 2017 Tirifto - -The person who associated a work with this deed has dedicated the work to the public -domain by waiving all of his or her rights to the work worldwide under copyright law, -including all related and neighboring rights, to the extent allowed by law. - -For more details: -https://creativecommons.org/publicdomain/zero/1.0/legalcode diff --git a/mods/boats.diff/license.txt.diff b/mods/boats.diff/license.txt.diff deleted file mode 100644 index e19e1b6..0000000 --- a/mods/boats.diff/license.txt.diff +++ /dev/null @@ -1,21 +0,0 @@ -28,29c28,29 -< Licenses of media (textures and model) -< -------------------------------------- ---- -> Licenses of model -> ----------------- -63a64,77 -> -> -> License of textures -> ------------------- -> -> CC0 1.0 Universal – Public Domain Dedication -> Copyright (C) 2017 Tirifto -> -> The person who associated a work with this deed has dedicated the work to the public -> domain by waiving all of his or her rights to the work worldwide under copyright law, -> including all related and neighboring rights, to the extent allowed by law. -> -> For more details: -> https://creativecommons.org/publicdomain/zero/1.0/legalcode diff --git a/mods/boats.diff/source.txt b/mods/boats.diff/source.txt deleted file mode 100644 index 516ed14..0000000 --- a/mods/boats.diff/source.txt +++ /dev/null @@ -1 +0,0 @@ -https://github.com/minetest/minetest_game/archive/0.4.16.tar.gz diff --git a/mods/boats.diff/textures/boats_inventory.png b/mods/boats.diff/textures/boats_inventory.png deleted file mode 100644 index 2270803..0000000 Binary files a/mods/boats.diff/textures/boats_inventory.png and /dev/null differ diff --git a/mods/boats.diff/textures/boats_wield.png b/mods/boats.diff/textures/boats_wield.png deleted file mode 100644 index 2270803..0000000 Binary files a/mods/boats.diff/textures/boats_wield.png and /dev/null differ diff --git a/mods/bones.diff/README.txt b/mods/bones.diff/README.txt deleted file mode 100644 index c6ea6e4..0000000 --- a/mods/bones.diff/README.txt +++ /dev/null @@ -1,9 +0,0 @@ -Bones -===================================================================== -Main: PilzAdam -Lisc: MIT -Text: MIT - By jadedctrl -3Dmo: MIT - By jadedctrl -Link: https://github.com/minetest/minetest_game diff --git a/mods/bones.diff/README.txt.diff b/mods/bones.diff/README.txt.diff deleted file mode 100644 index 8c0f270..0000000 --- a/mods/bones.diff/README.txt.diff +++ /dev/null @@ -1,23 +0,0 @@ -1,12c1,9 -< Minetest Game mod: bones -< ======================== -< See license.txt for license information. -< -< Authors of source code -< ---------------------- -< Originally by PilzAdam (MIT) -< Various Minetest developers and contributors (MIT) -< -< Authors of media (textures) -< --------------------------- -< All textures: paramat (CC BY-SA 3.0) ---- -> Bones -> ===================================================================== -> Main: PilzAdam -> Lisc: MIT -> Text: MIT -> By jadedctrl -> 3Dmo: MIT -> By jadedctrl -> Link: https://github.com/minetest/minetest_game diff --git a/mods/bones.diff/init.lua b/mods/bones.diff/init.lua deleted file mode 100644 index be9f57a..0000000 --- a/mods/bones.diff/init.lua +++ /dev/null @@ -1,286 +0,0 @@ --- Minetest 0.4 mod: bones --- See README.txt for licensing and other information. - -local function is_owner(pos, name) - local owner = minetest.get_meta(pos):get_string("owner") - if owner == "" or owner == name or minetest.check_player_privs(name, "protection_bypass") then - return true - end - return false -end - -local bones_formspec = - "size[8,9]" .. - default.gui_bg .. - default.gui_bg_img .. - default.gui_slots .. - "list[current_name;main;0,0.3;8,4;]" .. - "list[current_player;main;0,4.85;8,1;]" .. - "list[current_player;main;0,6.08;8,3;8]" .. - "listring[current_name;main]" .. - "listring[current_player;main]" .. - default.get_hotbar_bg(0,4.85) - -local share_bones_time = tonumber(minetest.settings:get("share_bones_time")) or 1200 -local share_bones_time_early = tonumber(minetest.settings:get("share_bones_time_early")) or share_bones_time / 4 - -minetest.register_node("bones:bones", { - description = "Bones", - tiles = { - "bones_nonshade.png", - "bones_shade.png", - "bones.png", - "bones.png", - "bones.png", - "bones.png" - }, - paramtype2 = "facedir", - drawtype="nodebox", - node_box= { - type = "fixed", - fixed = { - {-0.125, -0.5, -0.1875, -0.0625, -0.25, 0.1875}, -- NodeBox16 - {-0.0625, -0.5, -0.125, 0, -0.25, 0.1875}, -- NodeBox17 - {0, -0.5, -0.1875, 0.0625, -0.25, 0.1875}, -- NodeBox18 - {0.0625, -0.5, -0.125, 0.125, -0.25, 0.1875}, -- NodeBox19 - {0.125, -0.5, -0.1875, 0.1875, -0.25, 0.1875}, -- NodeBox20 - {-0.1875, -0.25, -0.1875, 0.25, -0.1875, 0.3125}, -- NodeBox22 - {-0.25, -0.1875, -0.25, 0.3125, -0.125, 0.375}, -- NodeBox23 - {-0.3125, -0.125, -0.25, -0.0625, 0, 0.4375}, -- NodeBox24 - {-0.0625, -0.125, -0.0625, 0, 0, 0.4375}, -- NodeBox26 - {0.0625, -0.125, -0.0625, 0.125, 0, 0.4375}, -- NodeBox27 - {0, -0.125, -0.25, 0.0625, 0, 0.4375}, -- NodeBox28 - {0.125, -0.125, -0.25, 0.375, 0, 0.4375}, -- NodeBox29 - {-0.3125, 0, -0.25, 0.375, 0.0625, 0.4375}, -- NodeBox30 - {-0.3125, 0.0625, -0.25, -0.1875, 0.125, 0.4375}, -- NodeBox31 - {-0.0625, 0.0625, -0.25, 0.125, 0.125, 0.4375}, -- NodeBox32 - {0.25, 0.0625, -0.25, 0.375, 0.125, 0.4375}, -- NodeBox33 - {-0.3125, 0.125, -0.25, -0.25, 0.25, 0.4375}, -- NodeBox34 - {-0.25, 0.25, -0.25, -0.1875, 0.3125, 0.4375}, -- NodeBox35 - {-0.1875, 0.3125, -0.25, 0.25, 0.375, 0.4375}, -- NodeBox37 - {-0.0625, 0.25, -0.25, 0.125, 0.3125, 0.4375}, -- NodeBox39 - {0, 0.125, -0.25, 0.0625, 0.25, 0.4375}, -- NodeBox40 - {0.3125, 0.125, -0.25, 0.375, 0.25, 0.4375}, -- NodeBox41 - {0.25, 0.25, -0.25, 0.3125, 0.3125, 0.4375}, -- NodeBox42 - {-0.25, 0.0625, 0.0625, 0.3125, 0.25, 0.4375}, -- NodeBox46 - {-0.1875, 0.25, 0.0625, 0.25, 0.3125, 0.4375}, -- NodeBox47 - {-0.25, -0.0625, 0.4375, 0.3125, 0.1875, 0.5}, -- NodeBox48 - {-0.125, 0.1875, 0.4375, 0.1875, 0.25, 0.5}, -- NodeBox49 - } - }, - groups = {dig_immediate = 2}, - sounds = default.node_sound_gravel_defaults(), - - can_dig = function(pos, player) - local inv = minetest.get_meta(pos):get_inventory() - local name = "" - if player then - name = player:get_player_name() - end - return is_owner(pos, name) and inv:is_empty("main") - end, - - allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - if is_owner(pos, player:get_player_name()) then - return count - end - return 0 - end, - - allow_metadata_inventory_put = function(pos, listname, index, stack, player) - return 0 - end, - - allow_metadata_inventory_take = function(pos, listname, index, stack, player) - if is_owner(pos, player:get_player_name()) then - return stack:get_count() - end - return 0 - end, - - on_metadata_inventory_take = function(pos, listname, index, stack, player) - local meta = minetest.get_meta(pos) - if meta:get_inventory():is_empty("main") then - minetest.remove_node(pos) - end - end, - - on_punch = function(pos, node, player) - if not is_owner(pos, player:get_player_name()) then - return - end - - if minetest.get_meta(pos):get_string("infotext") == "" then - return - end - - local inv = minetest.get_meta(pos):get_inventory() - local player_inv = player:get_inventory() - local has_space = true - - for i = 1, inv:get_size("main") do - local stk = inv:get_stack("main", i) - if player_inv:room_for_item("main", stk) then - inv:set_stack("main", i, nil) - player_inv:add_item("main", stk) - else - has_space = false - break - end - end - - -- remove bones if player emptied them - if has_space then - if player_inv:room_for_item("main", {name = "bones:bones"}) then - player_inv:add_item("main", {name = "bones:bones"}) - else - minetest.add_item(pos,"bones:bones") - end - minetest.remove_node(pos) - end - end, - - on_timer = function(pos, elapsed) - local meta = minetest.get_meta(pos) - local time = meta:get_int("time") + elapsed - if time >= share_bones_time then - meta:set_string("infotext", meta:get_string("owner") .. "'s old dreams") - meta:set_string("owner", "") - minetest.chat_send_all("Someone's forsaken the carcass of their dreams.") - minetest.chat_send_all("It can be found at " .. minetest.pos_to_string(pos) .. ".") - else - meta:set_int("time", time) - return true - end - end, - on_blast = function(pos) - end, -}) - -local function may_replace(pos, player) - local node_name = minetest.get_node(pos).name - local node_definition = minetest.registered_nodes[node_name] - - -- if the node is unknown, we return false - if not node_definition then - return false - end - - -- allow replacing air and liquids - if node_name == "air" or node_definition.liquidtype ~= "none" then - return true - end - - -- don't replace filled chests and other nodes that don't allow it - local can_dig_func = node_definition.can_dig - if can_dig_func and not can_dig_func(pos, player) then - return false - end - - -- default to each nodes buildable_to; if a placed block would replace it, why shouldn't bones? - -- flowers being squished by bones are more realistical than a squished stone, too - -- exception are of course any protected buildable_to - return node_definition.buildable_to and not minetest.is_protected(pos, player:get_player_name()) -end - -local drop = function(pos, itemstack) - local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count())) - if obj then - obj:setvelocity({ - x = math.random(-10, 10) / 9, - y = 5, - z = math.random(-10, 10) / 9, - }) - end -end - -minetest.register_on_dieplayer(function(player) - - local bones_mode = minetest.settings:get("bones_mode") or "bones" - if bones_mode ~= "bones" and bones_mode ~= "drop" and bones_mode ~= "keep" then - bones_mode = "bones" - end - - -- return if keep inventory set or in creative mode - if bones_mode == "keep" or (creative and creative.is_enabled_for - and creative.is_enabled_for(player:get_player_name())) then - return - end - - local player_inv = player:get_inventory() - if player_inv:is_empty("main") and - player_inv:is_empty("craft") then - return - end - - local pos = vector.round(player:getpos()) - local player_name = player:get_player_name() - - -- check if it's possible to place bones, if not find space near player - if bones_mode == "bones" and not may_replace(pos, player) then - local air = minetest.find_node_near(pos, 1, {"air"}) - if air and not minetest.is_protected(air, player_name) then - pos = air - else - bones_mode = "drop" - end - end - - if bones_mode == "drop" then - - -- drop inventory items - for i = 1, player_inv:get_size("main") do - drop(pos, player_inv:get_stack("main", i)) - end - player_inv:set_list("main", {}) - - -- drop crafting grid items - for i = 1, player_inv:get_size("craft") do - drop(pos, player_inv:get_stack("craft", i)) - end - player_inv:set_list("craft", {}) - - drop(pos, ItemStack("bones:bones")) - return - end - - local param2 = minetest.dir_to_facedir(player:get_look_dir()) - minetest.set_node(pos, {name = "bones:bones", param2 = param2}) - - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - inv:set_size("main", 8 * 4) - inv:set_list("main", player_inv:get_list("main")) - - for i = 1, player_inv:get_size("craft") do - local stack = player_inv:get_stack("craft", i) - if inv:room_for_item("main", stack) then - inv:add_item("main", stack) - else - --drop if no space left - drop(pos, stack) - end - end - - player_inv:set_list("main", {}) - player_inv:set_list("craft", {}) - - meta:set_string("formspec", bones_formspec) - meta:set_string("owner", player_name) - - minetest.chat_send_player(player_name, "Your dreams can be found at " .. minetest.pos_to_string(pos) .. ".") - - if share_bones_time ~= 0 then - meta:set_string("infotext", player_name .. "'s fresh skull") - - if share_bones_time_early == 0 or not minetest.is_protected(pos, player_name) then - meta:set_int("time", 0) - else - meta:set_int("time", (share_bones_time - share_bones_time_early)) - end - - minetest.get_node_timer(pos):start(10) - else - meta:set_string("infotext", player_name.."'s old dreams") - end -end) diff --git a/mods/bones.diff/init.lua.diff b/mods/bones.diff/init.lua.diff deleted file mode 100644 index 7c3f1e8..0000000 --- a/mods/bones.diff/init.lua.diff +++ /dev/null @@ -1,66 +0,0 @@ -30,35c30,35 -< "bones_top.png^[transform2", -< "bones_bottom.png", -< "bones_side.png", -< "bones_side.png", -< "bones_rear.png", -< "bones_front.png" ---- -> "bones_nonshade.png", -> "bones_shade.png", -> "bones.png", -> "bones.png", -> "bones.png", -> "bones.png" -37a38,70 -> drawtype="nodebox", -> node_box= { -> type = "fixed", -> fixed = { -> {-0.125, -0.5, -0.1875, -0.0625, -0.25, 0.1875}, -- NodeBox16 -> {-0.0625, -0.5, -0.125, 0, -0.25, 0.1875}, -- NodeBox17 -> {0, -0.5, -0.1875, 0.0625, -0.25, 0.1875}, -- NodeBox18 -> {0.0625, -0.5, -0.125, 0.125, -0.25, 0.1875}, -- NodeBox19 -> {0.125, -0.5, -0.1875, 0.1875, -0.25, 0.1875}, -- NodeBox20 -> {-0.1875, -0.25, -0.1875, 0.25, -0.1875, 0.3125}, -- NodeBox22 -> {-0.25, -0.1875, -0.25, 0.3125, -0.125, 0.375}, -- NodeBox23 -> {-0.3125, -0.125, -0.25, -0.0625, 0, 0.4375}, -- NodeBox24 -> {-0.0625, -0.125, -0.0625, 0, 0, 0.4375}, -- NodeBox26 -> {0.0625, -0.125, -0.0625, 0.125, 0, 0.4375}, -- NodeBox27 -> {0, -0.125, -0.25, 0.0625, 0, 0.4375}, -- NodeBox28 -> {0.125, -0.125, -0.25, 0.375, 0, 0.4375}, -- NodeBox29 -> {-0.3125, 0, -0.25, 0.375, 0.0625, 0.4375}, -- NodeBox30 -> {-0.3125, 0.0625, -0.25, -0.1875, 0.125, 0.4375}, -- NodeBox31 -> {-0.0625, 0.0625, -0.25, 0.125, 0.125, 0.4375}, -- NodeBox32 -> {0.25, 0.0625, -0.25, 0.375, 0.125, 0.4375}, -- NodeBox33 -> {-0.3125, 0.125, -0.25, -0.25, 0.25, 0.4375}, -- NodeBox34 -> {-0.25, 0.25, -0.25, -0.1875, 0.3125, 0.4375}, -- NodeBox35 -> {-0.1875, 0.3125, -0.25, 0.25, 0.375, 0.4375}, -- NodeBox37 -> {-0.0625, 0.25, -0.25, 0.125, 0.3125, 0.4375}, -- NodeBox39 -> {0, 0.125, -0.25, 0.0625, 0.25, 0.4375}, -- NodeBox40 -> {0.3125, 0.125, -0.25, 0.375, 0.25, 0.4375}, -- NodeBox41 -> {0.25, 0.25, -0.25, 0.3125, 0.3125, 0.4375}, -- NodeBox42 -> {-0.25, 0.0625, 0.0625, 0.3125, 0.25, 0.4375}, -- NodeBox46 -> {-0.1875, 0.25, 0.0625, 0.25, 0.3125, 0.4375}, -- NodeBox47 -> {-0.25, -0.0625, 0.4375, 0.3125, 0.1875, 0.5}, -- NodeBox48 -> {-0.125, 0.1875, 0.4375, 0.1875, 0.25, 0.5}, -- NodeBox49 -> } -> }, -114c147 -< meta:set_string("infotext", meta:get_string("owner") .. "'s old bones") ---- -> meta:set_string("infotext", meta:get_string("owner") .. "'s old dreams") -115a149,150 -> minetest.chat_send_all("Someone's forsaken the carcass of their dreams.") -> minetest.chat_send_all("It can be found at " .. minetest.pos_to_string(pos) .. ".") -235a271,272 -> minetest.chat_send_player(player_name, "Your dreams can be found at " .. minetest.pos_to_string(pos) .. ".") -> -237c274 -< meta:set_string("infotext", player_name .. "'s fresh bones") ---- -> meta:set_string("infotext", player_name .. "'s fresh skull") -247c284 -< meta:set_string("infotext", player_name.."'s bones") ---- -> meta:set_string("infotext", player_name.."'s old dreams") diff --git a/mods/bones.diff/license.txt b/mods/bones.diff/license.txt deleted file mode 100644 index 9d3fd6e..0000000 --- a/mods/bones.diff/license.txt +++ /dev/null @@ -1,51 +0,0 @@ -License of source code ----------------------- - -The MIT License (MIT) -Copyright (C) 2012-2016 PilzAdam -Copyright (C) 2012-2016 Various Minetest developers and contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this -software and associated documentation files (the "Software"), to deal in the Software -without restriction, including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or -substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -For more details: -https://opensource.org/licenses/MIT - - -Licenses of media (textures & nodebox) ----------------------------- - -The MIT License (MIT) -Copyright (C) 2017-2018 jadedctrl - -Permission is hereby granted, free of charge, to any person obtaining a copy of this -software and associated documentation files (the "Software"), to deal in the Software -without restriction, including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or -substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -For more details: -https://opensource.org/licenses/MIT diff --git a/mods/bones.diff/license.txt.diff b/mods/bones.diff/license.txt.diff deleted file mode 100644 index 689283d..0000000 --- a/mods/bones.diff/license.txt.diff +++ /dev/null @@ -1,54 +0,0 @@ -28c28 -< Licenses of media (textures) ---- -> Licenses of media (textures & nodebox) -31,32c31,32 -< Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -< Copyright (C) 2016 paramat ---- -> The MIT License (MIT) -> Copyright (C) 2017-2018 jadedctrl -34,57c34,48 -< You are free to: -< Share — copy and redistribute the material in any medium or format. -< Adapt — remix, transform, and build upon the material for any purpose, even commercially. -< The licensor cannot revoke these freedoms as long as you follow the license terms. -< -< Under the following terms: -< -< Attribution — You must give appropriate credit, provide a link to the license, and -< indicate if changes were made. You may do so in any reasonable manner, but not in any way -< that suggests the licensor endorses you or your use. -< -< ShareAlike — If you remix, transform, or build upon the material, you must distribute -< your contributions under the same license as the original. -< -< No additional restrictions — You may not apply legal terms or technological measures that -< legally restrict others from doing anything the license permits. -< -< Notices: -< -< You do not have to comply with the license for elements of the material in the public -< domain or where your use is permitted by an applicable exception or limitation. -< No warranties are given. The license may not give you all of the permissions necessary -< for your intended use. For example, other rights such as publicity, privacy, or moral -< rights may limit how you use the material. ---- -> Permission is hereby granted, free of charge, to any person obtaining a copy of this -> software and associated documentation files (the "Software"), to deal in the Software -> without restriction, including without limitation the rights to use, copy, modify, merge, -> publish, distribute, sublicense, and/or sell copies of the Software, and to permit -> persons to whom the Software is furnished to do so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in all copies or -> substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -> INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -> PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -> FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -> OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -> DEALINGS IN THE SOFTWARE. -58a50,51 -> For more details: -> https://opensource.org/licenses/MIT diff --git a/mods/bones.diff/source.txt b/mods/bones.diff/source.txt deleted file mode 100644 index 516ed14..0000000 --- a/mods/bones.diff/source.txt +++ /dev/null @@ -1 +0,0 @@ -https://github.com/minetest/minetest_game/archive/0.4.16.tar.gz diff --git a/mods/bones.diff/textures/bones.png b/mods/bones.diff/textures/bones.png deleted file mode 100644 index fb49a2c..0000000 Binary files a/mods/bones.diff/textures/bones.png and /dev/null differ diff --git a/mods/bones.diff/textures/bones_bottom.png b/mods/bones.diff/textures/bones_bottom.png deleted file mode 100644 index 859c6bb..0000000 Binary files a/mods/bones.diff/textures/bones_bottom.png and /dev/null differ diff --git a/mods/bones.diff/textures/bones_nonshade.png b/mods/bones.diff/textures/bones_nonshade.png deleted file mode 100644 index 56bfa49..0000000 Binary files a/mods/bones.diff/textures/bones_nonshade.png and /dev/null differ diff --git a/mods/bones.diff/textures/bones_shade.png b/mods/bones.diff/textures/bones_shade.png deleted file mode 100644 index eb9a27e..0000000 Binary files a/mods/bones.diff/textures/bones_shade.png and /dev/null differ diff --git a/mods/bucket.diff/README.txt b/mods/bucket.diff/README.txt deleted file mode 100644 index dbde39e..0000000 --- a/mods/bucket.diff/README.txt +++ /dev/null @@ -1,7 +0,0 @@ -Bucket -===================================================================== -Main: Kahrl, celeron55, Ahola -Lisc: LGPL 2.1 -Text: CC-BY-SA 3.0 - By ElementW -Link: https://github.com/minetest/minetest_game diff --git a/mods/bucket.diff/README.txt.diff b/mods/bucket.diff/README.txt.diff deleted file mode 100644 index bc6f896..0000000 --- a/mods/bucket.diff/README.txt.diff +++ /dev/null @@ -1,22 +0,0 @@ -1,13c1,7 -< Minetest Game mod: bucket -< ========================= -< See license.txt for license information. -< -< Authors of source code -< ---------------------- -< Kahrl (LGPL 2.1) -< celeron55, Perttu Ahola (LGPL 2.1) -< Various Minetest developers and contributors (LGPL 2.1) -< -< Authors of media (textures) -< --------------------------- -< ElementW (CC BY-SA 3.0) ---- -> Bucket -> ===================================================================== -> Main: Kahrl, celeron55, Ahola -> Lisc: LGPL 2.1 -> Text: CC-BY-SA 3.0 -> By ElementW -> Link: https://github.com/minetest/minetest_game diff --git a/mods/bucket.diff/license.txt b/mods/bucket.diff/license.txt deleted file mode 100644 index a5156ae..0000000 --- a/mods/bucket.diff/license.txt +++ /dev/null @@ -1,51 +0,0 @@ -License of source code ----------------------- - -GNU Lesser General Public License, version 2.1 -Copyright (C) 2011-2016 Kahrl -Copyright (C) 2011-2016 celeron55, Perttu Ahola -Copyright (C) 2011-2016 Various Minetest developers and contributors - -This program is free software; you can redistribute it and/or modify it under the terms -of the GNU Lesser General Public License as published by the Free Software Foundation; -either version 2.1 of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; -without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -See the GNU Lesser General Public License for more details: -https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html - - -Licenses of media (textures) ----------------------------- - -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -Copyright (C) 2015-2016 ElementW - -You are free to: -Share — copy and redistribute the material in any medium or format. -Adapt — remix, transform, and build upon the material for any purpose, even commercially. -The licensor cannot revoke these freedoms as long as you follow the license terms. - -Under the following terms: - -Attribution — You must give appropriate credit, provide a link to the license, and -indicate if changes were made. You may do so in any reasonable manner, but not in any way -that suggests the licensor endorses you or your use. - -ShareAlike — If you remix, transform, or build upon the material, you must distribute -your contributions under the same license as the original. - -No additional restrictions — You may not apply legal terms or technological measures that -legally restrict others from doing anything the license permits. - -Notices: - -You do not have to comply with the license for elements of the material in the public -domain or where your use is permitted by an applicable exception or limitation. -No warranties are given. The license may not give you all of the permissions necessary -for your intended use. For example, other rights such as publicity, privacy, or moral -rights may limit how you use the material. - -For more details: -http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/bucket.diff/source.txt b/mods/bucket.diff/source.txt deleted file mode 100644 index 516ed14..0000000 --- a/mods/bucket.diff/source.txt +++ /dev/null @@ -1 +0,0 @@ -https://github.com/minetest/minetest_game/archive/0.4.16.tar.gz diff --git a/mods/bucket.diff/textures/bucket.png b/mods/bucket.diff/textures/bucket.png deleted file mode 100755 index 267b3ce..0000000 Binary files a/mods/bucket.diff/textures/bucket.png and /dev/null differ diff --git a/mods/bucket.diff/textures/bucket_lava.png b/mods/bucket.diff/textures/bucket_lava.png deleted file mode 100644 index e5f8006..0000000 Binary files a/mods/bucket.diff/textures/bucket_lava.png and /dev/null differ diff --git a/mods/bucket.diff/textures/bucket_river_water.png b/mods/bucket.diff/textures/bucket_river_water.png deleted file mode 100644 index f038cb5..0000000 Binary files a/mods/bucket.diff/textures/bucket_river_water.png and /dev/null differ diff --git a/mods/bucket.diff/textures/bucket_water.png b/mods/bucket.diff/textures/bucket_water.png deleted file mode 100644 index 80dd03c..0000000 Binary files a/mods/bucket.diff/textures/bucket_water.png and /dev/null differ diff --git a/mods/bucket.diff/textures/nohup.out b/mods/bucket.diff/textures/nohup.out deleted file mode 100644 index 0adc40d..0000000 --- a/mods/bucket.diff/textures/nohup.out +++ /dev/null @@ -1 +0,0 @@ -GEGL-geglmodule.c-Message: Module '/usr/lib/gegl-0.2/openraw.so' load error: libopenraw.so.7: cannot open shared object file: No such file or directory diff --git a/mods/carts.diff/README.txt b/mods/carts.diff/README.txt deleted file mode 100644 index 4ee2097..0000000 --- a/mods/carts.diff/README.txt +++ /dev/null @@ -1,20 +0,0 @@ -Carts -===================================================================== -Main: SmallJoker -Lisc: MIT -Text: CC-0 - Derivative of Gambit - carts_cart_side.png - carts_cart_top.png - carts_cart_front.png - carts_cart.png - Derivative of hexafraction & sofar - carts_rail_*.png -3Dmo: CC-0 - By sofar & stujones11 - carts_card.b3d - carts_card.blend -Audi: CC-BY-SA 3.9 - By YleArkisto - carts_cart_moving*.ogg -Link: https://github.com/minetest/minetest_game diff --git a/mods/carts.diff/README.txt.diff b/mods/carts.diff/README.txt.diff deleted file mode 100644 index 7ff380d..0000000 --- a/mods/carts.diff/README.txt.diff +++ /dev/null @@ -1,44 +0,0 @@ -1,22c1,20 -< Carts (formerly boost_cart) -< ========================== -< -< Carts, based almost entirely on the mod boost_cart [1], which -< itself is based on (and fully compatible with) the carts mod [2]. -< -< The model was originally designed by stujones11 [3] (CC-0). -< -< Cart textures are based on original work from PixelBOX (WTFPL). -< -< -< [1] https://github.com/SmallJoker/boost_cart/ -< [2] https://github.com/PilzAdam/carts/ -< [3] https://github.com/stujones11/railcart/ -< -< -< Features -< ---------- -< - A fast cart for your railway or roller coaster (up to 7 m/s!) -< - Boost and brake rails -< - Rail junction switching with the 'right-left' walking keys -< - Handbrake with the 'back' key ---- -> Carts -> ===================================================================== -> Main: SmallJoker -> Lisc: MIT -> Text: CC-0 -> Derivative of Gambit -> carts_cart_side.png -> carts_cart_top.png -> carts_cart_front.png -> carts_cart.png -> Derivative of hexafraction & sofar -> carts_rail_*.png -> 3Dmo: CC-0 -> By sofar & stujones11 -> carts_card.b3d -> carts_card.blend -> Audi: CC-BY-SA 3.9 -> By YleArkisto -> carts_cart_moving*.ogg -> Link: https://github.com/minetest/minetest_game diff --git a/mods/carts.diff/rails.lua b/mods/carts.diff/rails.lua deleted file mode 100644 index 4ac13c7..0000000 --- a/mods/carts.diff/rails.lua +++ /dev/null @@ -1,59 +0,0 @@ -carts:register_rail("carts:rail", { - description = "Rail", - tiles = { - "carts_rail_straight.png", "carts_rail_curved.png", - "carts_rail_t_junction.png", "carts_rail_crossing.png" - }, - inventory_image = "carts_rail_straight.png", - wield_image = "carts_rail_straight.png", - groups = carts:get_rail_groups(), -}, {}) - -minetest.register_craft({ - output = "carts:rail 18", - recipe = { - {"default:steel_ingot", "group:wood", "default:steel_ingot"}, - {"default:steel_ingot", "", "default:steel_ingot"}, - {"default:steel_ingot", "group:wood", "default:steel_ingot"}, - } -}) - -minetest.register_alias("default:rail", "carts:rail") - - -carts:register_rail("carts:powerrail", { - description = "Powered Rail", - tiles = { - "carts_rail_straight_pwr.png", "carts_rail_curved_pwr.png", - "carts_rail_t_junction_pwr.png", "carts_rail_crossing_pwr.png" - }, - groups = carts:get_rail_groups(), -}, {acceleration = 20}) - -minetest.register_craft({ - output = "carts:powerrail 18", - recipe = { - {"default:steel_ingot", "group:wood", "default:steel_ingot"}, - {"default:steel_ingot", "default:mese_crystal", "default:steel_ingot"}, - {"default:steel_ingot", "group:wood", "default:steel_ingot"}, - } -}) - - -carts:register_rail("carts:brakerail", { - description = "Brake Rail", - tiles = { - "carts_rail_straight_brk.png", "carts_rail_curved_brk.png", - "carts_rail_t_junction_brk.png", "carts_rail_crossing_brk.png" - }, - groups = carts:get_rail_groups(), -}, {acceleration = -3}) - -minetest.register_craft({ - output = "carts:brakerail 18", - recipe = { - {"default:steel_ingot", "group:wood", "default:steel_ingot"}, - {"default:steel_ingot", "default:coal_lump", "default:steel_ingot"}, - {"default:steel_ingot", "group:wood", "default:steel_ingot"}, - } -}) diff --git a/mods/carts.diff/rails.lua.diff b/mods/carts.diff/rails.lua.diff deleted file mode 100644 index 1b1790b..0000000 --- a/mods/carts.diff/rails.lua.diff +++ /dev/null @@ -1,12 +0,0 @@ -25c25 -< description = "Powered rail", ---- -> description = "Powered Rail", -31c31 -< }, {acceleration = 5}) ---- -> }, {acceleration = 20}) -44c44 -< description = "Brake rail", ---- -> description = "Brake Rail", diff --git a/mods/carts.diff/source.txt b/mods/carts.diff/source.txt deleted file mode 100644 index 516ed14..0000000 --- a/mods/carts.diff/source.txt +++ /dev/null @@ -1 +0,0 @@ -https://github.com/minetest/minetest_game/archive/0.4.16.tar.gz diff --git a/mods/carts.diff/textures/carts_cart.png b/mods/carts.diff/textures/carts_cart.png deleted file mode 100644 index 190e637..0000000 Binary files a/mods/carts.diff/textures/carts_cart.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_cart_front.png b/mods/carts.diff/textures/carts_cart_front.png deleted file mode 100644 index 4e2b3be..0000000 Binary files a/mods/carts.diff/textures/carts_cart_front.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_cart_side.png b/mods/carts.diff/textures/carts_cart_side.png deleted file mode 100644 index aba6944..0000000 Binary files a/mods/carts.diff/textures/carts_cart_side.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_cart_top.png b/mods/carts.diff/textures/carts_cart_top.png deleted file mode 100644 index 6c277c9..0000000 Binary files a/mods/carts.diff/textures/carts_cart_top.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_rail_crossing.png b/mods/carts.diff/textures/carts_rail_crossing.png deleted file mode 100644 index 406ef58..0000000 Binary files a/mods/carts.diff/textures/carts_rail_crossing.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_rail_crossing_brk.png b/mods/carts.diff/textures/carts_rail_crossing_brk.png deleted file mode 100644 index 7b2e789..0000000 Binary files a/mods/carts.diff/textures/carts_rail_crossing_brk.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_rail_crossing_pwr.png b/mods/carts.diff/textures/carts_rail_crossing_pwr.png deleted file mode 100644 index 0fdb10d..0000000 Binary files a/mods/carts.diff/textures/carts_rail_crossing_pwr.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_rail_curved.png b/mods/carts.diff/textures/carts_rail_curved.png deleted file mode 100644 index 957048e..0000000 Binary files a/mods/carts.diff/textures/carts_rail_curved.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_rail_curved_brk.png b/mods/carts.diff/textures/carts_rail_curved_brk.png deleted file mode 100644 index 1f0ac04..0000000 Binary files a/mods/carts.diff/textures/carts_rail_curved_brk.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_rail_curved_pwr.png b/mods/carts.diff/textures/carts_rail_curved_pwr.png deleted file mode 100644 index 43016a4..0000000 Binary files a/mods/carts.diff/textures/carts_rail_curved_pwr.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_rail_straight.png b/mods/carts.diff/textures/carts_rail_straight.png deleted file mode 100644 index 6bee22f..0000000 Binary files a/mods/carts.diff/textures/carts_rail_straight.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_rail_straight_brk.png b/mods/carts.diff/textures/carts_rail_straight_brk.png deleted file mode 100644 index e331755..0000000 Binary files a/mods/carts.diff/textures/carts_rail_straight_brk.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_rail_straight_pwr.png b/mods/carts.diff/textures/carts_rail_straight_pwr.png deleted file mode 100644 index 2515d5c..0000000 Binary files a/mods/carts.diff/textures/carts_rail_straight_pwr.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_rail_t_junction.png b/mods/carts.diff/textures/carts_rail_t_junction.png deleted file mode 100644 index d96a99a..0000000 Binary files a/mods/carts.diff/textures/carts_rail_t_junction.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_rail_t_junction_brk.png b/mods/carts.diff/textures/carts_rail_t_junction_brk.png deleted file mode 100644 index d64dba4..0000000 Binary files a/mods/carts.diff/textures/carts_rail_t_junction_brk.png and /dev/null differ diff --git a/mods/carts.diff/textures/carts_rail_t_junction_pwr.png b/mods/carts.diff/textures/carts_rail_t_junction_pwr.png deleted file mode 100644 index 7ea04e3..0000000 Binary files a/mods/carts.diff/textures/carts_rail_t_junction_pwr.png and /dev/null differ diff --git a/mods/craftguide/.gitignore b/mods/craftguide/.gitignore new file mode 100644 index 0000000..ef02689 --- /dev/null +++ b/mods/craftguide/.gitignore @@ -0,0 +1,22 @@ +## Files related to minetest development cycle +/*.patch +# GNU Patch reject file +*.rej + +## Editors and Development environments +*~ +*.swp +*.bak* +*.orig +# Vim +*.vim +# Kate +.*.kate-swp +.swp.* +# Eclipse (LDT) +.project +.settings/ +.buildpath +.metadata +# Idea IDE +.idea/* diff --git a/mods/craftguide/.luacheckrc b/mods/craftguide/.luacheckrc new file mode 100644 index 0000000..65cdb0d --- /dev/null +++ b/mods/craftguide/.luacheckrc @@ -0,0 +1,8 @@ +unused_args = false +allow_defined_top = true + +read_globals = { + "minetest", + "default", + "sfinv_buttons", +} diff --git a/mods/craftguide/LICENSE b/mods/craftguide/LICENSE new file mode 100644 index 0000000..1791045 --- /dev/null +++ b/mods/craftguide/LICENSE @@ -0,0 +1,9 @@ +« Copyright © 2015-2017, Jean-Patrick Guerrero + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Softwareâ€), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +The Software is provided “as isâ€, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders X be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software. + +Except as contained in this notice, the name of the shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the . » diff --git a/mods/craftguide/README.md b/mods/craftguide/README.md new file mode 100644 index 0000000..27b5bed --- /dev/null +++ b/mods/craftguide/README.md @@ -0,0 +1,7 @@ +Craftguide +===================================================================== +Main: killbith +Lisc: GPL v3 +Text: WTFPL + By Gambit +Link: https://github.com/minetest-mods/craftguide diff --git a/mods/craftguide/README.md.diff b/mods/craftguide/README.md.diff new file mode 100644 index 0000000..ae7bd08 --- /dev/null +++ b/mods/craftguide/README.md.diff @@ -0,0 +1,23 @@ +1,14c1,7 +< ## ![Preview1](http://i.imgur.com/fIPNYkb.png) Crafting Guide ## +< +< #### A Crafting Guide for Minetest that doesn't suck. #### +< +< #### `craftguide` is simply the most comprehensive mod of his category, with the cleanest code. #### +< #### Consult the [Minetest Wiki](http://wiki.minetest.net/Crafting_guide) for more details and comparisons. #### +< +< #### This crafting guide is usable with a blue book named *"Crafting Guide"*. #### +< +< #### This crafting guide features two modes : Standard and Progressive. #### +< The Progressive mode is a Terraria-like system that only shows recipes you can craft from items in inventory. +< The progressive mode can be enabled with `craftguide_progressive_mode = true` in `minetest.conf`. +< +< ![Preview2](http://i.imgur.com/3q7rVSo.png) +--- +> Craftguide +> ===================================================================== +> Main: killbith +> Lisc: GPL v3 +> Text: WTFPL +> By Gambit +> Link: https://github.com/minetest-mods/craftguide diff --git a/mods/craftguide/depends.txt b/mods/craftguide/depends.txt new file mode 100644 index 0000000..84ff3c0 --- /dev/null +++ b/mods/craftguide/depends.txt @@ -0,0 +1 @@ +sfinv_buttons? diff --git a/mods/craftguide/description.txt b/mods/craftguide/description.txt new file mode 100644 index 0000000..b5c0540 --- /dev/null +++ b/mods/craftguide/description.txt @@ -0,0 +1,2 @@ +The most comprehensive Crafting Guide +on Minetest. diff --git a/mods/craftguide/init.lua b/mods/craftguide/init.lua new file mode 100644 index 0000000..d1d5c18 --- /dev/null +++ b/mods/craftguide/init.lua @@ -0,0 +1,500 @@ +local craftguide, datas, mt = {}, {searches = {}}, minetest +local progressive_mode = mt.settings:get_bool("craftguide_progressive_mode") +local get_recipe, get_recipes = mt.get_craft_recipe, mt.get_all_craft_recipes +local get_result, show_formspec = mt.get_craft_result, mt.show_formspec +local reg_items = mt.registered_items + +-- Lua 5.3 removed `table.maxn`, use this alternative in case of breakage: +-- https://github.com/kilbith/xdecor/blob/master/handlers/helpers.lua#L1 +local remove, maxn, sort = table.remove, table.maxn, table.sort +local min, max, floor, ceil = math.min, math.max, math.floor, math.ceil + +local DEFAULT_SIZE, MIN_LIMIT, MAX_LIMIT = 10, 9, 12 + +local group_stereotypes = { + wool = "wool:white", + dye = "dye:white", + water_bucket = "bucket:bucket_water", + vessel = "vessels:glass_bottle", + coal = "default:coal_lump", + flower = "flowers:dandelion_yellow", + mesecon_conductor_craftable = "mesecons:wire_00000000_off", +} + +function craftguide:group_to_item(item) + if item:sub(1,6) == "group:" then + local itemsub = item:sub(7) + if group_stereotypes[itemsub] then + item = group_stereotypes[itemsub] + elseif reg_items["default:" .. itemsub] then + item = item:gsub("group:", "default:") + else + for name, def in pairs(reg_items) do + if def.groups[item:match("[^,:]+$")] then + item = name + end + end + end + end + + return item:sub(1,6) == "group:" and "" or item +end + +local function extract_groups(str) + if str:sub(1,6) ~= "group:" then return end + return str:sub(7):split(",") +end + +local function colorize(str) + -- If client <= 0.4.14, don't colorize for compatibility. + return mt.colorize and mt.colorize("#FFFF00", str) or str +end + +local function get_fueltime(item) + return get_result({method = "fuel", width = 1, items = {item}}).time +end + +function craftguide:get_tooltip(item, recipe_type, cooktime, groups) + local tooltip, item_desc = "tooltip[" .. item .. ";", "" + local fueltime = get_fueltime(item) + local has_extras = groups or recipe_type == "cooking" or fueltime > 0 + + if reg_items[item] then + if not groups then + item_desc = reg_items[item].description + end + else + return tooltip .. "Unknown Item (" .. item .. ")]" + end + + if groups then + local groupstr = "Any item belonging to the " + for i = 1, #groups do + groupstr = groupstr .. colorize(groups[i]) .. + (groups[i + 1] and " and " or "") + end + tooltip = tooltip .. groupstr .. " group(s)" + end + + if recipe_type == "cooking" then + tooltip = tooltip .. item_desc .. "\nCooking time: " .. colorize(cooktime) + end + + if fueltime > 0 then + tooltip = tooltip .. item_desc .. "\nBurning time: " .. colorize(fueltime) + end + + return has_extras and tooltip .. "]" or "" +end + +function craftguide:get_recipe(iY, xoffset, tooltip, item, recipe_num, recipes) + local formspec, recipes_total = "", #recipes + if recipes_total > 1 then + formspec = formspec .. + "button[0," .. (iY + 3.3) .. ";2,1;alternate;Alternate]" .. + "label[0," .. (iY + 2.8) .. ";Recipe " .. + recipe_num .. " of " .. recipes_total .. "]" + end + + local recipe_type = recipes[recipe_num].type + local items = recipes[recipe_num].items + local width = recipes[recipe_num].width + + if recipe_type == "cooking" or (recipe_type == "normal" and width == 0) then + local icon = recipe_type == "cooking" and "furnace" or "shapeless" + formspec = formspec .. + "image[" .. (xoffset - 0.8) .. "," .. (iY + 1.7) .. + ".5;0.5,0.5;craftguide_" .. icon .. ".png]" + end + + if width == 0 then + width = min(3, #items) + end + + local rows = ceil(maxn(items) / width) + local btn_size, craftgrid_limit = 1, 5 + + if recipe_type == "normal" and + width > craftgrid_limit or rows > craftgrid_limit then + formspec = formspec .. + "label[" .. xoffset .. "," .. (iY + 2) .. + ";Recipe is too big to\nbe displayed (" .. + width .. "x" .. rows .. ")]" + else + for i, v in pairs(items) do + local X = (i - 1) % width + xoffset + local Y = ceil(i / width + (iY + 2) - min(2, rows)) + + if recipe_type == "normal" and width > 3 or rows > 3 then + btn_size = width > 3 and 3 / width or 3 / rows + X = btn_size * (i % width) + xoffset + Y = btn_size * floor((i - 1) / width) + (iY + 3) - min(2, rows) + end + + local groups = extract_groups(v) + local label = groups and "\nG" or "" + local item_r = self:group_to_item(v) + local tltip = self:get_tooltip(item_r, recipe_type, width, groups) + + formspec = formspec .. + "item_image_button[" .. X .. "," .. (Y + 0.2) .. ";" .. + btn_size .. "," .. btn_size .. ";" .. item_r .. + ";" .. item_r .. ";" .. label .. "]" .. tltip + end + end + + local output = recipes[recipe_num].output + return formspec .. + "image[" .. (xoffset - 1) .. "," .. (iY + 2.35) .. + ".12;0.9,0.7;craftguide_arrow.png]" .. + "item_image_button[" .. (xoffset - 2) .. "," .. (iY + 2.2) .. ";1,1;" .. + output .. ";" .. item .. ";]" .. tooltip +end + +function craftguide:get_formspec(player_name, is_fuel) + local data = datas[player_name] + local iY = data.iX - 5 + local ipp = data.iX * iY + + if not data.items then + data.items = datas.init_items + end + + data.pagemax = max(1, ceil(#data.items / ipp)) + + local formspec = "size[" .. (data.iX - 0.35) .. "," .. (iY + 4) .. ";]" .. [[ + background[1,1;1,1;craftguide_bg.png;true] + button[2.4,0.23;0.8,0.5;search;?] + button[3.05,0.23;0.8,0.5;clear;X] + tooltip[search;Search] + tooltip[clear;Reset] + tooltip[size_inc;Increase window size] + tooltip[size_dec;Decrease window size] + field_close_on_enter[filter;false] ]] .. + "button[" .. (data.iX * 0.48) .. ",-0.02;0.7,1;size_inc;+]" .. + "button[" .. ((data.iX * 0.48) + 0.5) .. + ",-0.02;0.7,1;size_dec;-]" .. + "button[" .. (data.iX - 3.1) .. ".4,0;0.8,0.95;prev;<]" .. + "label[" .. (data.iX - 2.2) .. ".1,0.18;" .. + colorize(data.pagenum) .. " / " .. data.pagemax .. "]" .. + "button[" .. (data.iX - 1.2) .. ".2,0;0.8,0.95;next;>]" .. + "field[0.3,0.32;2.5,1;filter;;" .. + mt.formspec_escape(data.filter) .. "]" + + local even_num = data.iX % 2 == 0 + local xoffset = data.iX / 2 + (even_num and 0.5 or 0) + + if not next(data.items) then + formspec = formspec .. + "label[" .. (xoffset - (even_num and 1.5 or 1)) .. ",2;No item to show]" + end + + local first_item = (data.pagenum - 1) * ipp + for i = first_item, first_item + ipp - 1 do + local name = data.items[i + 1] + if not name then break end + local X = i % data.iX + local Y = (i % ipp - X) / data.iX + 1 + + formspec = formspec .. + "item_image_button[" .. (X - (X * 0.05)) .. "," .. Y .. ";1.1,1.1;" .. + name .. ";" .. name .. "_inv;]" + end + + if data.item and reg_items[data.item] then + local tooltip = self:get_tooltip(data.item) + if not data.recipes_item or (is_fuel and not get_recipe(data.item).items) then + formspec = formspec .. + "image[" .. (xoffset - 1) .. "," .. (iY + 2.35) .. + ".12;0.9,0.7;craftguide_arrow.png]" .. + "item_image_button[" .. xoffset .. "," .. (iY + 2.2) .. + ";1,1;" .. data.item .. ";" .. data.item .. ";]" .. + tooltip .. + "image[" .. (xoffset - 2) .. "," .. + (iY + 2.18) .. ";1,1;craftguide_fire.png]" + else + formspec = formspec .. + self:get_recipe(iY, xoffset, tooltip, data.item, + data.recipe_num, data.recipes_item) + end + end + + data.formspec = formspec + show_formspec(player_name, "craftguide", formspec) +end + +local function player_has_item(T) + for i = 1, #T do + if T[i] then + return true + end + end +end + +local function group_to_items(group) + local items_with_group, counter = {}, 0 + for name, def in pairs(reg_items) do + if def.groups[group:sub(7)] then + counter = counter + 1 + items_with_group[counter] = name + end + end + + return items_with_group +end + +local function item_in_inv(inv, item) + return inv:contains_item("main", item) +end + +function craftguide:recipe_in_inv(inv, item_name, recipes_f) + local recipes = recipes_f or get_recipes(item_name) or {} + local show_item_recipes = {} + + for i = 1, #recipes do + show_item_recipes[i] = true + for _, item in pairs(recipes[i].items) do + local group_in_inv = false + if item:sub(1,6) == "group:" then + local groups = group_to_items(item) + for j = 1, #groups do + if item_in_inv(inv, groups[j]) then + group_in_inv = true + end + end + end + if not group_in_inv and not item_in_inv(inv, item) then + show_item_recipes[i] = false + end + end + end + + for i = #show_item_recipes, 1, -1 do + if not show_item_recipes[i] then + remove(recipes, i) + end + end + + return recipes, player_has_item(show_item_recipes) +end + +function craftguide:get_init_items() + local items_list, counter = {}, 0 + for name, def in pairs(reg_items) do + local is_fuel = get_fueltime(name) > 0 + if not (def.groups.not_in_creative_inventory == 1) and + (get_recipe(name).items or is_fuel) and + def.description and def.description ~= "" then + + counter = counter + 1 + items_list[counter] = name + end + end + + sort(items_list) + datas.init_items = items_list +end + +function craftguide:get_filter_items(data, player) + local filter = data.filter + if datas.searches[filter] then + data.items = datas.searches[filter] + return + end + + local items_list = progressive_mode and data.init_filter_items or datas.init_items + local inv = player:get_inventory() + local filtered_list, counter = {}, 0 + + for i = 1, #items_list do + local item = items_list[i] + local item_desc = reg_items[item].description:lower() + + if filter ~= "" then + if item:find(filter, 1, true) or item_desc:find(filter, 1, true) then + counter = counter + 1 + filtered_list[counter] = item + end + elseif progressive_mode then + local _, has_item = self:recipe_in_inv(inv, item) + if has_item then + counter = counter + 1 + filtered_list[counter] = item + end + end + end + + if progressive_mode then + if not data.items then + data.init_filter_items = filtered_list + end + elseif filter ~= "" and not datas.searches[filter] then + datas.searches[filter] = filtered_list + end + + data.items = filtered_list +end + +mt.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= "craftguide" then return end + local player_name = player:get_player_name() + local data = datas[player_name] + + if fields.clear then + data.filter, data.item, data.pagenum, data.recipe_num = "", nil, 1, 1 + data.items = progressive_mode and data.init_filter_items or datas.init_items + craftguide:get_formspec(player_name) + + elseif fields.alternate then + local recipe = data.recipes_item[data.recipe_num + 1] + data.recipe_num = recipe and data.recipe_num + 1 or 1 + craftguide:get_formspec(player_name) + + elseif (fields.key_enter_field == "filter" or fields.search) and + fields.filter ~= "" then + data.filter = fields.filter:lower() + data.pagenum = 1 + craftguide:get_filter_items(data, player) + craftguide:get_formspec(player_name) + + elseif fields.prev or fields.next then + data.pagenum = data.pagenum - (fields.prev and 1 or -1) + if data.pagenum > data.pagemax then + data.pagenum = 1 + elseif data.pagenum == 0 then + data.pagenum = data.pagemax + end + craftguide:get_formspec(player_name) + + elseif (fields.size_inc and data.iX < MAX_LIMIT) or + (fields.size_dec and data.iX > MIN_LIMIT) then + data.pagenum = 1 + data.iX = data.iX - (fields.size_dec and 1 or -1) + craftguide:get_formspec(player_name) + + else for item in pairs(fields) do + if item:find(":") then + if item:sub(-4) == "_inv" then + item = item:sub(1,-5) + end + + local is_fuel = get_fueltime(item) > 0 + local recipes = get_recipes(item) + if not recipes and not is_fuel then return end + + if item == data.item then + if data.recipes_item and #data.recipes_item >= 2 then + local recipe = data.recipes_item[data.recipe_num + 1] + data.recipe_num = recipe and data.recipe_num + 1 or 1 + craftguide:get_formspec(player_name) + end + else + if progressive_mode then + local inv = player:get_inventory() + local _, has_item = craftguide:recipe_in_inv(inv, item) + + if not has_item then return end + recipes = craftguide:recipe_in_inv(inv, item, recipes) + end + + data.item = item + data.recipe_num = 1 + data.recipes_item = recipes + craftguide:get_formspec(player_name, is_fuel) + end + end + end + end +end) + +function craftguide:on_use(itemstack, user) + if not datas.init_items then + craftguide:get_init_items() + end + + local player_name = user:get_player_name() + local data = datas[player_name] + + if progressive_mode or not data then + datas[player_name] = {filter = "", pagenum = 1, iX = DEFAULT_SIZE} + if progressive_mode then + craftguide:get_filter_items(datas[player_name], user) + end + craftguide:get_formspec(player_name) + else + show_formspec(player_name, "craftguide", data.formspec) + end +end + +mt.register_craftitem("craftguide:book", { + description = "Crafting Guide", + inventory_image = "craftguide_book.png", + wield_image = "craftguide_book.png", + stack_max = 1, + groups = {book = 1}, + on_use = function(itemstack, user) + craftguide:on_use(itemstack, user) + end +}) + +mt.register_node("craftguide:sign", { + description = "Crafting Guide Sign", + drawtype = "nodebox", + tiles = {"craftguide_sign.png"}, + inventory_image = "craftguide_sign_inv.png", + wield_image = "craftguide_sign_inv.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + groups = {wood = 1, oddly_breakable_by_hand = 1, flammable = 3}, + node_box = { + type = "wallmounted", + wall_top = {-0.4375, 0.4375, -0.3125, 0.4375, 0.5, 0.3125}, + wall_bottom = {-0.4375, -0.5, -0.3125, 0.4375, -0.4375, 0.3125}, + wall_side = {-0.5, -0.3125, -0.4375, -0.4375, 0.3125, 0.4375} + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", "Crafting Guide Sign") + end, + on_rightclick = function(pos, node, user, itemstack) + craftguide:on_use(itemstack, user) + end +}) + +mt.register_craft({ + output = "craftguide:book", + type = "shapeless", + recipe = {"default:book"} +}) + +mt.register_craft({ + type = "fuel", + recipe = "craftguide:book", + burntime = 3 +}) + +mt.register_craft({ + output = "craftguide:sign", + type = "shapeless", + recipe = {"default:sign_wall_wood"} +}) + +mt.register_craft({ + type = "fuel", + recipe = "craftguide:sign", + burntime = 10 +}) + +if rawget(_G, "sfinv_buttons") then + sfinv_buttons.register_button("craftguide", { + title = "Crafting guide", + tooltip = "Shows a list of available crafting recipes, cooking recipes and fuels", + action = function(player) + craftguide:on_use(nil, player) + end, + image = "craftguide_book.png", + }) +end + +mt.register_alias("xdecor:crafting_guide", "craftguide:book") diff --git a/mods/craftguide/mod.conf b/mods/craftguide/mod.conf new file mode 100644 index 0000000..c32f714 --- /dev/null +++ b/mods/craftguide/mod.conf @@ -0,0 +1 @@ +name = craftguide diff --git a/mods/craftguide/screenshot.png b/mods/craftguide/screenshot.png new file mode 100644 index 0000000..ebb8e4d Binary files /dev/null and b/mods/craftguide/screenshot.png differ diff --git a/mods/craftguide/textures/craftguide_arrow.png b/mods/craftguide/textures/craftguide_arrow.png new file mode 100644 index 0000000..e8d3598 Binary files /dev/null and b/mods/craftguide/textures/craftguide_arrow.png differ diff --git a/mods/craftguide/textures/craftguide_bg.png b/mods/craftguide/textures/craftguide_bg.png new file mode 100644 index 0000000..db50299 Binary files /dev/null and b/mods/craftguide/textures/craftguide_bg.png differ diff --git a/mods/craftguide/textures/craftguide_book.png b/mods/craftguide/textures/craftguide_book.png new file mode 100644 index 0000000..e46cd38 Binary files /dev/null and b/mods/craftguide/textures/craftguide_book.png differ diff --git a/mods/craftguide/textures/craftguide_fire.png b/mods/craftguide/textures/craftguide_fire.png new file mode 100644 index 0000000..6e3a832 Binary files /dev/null and b/mods/craftguide/textures/craftguide_fire.png differ diff --git a/mods/craftguide/textures/craftguide_furnace.png b/mods/craftguide/textures/craftguide_furnace.png new file mode 100644 index 0000000..4c12e50 Binary files /dev/null and b/mods/craftguide/textures/craftguide_furnace.png differ diff --git a/mods/craftguide/textures/craftguide_shapeless.png b/mods/craftguide/textures/craftguide_shapeless.png new file mode 100644 index 0000000..179d317 Binary files /dev/null and b/mods/craftguide/textures/craftguide_shapeless.png differ diff --git a/mods/craftguide/textures/craftguide_sign.png b/mods/craftguide/textures/craftguide_sign.png new file mode 100644 index 0000000..f64b5ab Binary files /dev/null and b/mods/craftguide/textures/craftguide_sign.png differ diff --git a/mods/craftguide/textures/craftguide_sign_inv.png b/mods/craftguide/textures/craftguide_sign_inv.png new file mode 100644 index 0000000..6137234 Binary files /dev/null and b/mods/craftguide/textures/craftguide_sign_inv.png differ diff --git a/mods/deathmsg/README.txt b/mods/deathmsg/README.txt new file mode 100644 index 0000000..21feecf --- /dev/null +++ b/mods/deathmsg/README.txt @@ -0,0 +1,5 @@ +Deathmsg +===================================================================== +Main: jadedctrl +Lisc: GPL v3+ +Link: https://notabug.org/jadedctrl/OCD3 diff --git a/mods/deathmsg/init.lua b/mods/deathmsg/init.lua new file mode 100644 index 0000000..042d626 --- /dev/null +++ b/mods/deathmsg/init.lua @@ -0,0 +1,23 @@ +-- deathmsg +-- jadedctrl; GPLv3+ + +minetest.register_on_dieplayer(function(player) + messages = { "~ has had life torn violently from their grasp.", + "~ swore on their life… too bad it was a bluff.", + "~ was killed by the invisible hand.", + "I guess ~ couldn't take the heat.", + "~ wasn't a supporter of social Darwinsim, obviously.", + "~ wasn't worthy anyway.", + "Oh, hey, side-note: ~'s a bit in the ground.", + "~'s ghost wants to have a word with you.", + "God hate ~'s guts.", + "Don't be upset, but ~'s malfunctioned.", + "~ is broken, but their lifetime warranty doesn't cover death." } + + messageno = math.random(1, table.getn(messages)) + + message = messages[messageno] + message = message:gsub("~", player:get_player_name()) + + minetest.chat_send_all(message) +end) diff --git a/mods/default.diff/TODO b/mods/default.diff/TODO deleted file mode 100644 index 91526d8..0000000 --- a/mods/default.diff/TODO +++ /dev/null @@ -1 +0,0 @@ -Consolidate torch.lua and nodes.lua diff --git a/mods/default.diff/aliases.lua b/mods/default.diff/aliases.lua deleted file mode 100644 index d482199..0000000 --- a/mods/default.diff/aliases.lua +++ /dev/null @@ -1,80 +0,0 @@ --- mods/default/aliases.lua - --- Aliases to support loading worlds using nodes following the old naming convention --- These can also be helpful when using chat commands, for example /giveme -minetest.register_alias("stone", "default:stone") -minetest.register_alias("stone_with_coal", "default:stone_with_coal") -minetest.register_alias("stone_with_iron", "default:stone_with_iron") -minetest.register_alias("dirt_with_grass", "default:dirt_with_grass") -minetest.register_alias("dirt_with_grass_footsteps", "default:dirt_with_grass_footsteps") -minetest.register_alias("dirt", "default:dirt") -minetest.register_alias("sand", "default:sand") -minetest.register_alias("gravel", "default:gravel") -minetest.register_alias("sandstone", "default:sandstone") -minetest.register_alias("clay", "default:clay") -minetest.register_alias("brick", "default:brick") -minetest.register_alias("tree", "default:tree") -minetest.register_alias("jungletree", "default:jungletree") -minetest.register_alias("junglegrass", "default:junglegrass") -minetest.register_alias("leaves", "default:leaves") -minetest.register_alias("cactus", "default:cactus") -minetest.register_alias("papyrus", "default:papyrus") -minetest.register_alias("bookshelf", "default:bookshelf") -minetest.register_alias("glass", "default:glass") -minetest.register_alias("wooden_fence", "default:fence_wood") -minetest.register_alias("rail", "carts:rail") -minetest.register_alias("ladder", "default:ladder_wood") -minetest.register_alias("wood", "default:wood") -minetest.register_alias("mese", "default:mese") -minetest.register_alias("cloud", "default:cloud") -minetest.register_alias("water_flowing", "default:water_flowing") -minetest.register_alias("water_source", "default:water_source") -minetest.register_alias("lava_flowing", "default:lava_flowing") -minetest.register_alias("lava_source", "default:lava_source") -minetest.register_alias("torch", "default:torch") -minetest.register_alias("sign_wall", "default:sign_wall_wood") -minetest.register_alias("furnace", "default:furnace") -minetest.register_alias("chest", "default:chest") -minetest.register_alias("locked_chest", "default:chest_locked") -minetest.register_alias("cobble", "default:cobble") -minetest.register_alias("mossycobble", "default:mossycobble") -minetest.register_alias("steelblock", "default:steelblock") -minetest.register_alias("sapling", "default:sapling") -minetest.register_alias("apple", "default:apple") - -minetest.register_alias("WPick", "default:pick_wood") -minetest.register_alias("STPick", "default:pick_stone") -minetest.register_alias("SteelPick", "default:pick_steel") -minetest.register_alias("MesePick", "default:pick_mese") -minetest.register_alias("WShovel", "default:shovel_wood") -minetest.register_alias("STShovel", "default:shovel_stone") -minetest.register_alias("SteelShovel", "default:shovel_steel") -minetest.register_alias("WAxe", "default:axe_wood") -minetest.register_alias("STAxe", "default:axe_stone") -minetest.register_alias("SteelAxe", "default:axe_steel") -minetest.register_alias("WSword", "default:sword_wood") -minetest.register_alias("STSword", "default:sword_stone") -minetest.register_alias("SteelSword", "default:sword_steel") - -minetest.register_alias("Stick", "default:stick") -minetest.register_alias("paper", "default:paper") -minetest.register_alias("book", "default:book") -minetest.register_alias("lump_of_coal", "default:coal_lump") -minetest.register_alias("lump_of_iron", "default:iron_lump") -minetest.register_alias("lump_of_clay", "default:clay_lump") -minetest.register_alias("steel_ingot", "default:steel_ingot") -minetest.register_alias("clay_brick", "default:clay_brick") -minetest.register_alias("snow", "default:snow") - --- 'mese_block' was used for a while for the block form of mese -minetest.register_alias("default:mese_block", "default:mese") - --- Aliases for corrected pine node names -minetest.register_alias("default:pinetree", "default:pine_tree") -minetest.register_alias("default:pinewood", "default:pine_wood") - -minetest.register_alias("default:ladder", "default:ladder_wood") -minetest.register_alias("default:sign_wall", "default:sign_wall_wood") - --- Etc. -minetest.register_alias("default:torch_out", "default:torch") diff --git a/mods/default.diff/aliases.lua.diff b/mods/default.diff/aliases.lua.diff deleted file mode 100644 index f8e3214..0000000 --- a/mods/default.diff/aliases.lua.diff +++ /dev/null @@ -1,4 +0,0 @@ -77a78,80 -> -> -- Etc. -> minetest.register_alias("default:torch_out", "default:torch") diff --git a/mods/default.diff/crafting.lua b/mods/default.diff/crafting.lua deleted file mode 100644 index 5d1d3f5..0000000 --- a/mods/default.diff/crafting.lua +++ /dev/null @@ -1,1178 +0,0 @@ --- mods/default/crafting.lua - -minetest.register_craft({ - output = 'default:wood 4', - recipe = { - {'default:tree'}, - } -}) - -minetest.register_craft({ - output = 'default:junglewood 4', - recipe = { - {'default:jungletree'}, - } -}) - -minetest.register_craft({ - output = 'default:pine_wood 4', - recipe = { - {'default:pine_tree'}, - } -}) - -minetest.register_craft({ - output = 'default:acacia_wood 4', - recipe = { - {'default:acacia_tree'}, - } -}) - -minetest.register_craft({ - output = 'default:aspen_wood 4', - recipe = { - {'default:aspen_tree'}, - } -}) - -minetest.register_craft({ - output = 'default:wood', - recipe = { - {'default:bush_stem'}, - } -}) - -minetest.register_craft({ - output = 'default:acacia_wood', - recipe = { - {'default:acacia_bush_stem'}, - } -}) - -minetest.register_craft({ - output = 'default:stick 4', - recipe = { - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:sign_wall_steel 3', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:sign_wall_wood 3', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:torch 4', - recipe = { - {'default:coal_lump'}, - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:pick_wood', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'', 'group:wood', ''}, - {'', 'group:wood', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_stone', - recipe = { - {'group:stone', 'group:stone', 'group:stone'}, - {'', 'group:wood', ''}, - {'', 'group:wood', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_steel', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'group:wood', ''}, - {'', 'group:wood', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_bronze', - recipe = { - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'', 'group:wood', ''}, - {'', 'group:wood', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_mese', - recipe = { - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'', 'group:wood', ''}, - {'', 'group:wood', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_diamond', - recipe = { - {'default:diamond', 'default:diamond', 'default:diamond'}, - {'', 'group:wood', ''}, - {'', 'group:wood', ''}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_wood', - recipe = { - {'group:wood'}, - {'group:wood'}, - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_stone', - recipe = { - {'group:stone'}, - {'group:wood'}, - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_steel', - recipe = { - {'default:steel_ingot'}, - {'group:wood'}, - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_bronze', - recipe = { - {'default:bronze_ingot'}, - {'group:wood'}, - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_mese', - recipe = { - {'default:mese_crystal'}, - {'group:wood'}, - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_diamond', - recipe = { - {'default:diamond'}, - {'group:wood'}, - {'group:wood'}, - } -}) - --- Axes --- Recipes face left to match appearence in textures and inventory - -minetest.register_craft({ - output = 'default:axe_wood', - recipe = { - {'group:wood', 'group:wood'}, - {'group:wood', 'group:wood'}, - {'', 'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_stone', - recipe = { - {'group:stone', 'group:stone'}, - {'group:stone', 'group:wood'}, - {'', 'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_steel', - recipe = { - {'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'group:wood'}, - {'', 'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_bronze', - recipe = { - {'default:bronze_ingot', 'default:bronze_ingot'}, - {'default:bronze_ingot', 'group:wood'}, - {'', 'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_mese', - recipe = { - {'default:mese_crystal', 'default:mese_crystal'}, - {'default:mese_crystal', 'group:wood'}, - {'', 'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_diamond', - recipe = { - {'default:diamond', 'default:diamond'}, - {'default:diamond', 'group:wood'}, - {'', 'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_wood', - recipe = { - {'group:wood'}, - {'group:wood'}, - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_stone', - recipe = { - {'group:stone'}, - {'group:stone'}, - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_steel', - recipe = { - {'default:steel_ingot'}, - {'default:steel_ingot'}, - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_bronze', - recipe = { - {'default:bronze_ingot'}, - {'default:bronze_ingot'}, - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_mese', - recipe = { - {'default:mese_crystal'}, - {'default:mese_crystal'}, - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_diamond', - recipe = { - {'default:diamond'}, - {'default:diamond'}, - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:skeleton_key', - recipe = { - {'default:gold_ingot'}, - } -}) - -minetest.register_craft({ - output = 'default:chest', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', '', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:chest_locked', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'default:steel_ingot', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - } -}) - -minetest.register_craft( { - type = "shapeless", - output = "default:chest_locked", - recipe = {"default:chest", "default:steel_ingot"}, -}) - -minetest.register_craft({ - output = 'default:furnace', - recipe = { - {'group:stone', 'group:stone', 'group:stone'}, - {'group:stone', '', 'group:stone'}, - {'group:stone', 'group:stone', 'group:stone'}, - } -}) - -minetest.register_craft({ - output = 'default:coalblock', - recipe = { - {'default:coal_lump', 'default:coal_lump', 'default:coal_lump'}, - {'default:coal_lump', 'default:coal_lump', 'default:coal_lump'}, - {'default:coal_lump', 'default:coal_lump', 'default:coal_lump'}, - } -}) - -minetest.register_craft({ - output = 'default:coal_lump 9', - recipe = { - {'default:coalblock'}, - } -}) - -minetest.register_craft({ - output = 'default:steelblock', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - } -}) - -minetest.register_craft({ - output = 'default:steel_ingot 9', - recipe = { - {'default:steelblock'}, - } -}) - -minetest.register_craft({ - output = 'default:copperblock', - recipe = { - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, - } -}) - -minetest.register_craft({ - output = 'default:copper_ingot 9', - recipe = { - {'default:copperblock'}, - } -}) - -minetest.register_craft({ - output = "default:tinblock", - recipe = { - {"default:tin_ingot", "default:tin_ingot", "default:tin_ingot"}, - {"default:tin_ingot", "default:tin_ingot", "default:tin_ingot"}, - {"default:tin_ingot", "default:tin_ingot", "default:tin_ingot"}, - } -}) - -minetest.register_craft({ - output = "default:tin_ingot 9", - recipe = { - {"default:tinblock"}, - } -}) - -minetest.register_craft({ - output = "default:bronze_ingot 9", - recipe = { - {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, - {"default:copper_ingot", "default:tin_ingot", "default:copper_ingot"}, - {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, - } -}) - -minetest.register_craft({ - output = 'default:bronzeblock', - recipe = { - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - } -}) - -minetest.register_craft({ - output = 'default:bronze_ingot 9', - recipe = { - {'default:bronzeblock'}, - } -}) - -minetest.register_craft({ - output = 'default:goldblock', - recipe = { - {'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'}, - {'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'}, - {'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'}, - } -}) - -minetest.register_craft({ - output = 'default:gold_ingot 9', - recipe = { - {'default:goldblock'}, - } -}) - -minetest.register_craft({ - output = 'default:diamondblock', - recipe = { - {'default:diamond', 'default:diamond', 'default:diamond'}, - {'default:diamond', 'default:diamond', 'default:diamond'}, - {'default:diamond', 'default:diamond', 'default:diamond'}, - } -}) - -minetest.register_craft({ - output = 'default:diamond 9', - recipe = { - {'default:diamondblock'}, - } -}) - -minetest.register_craft({ - output = "default:sandstone", - recipe = { - {"default:sand", "default:sand"}, - {"default:sand", "default:sand"}, - } -}) - -minetest.register_craft({ - output = "default:sand 4", - recipe = { - {"default:sandstone"}, - } -}) - -minetest.register_craft({ - output = "default:sandstonebrick 4", - recipe = { - {"default:sandstone", "default:sandstone"}, - {"default:sandstone", "default:sandstone"}, - } -}) - -minetest.register_craft({ - output = "default:sandstone_block 9", - recipe = { - {"default:sandstone", "default:sandstone", "default:sandstone"}, - {"default:sandstone", "default:sandstone", "default:sandstone"}, - {"default:sandstone", "default:sandstone", "default:sandstone"}, - } -}) - -minetest.register_craft({ - output = "default:desert_sandstone", - recipe = { - {"default:desert_sand", "default:desert_sand"}, - {"default:desert_sand", "default:desert_sand"}, - } -}) - -minetest.register_craft({ - output = "default:desert_sand 4", - recipe = { - {"default:desert_sandstone"}, - } -}) - -minetest.register_craft({ - output = "default:desert_sandstone_brick 4", - recipe = { - {"default:desert_sandstone", "default:desert_sandstone"}, - {"default:desert_sandstone", "default:desert_sandstone"}, - } -}) - -minetest.register_craft({ - output = "default:desert_sandstone_block 9", - recipe = { - {"default:desert_sandstone", "default:desert_sandstone", "default:desert_sandstone"}, - {"default:desert_sandstone", "default:desert_sandstone", "default:desert_sandstone"}, - {"default:desert_sandstone", "default:desert_sandstone", "default:desert_sandstone"}, - } -}) - -minetest.register_craft({ - output = "default:silver_sandstone", - recipe = { - {"default:silver_sand", "default:silver_sand"}, - {"default:silver_sand", "default:silver_sand"}, - } -}) - -minetest.register_craft({ - output = "default:silver_sand 4", - recipe = { - {"default:silver_sandstone"}, - } -}) - -minetest.register_craft({ - output = "default:silver_sandstone_brick 4", - recipe = { - {"default:silver_sandstone", "default:silver_sandstone"}, - {"default:silver_sandstone", "default:silver_sandstone"}, - } -}) - -minetest.register_craft({ - output = "default:silver_sandstone_block 9", - recipe = { - {"default:silver_sandstone", "default:silver_sandstone", "default:silver_sandstone"}, - {"default:silver_sandstone", "default:silver_sandstone", "default:silver_sandstone"}, - {"default:silver_sandstone", "default:silver_sandstone", "default:silver_sandstone"}, - } -}) - -minetest.register_craft({ - output = 'default:clay', - recipe = { - {'default:clay_lump', 'default:clay_lump'}, - {'default:clay_lump', 'default:clay_lump'}, - } -}) - -minetest.register_craft({ - output = 'default:clay_lump 4', - recipe = { - {'default:clay'}, - } -}) - -minetest.register_craft({ - output = 'default:brick', - recipe = { - {'default:clay_brick', 'default:clay_brick'}, - {'default:clay_brick', 'default:clay_brick'}, - } -}) - -minetest.register_craft({ - output = 'default:clay_brick 4', - recipe = { - {'default:brick'}, - } -}) - -minetest.register_craft({ - output = 'default:paper', - recipe = { - {'default:papyrus', 'default:papyrus', 'default:papyrus'}, - } -}) - -minetest.register_craft({ - output = 'default:book', - recipe = { - {'default:paper'}, - {'default:paper'}, - {'default:paper'}, - } -}) - -minetest.register_craft({ - output = 'default:bookshelf', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'default:book', 'default:book', 'default:book'}, - {'group:wood', 'group:wood', 'group:wood'}, - } -}) - -minetest.register_craft({ - output = "default:ladder_wood 5", - recipe = { - {"group:stick", "", "group:stick"}, - {"group:stick", "group:stick", "group:stick"}, - {"group:stick", "", "group:stick"}, - } -}) - -minetest.register_craft({ - output = 'default:ladder_steel 15', - recipe = { - {'default:steel_ingot', '', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', '', 'default:steel_ingot'}, - } -}) - -minetest.register_craft({ - output = 'default:mese', - recipe = { - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - } -}) - -minetest.register_craft({ - output = 'default:mese_crystal 9', - recipe = { - {'default:mese'}, - } -}) - -minetest.register_craft({ - output = 'default:mese_crystal_fragment 9', - recipe = { - {'default:mese_crystal'}, - } -}) - -minetest.register_craft({ - output = "default:mese_crystal", - recipe = { - {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, - {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, - {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, - } -}) - -minetest.register_craft({ - output = 'default:meselamp', - recipe = { - {'default:glass'}, - {'default:mese_crystal'}, - } -}) - -minetest.register_craft({ - output = "default:mese_post_light 3", - recipe = { - {"", "default:glass", ""}, - {"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"}, - {"", "group:wood", ""}, - } -}) - -minetest.register_craft({ - output = 'default:obsidian_shard 9', - recipe = { - {'default:obsidian'} - } -}) - -minetest.register_craft({ - output = 'default:obsidian', - recipe = { - {'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'}, - {'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'}, - {'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'}, - } -}) - -minetest.register_craft({ - output = 'default:obsidianbrick 4', - recipe = { - {'default:obsidian', 'default:obsidian'}, - {'default:obsidian', 'default:obsidian'} - } -}) - -minetest.register_craft({ - output = 'default:obsidian_block 9', - recipe = { - {'default:obsidian', 'default:obsidian', 'default:obsidian'}, - {'default:obsidian', 'default:obsidian', 'default:obsidian'}, - {'default:obsidian', 'default:obsidian', 'default:obsidian'}, - } -}) - -minetest.register_craft({ - output = 'default:stonebrick 4', - recipe = { - {'default:stone', 'default:stone'}, - {'default:stone', 'default:stone'}, - } -}) - -minetest.register_craft({ - output = 'default:stone_block 9', - recipe = { - {'default:stone', 'default:stone', 'default:stone'}, - {'default:stone', 'default:stone', 'default:stone'}, - {'default:stone', 'default:stone', 'default:stone'}, - } -}) - -minetest.register_craft({ - output = 'default:desert_stonebrick 4', - recipe = { - {'default:desert_stone', 'default:desert_stone'}, - {'default:desert_stone', 'default:desert_stone'}, - } -}) - -minetest.register_craft({ - output = 'default:desert_stone_block 9', - recipe = { - {'default:desert_stone', 'default:desert_stone', 'default:desert_stone'}, - {'default:desert_stone', 'default:desert_stone', 'default:desert_stone'}, - {'default:desert_stone', 'default:desert_stone', 'default:desert_stone'}, - } -}) - -minetest.register_craft({ - output = 'default:snowblock', - recipe = { - {'default:snow', 'default:snow', 'default:snow'}, - {'default:snow', 'default:snow', 'default:snow'}, - {'default:snow', 'default:snow', 'default:snow'}, - } -}) - -minetest.register_craft({ - output = 'default:snow 9', - recipe = { - {'default:snowblock'}, - } -}) - --- --- Crafting (tool repair) --- -minetest.register_craft({ - type = "toolrepair", - additional_wear = -0.02, -}) - --- --- Cooking recipes --- - -minetest.register_craft({ - type = "cooking", - output = "default:glass", - recipe = "group:sand", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:obsidian_glass", - recipe = "default:obsidian_shard", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:stone", - recipe = "default:cobble", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:stone", - recipe = "default:mossycobble", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:desert_stone", - recipe = "default:desert_cobble", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:steel_ingot", - recipe = "default:iron_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:copper_ingot", - recipe = "default:copper_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:tin_ingot", - recipe = "default:tin_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:gold_ingot", - recipe = "default:gold_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:clay_brick", - recipe = "default:clay_lump", -}) - -minetest.register_craft({ - type = 'cooking', - output = 'default:gold_ingot', - recipe = 'default:skeleton_key', - cooktime = 5, -}) - -minetest.register_craft({ - type = 'cooking', - output = 'default:gold_ingot', - recipe = 'default:key', - cooktime = 5, -}) - --- --- Fuels --- - --- Support use of group:tree -minetest.register_craft({ - type = "fuel", - recipe = "group:tree", - burntime = 30, -}) - --- Burn time for all woods are in order of wood density, --- which is also the order of wood colour darkness: --- aspen, pine, apple, acacia, jungle - -minetest.register_craft({ - type = "fuel", - recipe = "default:aspen_tree", - burntime = 22, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:pine_tree", - burntime = 26, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:tree", - burntime = 30, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:acacia_tree", - burntime = 34, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:jungletree", - burntime = 38, -}) - - --- Support use of group:wood -minetest.register_craft({ - type = "fuel", - recipe = "group:wood", - burntime = 7, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:aspen_wood", - burntime = 5, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:pine_wood", - burntime = 6, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:wood", - burntime = 7, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:acacia_wood", - burntime = 8, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:junglewood", - burntime = 9, -}) - - --- Support use of group:sapling -minetest.register_craft({ - type = "fuel", - recipe = "group:sapling", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:bush_sapling", - burntime = 6, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:acacia_bush_sapling", - burntime = 7, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:aspen_sapling", - burntime = 8, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:pine_sapling", - burntime = 9, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:sapling", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:acacia_sapling", - burntime = 11, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:junglesapling", - burntime = 12, -}) - - -minetest.register_craft({ - type = "fuel", - recipe = "default:fence_aspen_wood", - burntime = 5, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:fence_pine_wood", - burntime = 6, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:fence_wood", - burntime = 7, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:fence_acacia_wood", - burntime = 8, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:fence_junglewood", - burntime = 9, -}) - - -minetest.register_craft({ - type = "fuel", - recipe = "default:bush_stem", - burntime = 7, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:acacia_bush_stem", - burntime = 8, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:junglegrass", - burntime = 2, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "group:leaves", - burntime = 1, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:cactus", - burntime = 15, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:papyrus", - burntime = 1, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:bookshelf", - burntime = 30, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:ladder_wood", - burntime = 2, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:lava_source", - burntime = 60, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:torch", - burntime = 4, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:sign_wall_wood", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:chest", - burntime = 30, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:chest_locked", - burntime = 30, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:apple", - burntime = 3, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:coal_lump", - burntime = 40, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:coalblock", - burntime = 370, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:grass_1", - burntime = 2, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:dry_grass_1", - burntime = 2, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:paper", - burntime = 1, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:book", - burntime = 3, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:book_written", - burntime = 3, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:dry_shrub", - burntime = 2, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "group:stick", - burntime = 1, -}) - - -minetest.register_craft({ - type = "fuel", - recipe = "default:pick_wood", - burntime = 6, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:shovel_wood", - burntime = 4, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:axe_wood", - burntime = 6, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:sword_wood", - burntime = 5, -}) diff --git a/mods/default.diff/crafting.lua.diff b/mods/default.diff/crafting.lua.diff deleted file mode 100644 index 3efcfc2..0000000 --- a/mods/default.diff/crafting.lua.diff +++ /dev/null @@ -1,193 +0,0 @@ -81c81 -< {'group:stick'}, ---- -> {'group:wood'}, -89,90c89,90 -< {'', 'group:stick', ''}, -< {'', 'group:stick', ''}, ---- -> {'', 'group:wood', ''}, -> {'', 'group:wood', ''}, -98,99c98,99 -< {'', 'group:stick', ''}, -< {'', 'group:stick', ''}, ---- -> {'', 'group:wood', ''}, -> {'', 'group:wood', ''}, -107,108c107,108 -< {'', 'group:stick', ''}, -< {'', 'group:stick', ''}, ---- -> {'', 'group:wood', ''}, -> {'', 'group:wood', ''}, -116,117c116,117 -< {'', 'group:stick', ''}, -< {'', 'group:stick', ''}, ---- -> {'', 'group:wood', ''}, -> {'', 'group:wood', ''}, -125,126c125,126 -< {'', 'group:stick', ''}, -< {'', 'group:stick', ''}, ---- -> {'', 'group:wood', ''}, -> {'', 'group:wood', ''}, -134,135c134,135 -< {'', 'group:stick', ''}, -< {'', 'group:stick', ''}, ---- -> {'', 'group:wood', ''}, -> {'', 'group:wood', ''}, -143,144c143,144 -< {'group:stick'}, -< {'group:stick'}, ---- -> {'group:wood'}, -> {'group:wood'}, -152,153c152,153 -< {'group:stick'}, -< {'group:stick'}, ---- -> {'group:wood'}, -> {'group:wood'}, -161,162c161,162 -< {'group:stick'}, -< {'group:stick'}, ---- -> {'group:wood'}, -> {'group:wood'}, -170,171c170,171 -< {'group:stick'}, -< {'group:stick'}, ---- -> {'group:wood'}, -> {'group:wood'}, -179,180c179,180 -< {'group:stick'}, -< {'group:stick'}, ---- -> {'group:wood'}, -> {'group:wood'}, -188,234c188,189 -< {'group:stick'}, -< {'group:stick'}, -< } -< }) -< -< minetest.register_craft({ -< output = 'default:axe_wood', -< recipe = { -< {'group:wood', 'group:wood'}, -< {'group:wood', 'group:stick'}, -< {'', 'group:stick'}, -< } -< }) -< -< minetest.register_craft({ -< output = 'default:axe_stone', -< recipe = { -< {'group:stone', 'group:stone'}, -< {'group:stone', 'group:stick'}, -< {'', 'group:stick'}, -< } -< }) -< -< minetest.register_craft({ -< output = 'default:axe_steel', -< recipe = { -< {'default:steel_ingot', 'default:steel_ingot'}, -< {'default:steel_ingot', 'group:stick'}, -< {'', 'group:stick'}, -< } -< }) -< -< minetest.register_craft({ -< output = 'default:axe_bronze', -< recipe = { -< {'default:bronze_ingot', 'default:bronze_ingot'}, -< {'default:bronze_ingot', 'group:stick'}, -< {'', 'group:stick'}, -< } -< }) -< -< minetest.register_craft({ -< output = 'default:axe_mese', -< recipe = { -< {'default:mese_crystal', 'default:mese_crystal'}, -< {'default:mese_crystal', 'group:stick'}, -< {'', 'group:stick'}, ---- -> {'group:wood'}, -> {'group:wood'}, -238,245c193,194 -< minetest.register_craft({ -< output = 'default:axe_diamond', -< recipe = { -< {'default:diamond', 'default:diamond'}, -< {'default:diamond', 'group:stick'}, -< {'', 'group:stick'}, -< } -< }) ---- -> -- Axes -> -- Recipes face left to match appearence in textures and inventory -251,252c200,201 -< {'group:stick', 'group:wood'}, -< {'group:stick',''}, ---- -> {'group:wood', 'group:wood'}, -> {'', 'group:wood'}, -260,261c209,210 -< {'group:stick', 'group:stone'}, -< {'group:stick', ''}, ---- -> {'group:stone', 'group:wood'}, -> {'', 'group:wood'}, -269,270c218,219 -< {'group:stick', 'default:steel_ingot'}, -< {'group:stick', ''}, ---- -> {'default:steel_ingot', 'group:wood'}, -> {'', 'group:wood'}, -278,279c227,228 -< {'group:stick', 'default:bronze_ingot'}, -< {'group:stick', ''}, ---- -> {'default:bronze_ingot', 'group:wood'}, -> {'', 'group:wood'}, -287,288c236,237 -< {'group:stick', 'default:mese_crystal'}, -< {'group:stick', ''}, ---- -> {'default:mese_crystal', 'group:wood'}, -> {'', 'group:wood'}, -296,297c245,246 -< {'group:stick', 'default:diamond'}, -< {'group:stick', ''}, ---- -> {'default:diamond', 'group:wood'}, -> {'', 'group:wood'}, -306c255 -< {'group:stick'}, ---- -> {'group:wood'}, -315c264 -< {'group:stick'}, ---- -> {'group:wood'}, -324c273 -< {'group:stick'}, ---- -> {'group:wood'}, -333c282 -< {'group:stick'}, ---- -> {'group:wood'}, -342c291 -< {'group:stick'}, ---- -> {'group:wood'}, -351c300 -< {'group:stick'}, ---- -> {'group:wood'}, diff --git a/mods/default.diff/depends.txt b/mods/default.diff/depends.txt deleted file mode 100644 index e1c3818..0000000 --- a/mods/default.diff/depends.txt +++ /dev/null @@ -1 +0,0 @@ -player_api? diff --git a/mods/default.diff/functions.lua b/mods/default.diff/functions.lua deleted file mode 100644 index bdc3015..0000000 --- a/mods/default.diff/functions.lua +++ /dev/null @@ -1,580 +0,0 @@ --- mods/default/functions.lua - --- --- Sounds --- - -function default.node_sound_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name = "", gain = 1.0} - table.dug = table.dug or - {name = "default_dug_node", gain = 0.25} - table.place = table.place or - {name = "default_place_node_hard", gain = 1.0} - return table -end - -function default.node_sound_stone_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name = "default_hard_footstep", gain = 0.3} - table.dug = table.dug or - {name = "default_hard_footstep", gain = 1.0} - default.node_sound_defaults(table) - return table -end - -function default.node_sound_dirt_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name = "default_dirt_footstep", gain = 0.4} - table.dug = table.dug or - {name = "default_dirt_footstep", gain = 1.0} - table.place = table.place or - {name = "default_place_node", gain = 1.0} - default.node_sound_defaults(table) - return table -end - -function default.node_sound_sand_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name = "default_sand_footstep", gain = 0.12} - table.dug = table.dug or - {name = "default_sand_footstep", gain = 0.24} - table.place = table.place or - {name = "default_place_node", gain = 1.0} - default.node_sound_defaults(table) - return table -end - -function default.node_sound_gravel_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name = "default_gravel_footstep", gain = 0.4} - table.dug = table.dug or - {name = "default_gravel_footstep", gain = 1.0} - table.place = table.place or - {name = "default_place_node", gain = 1.0} - default.node_sound_defaults(table) - return table -end - -function default.node_sound_wood_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name = "default_wood_footstep", gain = 0.3} - table.dug = table.dug or - {name = "default_wood_footstep", gain = 1.0} - default.node_sound_defaults(table) - return table -end - -function default.node_sound_leaves_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name = "default_grass_footstep", gain = 0.45} - table.dug = table.dug or - {name = "default_grass_footstep", gain = 0.7} - table.place = table.place or - {name = "default_place_node", gain = 1.0} - default.node_sound_defaults(table) - return table -end - -function default.node_sound_glass_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name = "default_glass_footstep", gain = 0.3} - table.dig = table.dig or - {name = "default_glass_footstep", gain = 0.5} - table.dug = table.dug or - {name = "default_break_glass", gain = 1.0} - default.node_sound_defaults(table) - return table -end - -function default.node_sound_metal_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name = "default_metal_footstep", gain = 0.4} - table.dig = table.dig or - {name = "default_dig_metal", gain = 0.5} - table.dug = table.dug or - {name = "default_dug_metal", gain = 0.5} - table.place = table.place or - {name = "default_place_node_metal", gain = 0.5} - default.node_sound_defaults(table) - return table -end - -function default.node_sound_water_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name = "default_water_footstep", gain = 0.2} - default.node_sound_defaults(table) - return table -end - --- --- Lavacooling --- - -default.cool_lava = function(pos, node) - if node.name == "default:lava_source" then - minetest.set_node(pos, {name = "default:obsidian"}) - else -- Lava flowing - minetest.set_node(pos, {name = "default:stone"}) - end - minetest.sound_play("default_cool_lava", - {pos = pos, max_hear_distance = 16, gain = 0.25}) -end - -if minetest.settings:get_bool("enable_lavacooling") ~= false then - minetest.register_abm({ - label = "Lava cooling", - nodenames = {"default:lava_source", "default:lava_flowing"}, - neighbors = {"group:cools_lava", "group:water"}, - interval = 2, - chance = 2, - catch_up = false, - action = function(...) - default.cool_lava(...) - end, - }) -end - --- --- optimized helper to put all items in an inventory into a drops list --- - -function default.get_inventory_drops(pos, inventory, drops) - local inv = minetest.get_meta(pos):get_inventory() - local n = #drops - for i = 1, inv:get_size(inventory) do - local stack = inv:get_stack(inventory, i) - if stack:get_count() > 0 then - drops[n+1] = stack:to_table() - n = n + 1 - end - end -end - --- --- Papyrus and cactus growing --- - --- wrapping the functions in abm action is necessary to make overriding them possible - -function default.grow_cactus(pos, node) - if node.param2 >= 4 then - return - end - pos.y = pos.y - 1 - if minetest.get_item_group(minetest.get_node(pos).name, "sand") == 0 then - return - end - pos.y = pos.y + 1 - local height = 0 - while node.name == "default:cactus" and height < 4 do - height = height + 1 - pos.y = pos.y + 1 - node = minetest.get_node(pos) - end - if height == 4 or node.name ~= "air" then - return - end - if minetest.get_node_light(pos) < 13 then - return - end - minetest.set_node(pos, {name = "default:cactus"}) - return true -end - -function default.grow_papyrus(pos, node) - pos.y = pos.y - 1 - local name = minetest.get_node(pos).name - if name ~= "default:dirt_with_grass" and name ~= "default:dirt" then - return - end - if not minetest.find_node_near(pos, 3, {"group:water"}) then - return - end - pos.y = pos.y + 1 - local height = 0 - while node.name == "default:papyrus" and height < 4 do - height = height + 1 - pos.y = pos.y + 1 - node = minetest.get_node(pos) - end - if height == 4 or node.name ~= "air" then - return - end - if minetest.get_node_light(pos) < 13 then - return - end - minetest.set_node(pos, {name = "default:papyrus"}) - return true -end - -minetest.register_abm({ - label = "Grow cactus", - nodenames = {"default:cactus"}, - neighbors = {"group:sand"}, - interval = 12, - chance = 83, - action = function(...) - default.grow_cactus(...) - end -}) - -minetest.register_abm({ - label = "Grow papyrus", - nodenames = {"default:papyrus"}, - neighbors = {"default:dirt", "default:dirt_with_grass"}, - interval = 14, - chance = 71, - action = function(...) - default.grow_papyrus(...) - end -}) - - --- --- dig upwards --- - -function default.dig_up(pos, node, digger) - if digger == nil then return end - local np = {x = pos.x, y = pos.y + 1, z = pos.z} - local nn = minetest.get_node(np) - if nn.name == node.name then - minetest.node_dig(np, nn, digger) - end -end - - --- --- Fence registration helper --- - -function default.register_fence(name, def) - minetest.register_craft({ - output = name .. " 4", - recipe = { - { def.material, 'group:stick', def.material }, - { def.material, 'group:stick', def.material }, - } - }) - - local fence_texture = "default_fence_overlay.png^" .. def.texture .. - "^default_fence_overlay.png^[makealpha:255,126,126" - -- Allow almost everything to be overridden - local default_fields = { - paramtype = "light", - drawtype = "nodebox", - node_box = { - type = "connected", - fixed = {{-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}}, - -- connect_top = - -- connect_bottom = - connect_front = {{-1/16,3/16,-1/2,1/16,5/16,-1/8}, - {-1/16,-5/16,-1/2,1/16,-3/16,-1/8}}, - connect_left = {{-1/2,3/16,-1/16,-1/8,5/16,1/16}, - {-1/2,-5/16,-1/16,-1/8,-3/16,1/16}}, - connect_back = {{-1/16,3/16,1/8,1/16,5/16,1/2}, - {-1/16,-5/16,1/8,1/16,-3/16,1/2}}, - connect_right = {{1/8,3/16,-1/16,1/2,5/16,1/16}, - {1/8,-5/16,-1/16,1/2,-3/16,1/16}}, - }, - connects_to = {"group:fence", "group:wood", "group:tree"}, - inventory_image = fence_texture, - wield_image = fence_texture, - tiles = {def.texture}, - sunlight_propagates = true, - is_ground_content = false, - groups = {}, - } - for k, v in pairs(default_fields) do - if not def[k] then - def[k] = v - end - end - - -- Always add to the fence group, even if no group provided - def.groups.fence = 1 - - def.texture = nil - def.material = nil - - minetest.register_node(name, def) -end - - --- --- Leafdecay --- - --- Prevent decay of placed leaves - -default.after_place_leaves = function(pos, placer, itemstack, pointed_thing) - if placer and not placer:get_player_control().sneak then - local node = minetest.get_node(pos) - node.param2 = 1 - minetest.set_node(pos, node) - end -end - --- Leafdecay -local function leafdecay_after_destruct(pos, oldnode, def) - for _, v in pairs(minetest.find_nodes_in_area(vector.subtract(pos, def.radius), - vector.add(pos, def.radius), def.leaves)) do - local node = minetest.get_node(v) - local timer = minetest.get_node_timer(v) - if node.param2 == 0 and not timer:is_started() then - timer:start(math.random(20, 120) / 10) - end - end -end - -local function leafdecay_on_timer(pos, def) - if minetest.find_node_near(pos, def.radius, def.trunks) then - return false - end - - local node = minetest.get_node(pos) - local drops = minetest.get_node_drops(node.name) - for _, item in ipairs(drops) do - local is_leaf - for _, v in pairs(def.leaves) do - if v == item then - is_leaf = true - end - end - if minetest.get_item_group(item, "leafdecay_drop") ~= 0 or - not is_leaf then - minetest.add_item({ - x = pos.x - 0.5 + math.random(), - y = pos.y - 0.5 + math.random(), - z = pos.z - 0.5 + math.random(), - }, item) - end - end - - minetest.remove_node(pos) - minetest.check_for_falling(pos) -end - -function default.register_leafdecay(def) - assert(def.leaves) - assert(def.trunks) - assert(def.radius) - for _, v in pairs(def.trunks) do - minetest.override_item(v, { - after_destruct = function(pos, oldnode) - leafdecay_after_destruct(pos, oldnode, def) - end, - }) - end - for _, v in pairs(def.leaves) do - minetest.override_item(v, { - on_timer = function(pos) - leafdecay_on_timer(pos, def) - end, - }) - end -end - --- --- Convert dirt to something that fits the environment --- - -minetest.register_abm({ - label = "Grass spread", - nodenames = {"default:dirt"}, - neighbors = { - "air", - "group:grass", - "group:dry_grass", - "default:snow", - }, - interval = 6, - chance = 50, - catch_up = false, - action = function(pos, node) - -- Check for darkness: night, shadow or under a light-blocking node - -- Returns if ignore above - local above = {x = pos.x, y = pos.y + 1, z = pos.z} - if (minetest.get_node_light(above) or 0) < 13 then - return - end - - -- Look for spreading dirt-type neighbours - local p2 = minetest.find_node_near(pos, 1, "group:spreading_dirt_type") - if p2 then - local n3 = minetest.get_node(p2) - minetest.set_node(pos, {name = n3.name}) - return - end - - -- Else, any seeding nodes on top? - local name = minetest.get_node(above).name - -- Snow check is cheapest, so comes first - if name == "default:snow" then - minetest.set_node(pos, {name = "default:dirt_with_snow"}) - -- Most likely case first - elseif minetest.get_item_group(name, "grass") ~= 0 then - minetest.set_node(pos, {name = "default:dirt_with_grass"}) - elseif minetest.get_item_group(name, "dry_grass") ~= 0 then - minetest.set_node(pos, {name = "default:dirt_with_dry_grass"}) - end - end -}) - - --- --- Grass and dry grass removed in darkness --- - -minetest.register_abm({ - label = "Grass covered", - nodenames = {"group:spreading_dirt_type"}, - interval = 8, - chance = 50, - catch_up = false, - action = function(pos, node) - local above = {x = pos.x, y = pos.y + 1, z = pos.z} - local name = minetest.get_node(above).name - local nodedef = minetest.registered_nodes[name] - if name ~= "ignore" and nodedef and not ((nodedef.sunlight_propagates or - nodedef.paramtype == "light") and - nodedef.liquidtype == "none") then - minetest.set_node(pos, {name = "default:dirt"}) - end - end -}) - - --- --- Moss growth on cobble near water --- - -minetest.register_abm({ - label = "Moss growth", - nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble", "walls:cobble"}, - neighbors = {"group:water"}, - interval = 16, - chance = 200, - catch_up = false, - action = function(pos, node) - if node.name == "default:cobble" then - minetest.set_node(pos, {name = "default:mossycobble"}) - elseif node.name == "stairs:slab_cobble" then - minetest.set_node(pos, {name = "stairs:slab_mossycobble", param2 = node.param2}) - elseif node.name == "stairs:stair_cobble" then - minetest.set_node(pos, {name = "stairs:stair_mossycobble", param2 = node.param2}) - elseif node.name == "walls:cobble" then - minetest.set_node(pos, {name = "walls:mossycobble", param2 = node.param2}) - end - end -}) - - --- --- Checks if specified volume intersects a protected volume --- - -function default.intersects_protection(minp, maxp, player_name, interval) - -- 'interval' is the largest allowed interval for the 3D lattice of checks - - -- Compute the optimal float step 'd' for each axis so that all corners and - -- borders are checked. 'd' will be smaller or equal to 'interval'. - -- Subtracting 1e-4 ensures that the max co-ordinate will be reached by the - -- for loop (which might otherwise not be the case due to rounding errors). - local d = {} - for _, c in pairs({"x", "y", "z"}) do - if maxp[c] > minp[c] then - d[c] = (maxp[c] - minp[c]) / math.ceil((maxp[c] - minp[c]) / interval) - 1e-4 - elseif maxp[c] == minp[c] then - d[c] = 1 -- Any value larger than 0 to avoid division by zero - else -- maxp[c] < minp[c], print error and treat as protection intersected - minetest.log("error", "maxp < minp in 'default.intersects_protection()'") - return true - end - end - - for zf = minp.z, maxp.z, d.z do - local z = math.floor(zf + 0.5) - for yf = minp.y, maxp.y, d.y do - local y = math.floor(yf + 0.5) - for xf = minp.x, maxp.x, d.x do - local x = math.floor(xf + 0.5) - if minetest.is_protected({x = x, y = y, z = z}, player_name) then - return true - end - end - end - end - - return false -end - - --- --- Coral death near air --- - -minetest.register_abm({ - nodenames = {"default:coral_brown", "default:coral_orange"}, - neighbors = {"air"}, - interval = 17, - chance = 5, - catch_up = false, - action = function(pos, node) - minetest.set_node(pos, {name = "default:coral_skeleton"}) - end, -}) - - --- --- NOTICE: This method is not an official part of the API yet! --- This method may change in future. --- - -function default.can_interact_with_node(player, pos) - if player then - if minetest.check_player_privs(player, "protection_bypass") then - return true - end - else - return false - end - - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - - if not owner or owner == "" or owner == player:get_player_name() then - return true - end - - -- is player wielding the right key? - local item = player:get_wielded_item() - if item:get_name() == "default:key" then - local key_meta = item:get_meta() - - if key_meta:get_string("secret") == "" then - local key_oldmeta = item:get_metadata() - if key_oldmeta == "" or not minetest.parse_json(key_oldmeta) then - return false - end - - key_meta:set_string("secret", minetest.parse_json(key_oldmeta).secret) - item:set_metadata("") - end - - return meta:get_string("key_lock_secret") == key_meta:get_string("secret") - end - - return false -end diff --git a/mods/default.diff/functions.lua.diff b/mods/default.diff/functions.lua.diff deleted file mode 100644 index 694ee89..0000000 --- a/mods/default.diff/functions.lua.diff +++ /dev/null @@ -1,22 +0,0 @@ -139c139 -< interval = 1, ---- -> interval = 2, -142c142,144 -< action = default.cool_lava, ---- -> action = function(...) -> default.cool_lava(...) -> end, -225c227,229 -< action = default.grow_cactus ---- -> action = function(...) -> default.grow_cactus(...) -> end -234c238,240 -< action = default.grow_papyrus ---- -> action = function(...) -> default.grow_papyrus(...) -> end diff --git a/mods/default.diff/legacy.lua b/mods/default.diff/legacy.lua deleted file mode 100644 index 37f0321..0000000 --- a/mods/default.diff/legacy.lua +++ /dev/null @@ -1,36 +0,0 @@ --- mods/default/legacy.lua - --- Horrible stuff to support old code registering falling nodes --- Don't use this and never do what this does, it's completely wrong! --- (More specifically, the client and the C++ code doesn't get the group) -function default.register_falling_node(nodename, texture) - minetest.log("error", debug.traceback()) - minetest.log('error', "WARNING: default.register_falling_node is deprecated") - if minetest.registered_nodes[nodename] then - minetest.registered_nodes[nodename].groups.falling_node = 1 - end -end - -function default.spawn_falling_node(p, nodename) - spawn_falling_node(p, nodename) -end - --- Liquids -WATER_ALPHA = minetest.registered_nodes["default:water_source"].alpha -WATER_VISC = minetest.registered_nodes["default:water_source"].liquid_viscosity -LAVA_VISC = minetest.registered_nodes["default:lava_source"].liquid_viscosity -LIGHT_MAX = default.LIGHT_MAX - --- Formspecs -default.gui_suvival_form = default.gui_survival_form - --- Players -if minetest.get_modpath("player_api") then - default.registered_player_models = player_api.registered_models - default.player_register_model = player_api.register_model - default.player_attached = player_api.player_attached - default.player_get_animation = player_api.get_animation - default.player_set_model = player_api.set_model - default.player_set_textures = player_api.set_textures - default.player_set_animation = player_api.set_animation -end diff --git a/mods/default.diff/legacy.lua.diff b/mods/default.diff/legacy.lua.diff deleted file mode 100644 index bb76e0d..0000000 --- a/mods/default.diff/legacy.lua.diff +++ /dev/null @@ -1,12 +0,0 @@ -25a26,36 -> -> -- Players -> if minetest.get_modpath("player_api") then -> default.registered_player_models = player_api.registered_models -> default.player_register_model = player_api.register_model -> default.player_attached = player_api.player_attached -> default.player_get_animation = player_api.get_animation -> default.player_set_model = player_api.set_model -> default.player_set_textures = player_api.set_textures -> default.player_set_animation = player_api.set_animation -> end diff --git a/mods/default.diff/mapgen.lua b/mods/default.diff/mapgen.lua deleted file mode 100644 index 1fc2dc3..0000000 --- a/mods/default.diff/mapgen.lua +++ /dev/null @@ -1,2058 +0,0 @@ --- --- Aliases for map generators --- - -minetest.register_alias("mapgen_stone", "default:stone") -minetest.register_alias("mapgen_dirt", "default:dirt") -minetest.register_alias("mapgen_dirt_with_grass", "default:dirt_with_grass") -minetest.register_alias("mapgen_sand", "default:sand") -minetest.register_alias("mapgen_water_source", "default:water_source") -minetest.register_alias("mapgen_river_water_source", "default:river_water_source") -minetest.register_alias("mapgen_lava_source", "default:lava_source") -minetest.register_alias("mapgen_gravel", "default:gravel") -minetest.register_alias("mapgen_desert_stone", "default:desert_stone") -minetest.register_alias("mapgen_desert_sand", "default:desert_sand") -minetest.register_alias("mapgen_dirt_with_snow", "default:dirt_with_snow") -minetest.register_alias("mapgen_snowblock", "default:snowblock") -minetest.register_alias("mapgen_snow", "default:snow") -minetest.register_alias("mapgen_ice", "default:ice") -minetest.register_alias("mapgen_sandstone", "default:sandstone") - --- Flora - -minetest.register_alias("mapgen_tree", "default:tree") -minetest.register_alias("mapgen_leaves", "default:leaves") -minetest.register_alias("mapgen_apple", "default:apple") -minetest.register_alias("mapgen_jungletree", "default:jungletree") -minetest.register_alias("mapgen_jungleleaves", "default:jungleleaves") -minetest.register_alias("mapgen_junglegrass", "default:junglegrass") -minetest.register_alias("mapgen_pine_tree", "default:pine_tree") -minetest.register_alias("mapgen_pine_needles", "default:pine_needles") - --- Dungeons - -minetest.register_alias("mapgen_cobble", "default:cobble") -minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble") -minetest.register_alias("mapgen_mossycobble", "default:mossycobble") -minetest.register_alias("mapgen_stair_desert_stone", "stairs:stair_desert_stone") -minetest.register_alias("mapgen_sandstonebrick", "default:sandstonebrick") -minetest.register_alias("mapgen_stair_sandstone_block", "stairs:stair_sandstone_block") - - --- --- Register ores --- - --- Mgv6 - -function default.register_mgv6_ores() - - -- Blob ore - -- These first to avoid other ores in blobs - - -- Clay - -- This first to avoid clay in sand blobs - - minetest.register_ore({ - ore_type = "blob", - ore = "default:clay", - wherein = {"default:sand"}, - clust_scarcity = 16 * 16 * 16, - clust_size = 5, - y_min = -15, - y_max = 0, - noise_threshold = 0.0, - noise_params = { - offset = 0.5, - scale = 0.2, - spread = {x = 5, y = 5, z = 5}, - seed = -316, - octaves = 1, - persist = 0.0 - }, - }) - - -- Sand - - minetest.register_ore({ - ore_type = "blob", - ore = "default:sand", - wherein = {"default:stone", "default:desert_stone"}, - clust_scarcity = 16 * 16 * 16, - clust_size = 5, - y_min = -31, - y_max = 0, - noise_threshold = 0.0, - noise_params = { - offset = 0.5, - scale = 0.2, - spread = {x = 5, y = 5, z = 5}, - seed = 2316, - octaves = 1, - persist = 0.0 - }, - }) - - -- Dirt - - minetest.register_ore({ - ore_type = "blob", - ore = "default:dirt", - wherein = {"default:stone"}, - clust_scarcity = 16 * 16 * 16, - clust_size = 5, - y_min = -31, - y_max = 31000, - noise_threshold = 0.0, - noise_params = { - offset = 0.5, - scale = 0.2, - spread = {x = 5, y = 5, z = 5}, - seed = 17676, - octaves = 1, - persist = 0.0 - }, - }) - - -- Gravel - - minetest.register_ore({ - ore_type = "blob", - ore = "default:gravel", - wherein = {"default:stone"}, - clust_scarcity = 16 * 16 * 16, - clust_size = 5, - y_min = -31000, - y_max = 31000, - noise_threshold = 0.0, - noise_params = { - offset = 0.5, - scale = 0.2, - spread = {x = 5, y = 5, z = 5}, - seed = 766, - octaves = 1, - persist = 0.0 - }, - }) - - -- Scatter ores - - -- Coal - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_coal", - wherein = "default:stone", - clust_scarcity = 8 * 8 * 8, - clust_num_ores = 9, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_coal", - wherein = "default:stone", - clust_scarcity = 8 * 8 * 8, - clust_num_ores = 8, - clust_size = 3, - y_min = -31000, - y_max = 64, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_coal", - wherein = "default:stone", - clust_scarcity = 24 * 24 * 24, - clust_num_ores = 27, - clust_size = 6, - y_min = -31000, - y_max = 0, - }) - - -- Iron - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_iron", - wherein = "default:stone", - clust_scarcity = 9 * 9 * 9, - clust_num_ores = 12, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_iron", - wherein = "default:stone", - clust_scarcity = 7 * 7 * 7, - clust_num_ores = 5, - clust_size = 3, - y_min = -31000, - y_max = 0, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_iron", - wherein = "default:stone", - clust_scarcity = 24 * 24 * 24, - clust_num_ores = 27, - clust_size = 6, - y_min = -31000, - y_max = -64, - }) - - -- Copper - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_copper", - wherein = "default:stone", - clust_scarcity = 9 * 9 * 9, - clust_num_ores = 5, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_copper", - wherein = "default:stone", - clust_scarcity = 12 * 12 * 12, - clust_num_ores = 4, - clust_size = 3, - y_min = -63, - y_max = -16, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_copper", - wherein = "default:stone", - clust_scarcity = 9 * 9 * 9, - clust_num_ores = 5, - clust_size = 3, - y_min = -31000, - y_max = -64, - }) - - -- Tin - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_tin", - wherein = "default:stone", - clust_scarcity = 10 * 10 * 10, - clust_num_ores = 5, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_tin", - wherein = "default:stone", - clust_scarcity = 13 * 13 * 13, - clust_num_ores = 4, - clust_size = 3, - y_min = -127, - y_max = -32, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_tin", - wherein = "default:stone", - clust_scarcity = 10 * 10 * 10, - clust_num_ores = 5, - clust_size = 3, - y_min = -31000, - y_max = -128, - }) - - -- Gold - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_gold", - wherein = "default:stone", - clust_scarcity = 13 * 13 * 13, - clust_num_ores = 5, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_gold", - wherein = "default:stone", - clust_scarcity = 15 * 15 * 15, - clust_num_ores = 3, - clust_size = 2, - y_min = -255, - y_max = -64, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_gold", - wherein = "default:stone", - clust_scarcity = 13 * 13 * 13, - clust_num_ores = 5, - clust_size = 3, - y_min = -31000, - y_max = -256, - }) - - -- Mese crystal - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_mese", - wherein = "default:stone", - clust_scarcity = 14 * 14 * 14, - clust_num_ores = 5, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_mese", - wherein = "default:stone", - clust_scarcity = 18 * 18 * 18, - clust_num_ores = 3, - clust_size = 2, - y_min = -255, - y_max = -64, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_mese", - wherein = "default:stone", - clust_scarcity = 14 * 14 * 14, - clust_num_ores = 5, - clust_size = 3, - y_min = -31000, - y_max = -256, - }) - - -- Diamond - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_diamond", - wherein = "default:stone", - clust_scarcity = 15 * 15 * 15, - clust_num_ores = 4, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_diamond", - wherein = "default:stone", - clust_scarcity = 17 * 17 * 17, - clust_num_ores = 4, - clust_size = 3, - y_min = -255, - y_max = -128, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_diamond", - wherein = "default:stone", - clust_scarcity = 15 * 15 * 15, - clust_num_ores = 4, - clust_size = 3, - y_min = -31000, - y_max = -256, - }) - - -- Mese block - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:mese", - wherein = "default:stone", - clust_scarcity = 36 * 36 * 36, - clust_num_ores = 3, - clust_size = 2, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:mese", - wherein = "default:stone", - clust_scarcity = 36 * 36 * 36, - clust_num_ores = 3, - clust_size = 2, - y_min = -31000, - y_max = -1024, - }) -end - - --- All mapgens except mgv6 - -function default.register_ores() - - -- Blob ore - -- These first to avoid other ores in blobs - - -- Clay - -- This first to avoid clay in sand blobs - - minetest.register_ore({ - ore_type = "blob", - ore = "default:clay", - wherein = {"default:sand"}, - clust_scarcity = 16 * 16 * 16, - clust_size = 5, - y_min = -15, - y_max = 0, - noise_threshold = 0.0, - noise_params = { - offset = 0.5, - scale = 0.2, - spread = {x = 5, y = 5, z = 5}, - seed = -316, - octaves = 1, - persist = 0.0 - }, - }) - - -- Silver sand - - minetest.register_ore({ - ore_type = "blob", - ore = "default:silver_sand", - wherein = {"default:stone"}, - clust_scarcity = 16 * 16 * 16, - clust_size = 5, - y_min = -31000, - y_max = 31000, - noise_threshold = 0.0, - noise_params = { - offset = 0.5, - scale = 0.2, - spread = {x = 5, y = 5, z = 5}, - seed = 2316, - octaves = 1, - persist = 0.0 - }, - biomes = {"icesheet_ocean", "tundra", "tundra_beach", "tundra_ocean", - "taiga", "taiga_ocean", "snowy_grassland", "snowy_grassland_ocean", - "grassland", "grassland_dunes", "grassland_ocean", "coniferous_forest", - "coniferous_forest_dunes", "coniferous_forest_ocean", "deciduous_forest", - "deciduous_forest_shore", "deciduous_forest_ocean", "cold_desert", - "cold_desert_ocean", "savanna", "savanna_shore", "savanna_ocean", - "rainforest", "rainforest_swamp", "rainforest_ocean", "underground", - "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"} - }) - - -- Dirt - - minetest.register_ore({ - ore_type = "blob", - ore = "default:dirt", - wherein = {"default:stone"}, - clust_scarcity = 16 * 16 * 16, - clust_size = 5, - y_min = -31, - y_max = 31000, - noise_threshold = 0.0, - noise_params = { - offset = 0.5, - scale = 0.2, - spread = {x = 5, y = 5, z = 5}, - seed = 17676, - octaves = 1, - persist = 0.0 - }, - biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest", - "deciduous_forest", "deciduous_forest_shore", "savanna", "savanna_shore", - "rainforest", "rainforest_swamp", "floatland_coniferous_forest"} - }) - - -- Gravel - - minetest.register_ore({ - ore_type = "blob", - ore = "default:gravel", - wherein = {"default:stone"}, - clust_scarcity = 16 * 16 * 16, - clust_size = 5, - y_min = -31000, - y_max = 31000, - noise_threshold = 0.0, - noise_params = { - offset = 0.5, - scale = 0.2, - spread = {x = 5, y = 5, z = 5}, - seed = 766, - octaves = 1, - persist = 0.0 - }, - biomes = {"icesheet_ocean", "tundra", "tundra_beach", "tundra_ocean", - "taiga", "taiga_ocean", "snowy_grassland", "snowy_grassland_ocean", - "grassland", "grassland_dunes", "grassland_ocean", "coniferous_forest", - "coniferous_forest_dunes", "coniferous_forest_ocean", "deciduous_forest", - "deciduous_forest_shore", "deciduous_forest_ocean", "cold_desert", - "cold_desert_ocean", "savanna", "savanna_shore", "savanna_ocean", - "rainforest", "rainforest_swamp", "rainforest_ocean", "underground", - "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"} - }) - - -- Scatter ores - - -- Coal - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_coal", - wherein = "default:stone", - clust_scarcity = 8 * 8 * 8, - clust_num_ores = 9, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_coal", - wherein = "default:stone", - clust_scarcity = 8 * 8 * 8, - clust_num_ores = 8, - clust_size = 3, - y_min = -31000, - y_max = 64, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_coal", - wherein = "default:stone", - clust_scarcity = 24 * 24 * 24, - clust_num_ores = 27, - clust_size = 6, - y_min = -31000, - y_max = 0, - }) - - -- Iron - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_iron", - wherein = "default:stone", - clust_scarcity = 9 * 9 * 9, - clust_num_ores = 12, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_iron", - wherein = "default:stone", - clust_scarcity = 7 * 7 * 7, - clust_num_ores = 5, - clust_size = 3, - y_min = -31000, - y_max = 0, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_iron", - wherein = "default:stone", - clust_scarcity = 24 * 24 * 24, - clust_num_ores = 27, - clust_size = 6, - y_min = -31000, - y_max = -64, - }) - - -- Copper - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_copper", - wherein = "default:stone", - clust_scarcity = 9 * 9 * 9, - clust_num_ores = 5, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_copper", - wherein = "default:stone", - clust_scarcity = 12 * 12 * 12, - clust_num_ores = 4, - clust_size = 3, - y_min = -63, - y_max = -16, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_copper", - wherein = "default:stone", - clust_scarcity = 9 * 9 * 9, - clust_num_ores = 5, - clust_size = 3, - y_min = -31000, - y_max = -64, - }) - - -- Tin - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_tin", - wherein = "default:stone", - clust_scarcity = 10 * 10 * 10, - clust_num_ores = 5, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_tin", - wherein = "default:stone", - clust_scarcity = 13 * 13 * 13, - clust_num_ores = 4, - clust_size = 3, - y_min = -127, - y_max = -32, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_tin", - wherein = "default:stone", - clust_scarcity = 10 * 10 * 10, - clust_num_ores = 5, - clust_size = 3, - y_min = -31000, - y_max = -128, - }) - - -- Gold - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_gold", - wherein = "default:stone", - clust_scarcity = 13 * 13 * 13, - clust_num_ores = 5, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_gold", - wherein = "default:stone", - clust_scarcity = 15 * 15 * 15, - clust_num_ores = 3, - clust_size = 2, - y_min = -255, - y_max = -64, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_gold", - wherein = "default:stone", - clust_scarcity = 13 * 13 * 13, - clust_num_ores = 5, - clust_size = 3, - y_min = -31000, - y_max = -256, - }) - - -- Mese crystal - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_mese", - wherein = "default:stone", - clust_scarcity = 14 * 14 * 14, - clust_num_ores = 5, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_mese", - wherein = "default:stone", - clust_scarcity = 18 * 18 * 18, - clust_num_ores = 3, - clust_size = 2, - y_min = -255, - y_max = -64, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_mese", - wherein = "default:stone", - clust_scarcity = 14 * 14 * 14, - clust_num_ores = 5, - clust_size = 3, - y_min = -31000, - y_max = -256, - }) - - -- Diamond - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_diamond", - wherein = "default:stone", - clust_scarcity = 15 * 15 * 15, - clust_num_ores = 4, - clust_size = 3, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_diamond", - wherein = "default:stone", - clust_scarcity = 17 * 17 * 17, - clust_num_ores = 4, - clust_size = 3, - y_min = -255, - y_max = -128, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_diamond", - wherein = "default:stone", - clust_scarcity = 15 * 15 * 15, - clust_num_ores = 4, - clust_size = 3, - y_min = -31000, - y_max = -256, - }) - - -- Mese block - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:mese", - wherein = "default:stone", - clust_scarcity = 36 * 36 * 36, - clust_num_ores = 3, - clust_size = 2, - y_min = 1025, - y_max = 31000, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:mese", - wherein = "default:stone", - clust_scarcity = 36 * 36 * 36, - clust_num_ores = 3, - clust_size = 2, - y_min = -31000, - y_max = -1024, - }) -end - - --- --- Register biomes --- - --- All mapgens except mgv6 - -function default.register_biomes(upper_limit) - - -- Icesheet - - minetest.register_biome({ - name = "icesheet", - node_dust = "default:snowblock", - node_top = "default:snowblock", - depth_top = 1, - node_filler = "default:snowblock", - depth_filler = 3, - node_stone = "default:ice", - node_water_top = "default:ice", - depth_water_top = 10, - --node_water = "", - node_river_water = "default:ice", - node_riverbed = "default:gravel", - depth_riverbed = 2, - y_min = -8, - y_max = upper_limit, - heat_point = 0, - humidity_point = 73, - }) - - minetest.register_biome({ - name = "icesheet_ocean", - node_dust = "default:snowblock", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - --node_stone = "", - node_water_top = "default:ice", - depth_water_top = 10, - --node_water = "", - --node_river_water = "", - y_min = -112, - y_max = -9, - heat_point = 0, - humidity_point = 73, - }) - - -- Tundra - - minetest.register_biome({ - name = "tundra", - node_dust = "default:snowblock", - --node_top = , - --depth_top = , - --node_filler = , - --depth_filler = , - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:gravel", - depth_riverbed = 2, - y_min = 2, - y_max = upper_limit, - heat_point = 0, - humidity_point = 40, - }) - - minetest.register_biome({ - name = "tundra_beach", - --node_dust = "", - node_top = "default:gravel", - depth_top = 1, - node_filler = "default:gravel", - depth_filler = 2, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:gravel", - depth_riverbed = 2, - y_min = -3, - y_max = 1, - heat_point = 0, - humidity_point = 40, - }) - - minetest.register_biome({ - name = "tundra_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:gravel", - depth_riverbed = 2, - y_min = -112, - y_max = -4, - heat_point = 0, - humidity_point = 40, - }) - - -- Taiga - - minetest.register_biome({ - name = "taiga", - node_dust = "default:snow", - node_top = "default:dirt_with_snow", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 2, - y_max = upper_limit, - heat_point = 25, - humidity_point = 70, - }) - - minetest.register_biome({ - name = "taiga_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -112, - y_max = 1, - heat_point = 25, - humidity_point = 70, - }) - - -- Snowy grassland - - minetest.register_biome({ - name = "snowy_grassland", - node_dust = "default:snow", - node_top = "default:dirt_with_snow", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 1, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 5, - y_max = upper_limit, - heat_point = 20, - humidity_point = 35, - }) - - minetest.register_biome({ - name = "snowy_grassland_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -112, - y_max = 4, - heat_point = 20, - humidity_point = 35, - }) - - -- Grassland - - minetest.register_biome({ - name = "grassland", - --node_dust = "", - node_top = "default:dirt_with_grass", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 1, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 6, - y_max = upper_limit, - heat_point = 50, - humidity_point = 35, - }) - - minetest.register_biome({ - name = "grassland_dunes", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 2, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 5, - y_max = 5, - heat_point = 50, - humidity_point = 35, - }) - - minetest.register_biome({ - name = "grassland_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -112, - y_max = 4, - heat_point = 50, - humidity_point = 35, - }) - - -- Coniferous forest - - minetest.register_biome({ - name = "coniferous_forest", - --node_dust = "", - node_top = "default:dirt_with_grass", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 6, - y_max = upper_limit, - heat_point = 45, - humidity_point = 70, - }) - - minetest.register_biome({ - name = "coniferous_forest_dunes", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 5, - y_max = 5, - heat_point = 45, - humidity_point = 70, - }) - - minetest.register_biome({ - name = "coniferous_forest_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -112, - y_max = 4, - heat_point = 45, - humidity_point = 70, - }) - - -- Deciduous forest - - minetest.register_biome({ - name = "deciduous_forest", - --node_dust = "", - node_top = "default:dirt_with_grass", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 1, - y_max = upper_limit, - heat_point = 60, - humidity_point = 68, - }) - - minetest.register_biome({ - name = "deciduous_forest_shore", - --node_dust = "", - node_top = "default:dirt", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -1, - y_max = 0, - heat_point = 60, - humidity_point = 68, - }) - - minetest.register_biome({ - name = "deciduous_forest_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -112, - y_max = -2, - heat_point = 60, - humidity_point = 68, - }) - - -- Desert - - minetest.register_biome({ - name = "desert", - --node_dust = "", - node_top = "default:desert_sand", - depth_top = 1, - node_filler = "default:desert_sand", - depth_filler = 1, - node_stone = "default:desert_stone", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 5, - y_max = upper_limit, - heat_point = 92, - humidity_point = 16, - }) - - minetest.register_biome({ - name = "desert_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - node_stone = "default:desert_stone", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -112, - y_max = 4, - heat_point = 92, - humidity_point = 16, - }) - - -- Sandstone desert - - minetest.register_biome({ - name = "sandstone_desert", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 1, - node_stone = "default:sandstone", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 5, - y_max = upper_limit, - heat_point = 60, - humidity_point = 0, - }) - - minetest.register_biome({ - name = "sandstone_desert_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - node_stone = "default:sandstone", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -112, - y_max = 4, - heat_point = 60, - humidity_point = 0, - }) - - -- Cold desert - - minetest.register_biome({ - name = "cold_desert", - --node_dust = "", - node_top = "default:silver_sand", - depth_top = 1, - node_filler = "default:silver_sand", - depth_filler = 1, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 5, - y_max = upper_limit, - heat_point = 40, - humidity_point = 0, - }) - - minetest.register_biome({ - name = "cold_desert_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -112, - y_max = 4, - heat_point = 40, - humidity_point = 0, - }) - - -- Savanna - - minetest.register_biome({ - name = "savanna", - --node_dust = "", - node_top = "default:dirt_with_dry_grass", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 1, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 1, - y_max = upper_limit, - heat_point = 89, - humidity_point = 42, - }) - - minetest.register_biome({ - name = "savanna_shore", - --node_dust = "", - node_top = "default:dirt", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -1, - y_max = 0, - heat_point = 89, - humidity_point = 42, - }) - - minetest.register_biome({ - name = "savanna_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -112, - y_max = -2, - heat_point = 89, - humidity_point = 42, - }) - - -- Rainforest - - minetest.register_biome({ - name = "rainforest", - --node_dust = "", - node_top = "default:dirt_with_rainforest_litter", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 1, - y_max = upper_limit, - heat_point = 86, - humidity_point = 65, - }) - - minetest.register_biome({ - name = "rainforest_swamp", - --node_dust = "", - node_top = "default:dirt", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -1, - y_max = 0, - heat_point = 86, - humidity_point = 65, - }) - - minetest.register_biome({ - name = "rainforest_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -112, - y_max = -2, - heat_point = 86, - humidity_point = 65, - }) - - -- Underground - - minetest.register_biome({ - name = "underground", - --node_dust = "", - --node_top = "", - --depth_top = , - --node_filler = "", - --depth_filler = , - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - y_min = -31000, - y_max = -113, - heat_point = 50, - humidity_point = 50, - }) -end - - --- Biomes for floatlands --- Used when mgv7 'biomerepeat' flag is false - --- TODO Temporary simple biomes to be replaced by special floatland biomes later. - -function default.register_floatland_biomes(floatland_level, shadow_limit) - - minetest.register_biome({ - name = "floatland_grassland", - --node_dust = "", - node_top = "default:dirt_with_grass", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 1, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - --node_riverbed = "", - --depth_riverbed = , - y_min = floatland_level + 4, - y_max = 31000, - heat_point = 50, - humidity_point = 50, - }) - - minetest.register_biome({ - name = "floatland_grassland_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - --node_riverbed = "", - --depth_riverbed = , - y_min = shadow_limit, - y_max = floatland_level + 3, - heat_point = 50, - humidity_point = 50, - }) -end - - --- --- Register decorations --- - --- Mgv6 - -function default.register_mgv6_decorations() - - -- Papyrus - - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = -0.3, - scale = 0.7, - spread = {x = 100, y = 100, z = 100}, - seed = 354, - octaves = 3, - persist = 0.7 - }, - y_min = 1, - y_max = 1, - decoration = "default:papyrus", - height = 2, - height_max = 4, - spawn_by = "default:water_source", - num_spawn_by = 1, - }) - - -- Cacti - - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:desert_sand"}, - sidelen = 16, - noise_params = { - offset = -0.012, - scale = 0.024, - spread = {x = 100, y = 100, z = 100}, - seed = 230, - octaves = 3, - persist = 0.6 - }, - y_min = 1, - y_max = 30, - decoration = "default:cactus", - height = 3, - height_max = 4, - }) - - -- Long grasses - - for length = 1, 5 do - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.007, - spread = {x = 100, y = 100, z = 100}, - seed = 329, - octaves = 3, - persist = 0.6 - }, - y_min = 1, - y_max = 30, - decoration = "default:grass_"..length, - }) - end - - -- Dry shrubs - - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:desert_sand", "default:dirt_with_snow"}, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.035, - spread = {x = 100, y = 100, z = 100}, - seed = 329, - octaves = 3, - persist = 0.6 - }, - y_min = 1, - y_max = 30, - decoration = "default:dry_shrub", - }) -end - - --- All mapgens except mgv6 - -local function register_grass_decoration(offset, scale, length) - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass", "default:sand"}, - sidelen = 16, - noise_params = { - offset = offset, - scale = scale, - spread = {x = 200, y = 200, z = 200}, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = {"grassland", "grassland_dunes", "deciduous_forest", - "coniferous_forest", "coniferous_forest_dunes", - "floatland_grassland"}, - y_min = 1, - y_max = 31000, - decoration = "default:grass_" .. length, - }) -end - -local function register_dry_grass_decoration(offset, scale, length) - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_dry_grass"}, - sidelen = 16, - noise_params = { - offset = offset, - scale = scale, - spread = {x = 200, y = 200, z = 200}, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = {"savanna"}, - y_min = 1, - y_max = 31000, - decoration = "default:dry_grass_" .. length, - }) -end - - -function default.register_decorations() - - -- Apple tree and log - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = 0.036, - scale = 0.022, - spread = {x = 250, y = 250, z = 250}, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = {"deciduous_forest"}, - y_min = 1, - y_max = 31000, - schematic = minetest.get_modpath("default") .. "/schematics/apple_tree.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = 0.0018, - scale = 0.0011, - spread = {x = 250, y = 250, z = 250}, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = {"deciduous_forest"}, - y_min = 1, - y_max = 31000, - schematic = minetest.get_modpath("default") .. "/schematics/apple_log.mts", - flags = "place_center_x", - rotation = "random", - }) - - -- Jungle tree and log - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:dirt_with_rainforest_litter", "default:dirt"}, - sidelen = 16, - fill_ratio = 0.1, - biomes = {"rainforest", "rainforest_swamp"}, - y_min = -1, - y_max = 31000, - schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:dirt_with_rainforest_litter", "default:dirt"}, - sidelen = 16, - fill_ratio = 0.005, - biomes = {"rainforest", "rainforest_swamp"}, - y_min = 1, - y_max = 31000, - schematic = minetest.get_modpath("default") .. "/schematics/jungle_log.mts", - flags = "place_center_x", - rotation = "random", - }) - - -- Taiga and temperate coniferous forest pine tree and log - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:dirt_with_snow", "default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = 0.036, - scale = 0.022, - spread = {x = 250, y = 250, z = 250}, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = {"taiga", "coniferous_forest"}, - y_min = 2, - y_max = 31000, - schematic = minetest.get_modpath("default") .. "/schematics/pine_tree.mts", - flags = "place_center_x, place_center_z", - }) - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:dirt_with_snow", "default:dirt_with_grass"}, - sidelen = 80, - noise_params = { - offset = 0.0018, - scale = 0.0011, - spread = {x = 250, y = 250, z = 250}, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = {"taiga", "coniferous_forest"}, - y_min = 1, - y_max = 31000, - schematic = minetest.get_modpath("default") .. "/schematics/pine_log.mts", - flags = "place_center_x", - rotation = "random", - }) - - -- Acacia tree and log - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:dirt_with_dry_grass"}, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.002, - spread = {x = 250, y = 250, z = 250}, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = {"savanna"}, - y_min = 1, - y_max = 31000, - schematic = minetest.get_modpath("default") .. "/schematics/acacia_tree.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:dirt_with_dry_grass"}, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.001, - spread = {x = 250, y = 250, z = 250}, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = {"savanna"}, - y_min = 1, - y_max = 31000, - schematic = minetest.get_modpath("default") .. "/schematics/acacia_log.mts", - flags = "place_center_x", - rotation = "random", - }) - - -- Aspen tree and log - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = 0.0, - scale = -0.015, - spread = {x = 250, y = 250, z = 250}, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = {"deciduous_forest"}, - y_min = 1, - y_max = 31000, - schematic = minetest.get_modpath("default") .. "/schematics/aspen_tree.mts", - flags = "place_center_x, place_center_z", - }) - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = 0.0, - scale = -0.0008, - spread = {x = 250, y = 250, z = 250}, - seed = 2, - octaves = 3, - persist = 0.66 - }, - biomes = {"deciduous_forest"}, - y_min = 1, - y_max = 31000, - schematic = minetest.get_modpath("default") .. "/schematics/aspen_log.mts", - flags = "place_center_x", - rotation = "random", - }) - - -- Large cactus - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:desert_sand"}, - sidelen = 16, - noise_params = { - offset = -0.0003, - scale = 0.0009, - spread = {x = 200, y = 200, z = 200}, - seed = 230, - octaves = 3, - persist = 0.6 - }, - biomes = {"desert"}, - y_min = 5, - y_max = 31000, - schematic = minetest.get_modpath("default") .. "/schematics/large_cactus.mts", - flags = "place_center_x", - rotation = "random", - }) - - -- Cactus - - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:desert_sand"}, - sidelen = 16, - noise_params = { - offset = -0.0003, - scale = 0.0009, - spread = {x = 200, y = 200, z = 200}, - seed = 230, - octaves = 3, - persist = 0.6 - }, - biomes = {"desert"}, - y_min = 5, - y_max = 31000, - decoration = "default:cactus", - height = 2, - height_max = 5, - }) - - -- Papyrus - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:dirt"}, - sidelen = 16, - noise_params = { - offset = -0.3, - scale = 0.7, - spread = {x = 200, y = 200, z = 200}, - seed = 354, - octaves = 3, - persist = 0.7 - }, - biomes = {"savanna_shore"}, - y_min = 0, - y_max = 0, - schematic = minetest.get_modpath("default") .. "/schematics/papyrus.mts", - }) - - -- Bush - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:dirt_with_grass", "default:dirt_with_snow"}, - sidelen = 16, - noise_params = { - offset = -0.004, - scale = 0.01, - spread = {x = 100, y = 100, z = 100}, - seed = 137, - octaves = 3, - persist = 0.7, - }, - biomes = {"snowy_grassland", "grassland", "deciduous_forest", - "floatland_grassland"}, - y_min = 1, - y_max = 31000, - schematic = minetest.get_modpath("default") .. "/schematics/bush.mts", - flags = "place_center_x, place_center_z", - }) - - -- Acacia bush - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:dirt_with_dry_grass"}, - sidelen = 16, - noise_params = { - offset = -0.004, - scale = 0.01, - spread = {x = 100, y = 100, z = 100}, - seed = 90155, - octaves = 3, - persist = 0.7, - }, - biomes = {"savanna"}, - y_min = 1, - y_max = 31000, - schematic = minetest.get_modpath("default") .. "/schematics/acacia_bush.mts", - flags = "place_center_x, place_center_z", - }) - - -- Grasses - - register_grass_decoration(-0.03, 0.09, 5) - register_grass_decoration(-0.015, 0.075, 4) - register_grass_decoration(0, 0.06, 3) - register_grass_decoration(0.015, 0.045, 2) - register_grass_decoration(0.03, 0.03, 1) - - -- Dry grasses - - register_dry_grass_decoration(0.01, 0.05, 5) - register_dry_grass_decoration(0.03, 0.03, 4) - register_dry_grass_decoration(0.05, 0.01, 3) - register_dry_grass_decoration(0.07, -0.01, 2) - register_dry_grass_decoration(0.09, -0.03, 1) - - -- Junglegrass - - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_rainforest_litter"}, - sidelen = 16, - fill_ratio = 0.1, - biomes = {"rainforest"}, - y_min = 1, - y_max = 31000, - decoration = "default:junglegrass", - }) - - -- Dry shrub - - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:desert_sand", - "default:sand", "default:silver_sand"}, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.02, - spread = {x = 200, y = 200, z = 200}, - seed = 329, - octaves = 3, - persist = 0.6 - }, - biomes = {"desert", "sandstone_desert", "cold_desert"}, - y_min = 2, - y_max = 31000, - decoration = "default:dry_shrub", - }) - - -- Coral reef - - minetest.register_decoration({ - deco_type = "schematic", - place_on = {"default:sand"}, - noise_params = { - offset = -0.15, - scale = 0.1, - spread = {x = 100, y = 100, z = 100}, - seed = 7013, - octaves = 3, - persist = 1, - }, - biomes = { - "desert_ocean", - "savanna_ocean", - "rainforest_ocean", - }, - y_min = -8, - y_max = -2, - schematic = minetest.get_modpath("default") .. "/schematics/corals.mts", - flags = "place_center_x, place_center_z", - rotation = "random", - }) -end - - --- --- Detect mapgen, flags and parameters to select functions --- - --- Get setting or default -local mgv7_spflags = minetest.get_mapgen_setting("mgv7_spflags") or - "mountains, ridges, nofloatlands, caverns, biomerepeat" -local captures_float = string.match(mgv7_spflags, "floatlands") -local captures_nofloat = string.match(mgv7_spflags, "nofloatlands") -local captures_nobiorep = string.match(mgv7_spflags, "nobiomerepeat") - --- Get setting or default --- Make global for mods to use to register floatland biomes -default.mgv7_floatland_level = - minetest.get_mapgen_setting("mgv7_floatland_level") or 1280 -default.mgv7_shadow_limit = - minetest.get_mapgen_setting("mgv7_shadow_limit") or 1024 - -minetest.clear_registered_biomes() -minetest.clear_registered_ores() -minetest.clear_registered_decorations() - -local mg_name = minetest.get_mapgen_setting("mg_name") - -if mg_name == "v6" then - default.register_mgv6_ores() - default.register_mgv6_decorations() -elseif mg_name == "v7" and - captures_float == "floatlands" and - -- Need to check for 'nofloatlands' because that contains - -- 'floatlands' which makes the second condition true. - captures_nofloat ~= "nofloatlands" and - captures_nobiorep == "nobiomerepeat" then - -- Mgv7 with floatlands and floatland biomes - default.register_biomes(default.mgv7_shadow_limit - 1) - default.register_floatland_biomes( - default.mgv7_floatland_level, default.mgv7_shadow_limit) - default.register_ores() - default.register_decorations() -else - default.register_biomes(31000) - default.register_ores() - default.register_decorations() -end diff --git a/mods/default.diff/mapgen.lua.diff b/mods/default.diff/mapgen.lua.diff deleted file mode 100644 index 80b7b2b..0000000 --- a/mods/default.diff/mapgen.lua.diff +++ /dev/null @@ -1,439 +0,0 @@ -46,48d45 -< -- Blob ores -< -- These first to avoid other ores in blobs -< -51c48,51 -< function default.register_mgv6_blob_ores() ---- -> function default.register_mgv6_ores() -> -> -- Blob ore -> -- These first to avoid other ores in blobs -136a137,407 -> -> -- Scatter ores -> -> -- Coal -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_coal", -> wherein = "default:stone", -> clust_scarcity = 8 * 8 * 8, -> clust_num_ores = 9, -> clust_size = 3, -> y_min = 1025, -> y_max = 31000, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_coal", -> wherein = "default:stone", -> clust_scarcity = 8 * 8 * 8, -> clust_num_ores = 8, -> clust_size = 3, -> y_min = -31000, -> y_max = 64, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_coal", -> wherein = "default:stone", -> clust_scarcity = 24 * 24 * 24, -> clust_num_ores = 27, -> clust_size = 6, -> y_min = -31000, -> y_max = 0, -> }) -> -> -- Iron -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_iron", -> wherein = "default:stone", -> clust_scarcity = 9 * 9 * 9, -> clust_num_ores = 12, -> clust_size = 3, -> y_min = 1025, -> y_max = 31000, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_iron", -> wherein = "default:stone", -> clust_scarcity = 7 * 7 * 7, -> clust_num_ores = 5, -> clust_size = 3, -> y_min = -31000, -> y_max = 0, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_iron", -> wherein = "default:stone", -> clust_scarcity = 24 * 24 * 24, -> clust_num_ores = 27, -> clust_size = 6, -> y_min = -31000, -> y_max = -64, -> }) -> -> -- Copper -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_copper", -> wherein = "default:stone", -> clust_scarcity = 9 * 9 * 9, -> clust_num_ores = 5, -> clust_size = 3, -> y_min = 1025, -> y_max = 31000, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_copper", -> wherein = "default:stone", -> clust_scarcity = 12 * 12 * 12, -> clust_num_ores = 4, -> clust_size = 3, -> y_min = -63, -> y_max = -16, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_copper", -> wherein = "default:stone", -> clust_scarcity = 9 * 9 * 9, -> clust_num_ores = 5, -> clust_size = 3, -> y_min = -31000, -> y_max = -64, -> }) -> -> -- Tin -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_tin", -> wherein = "default:stone", -> clust_scarcity = 10 * 10 * 10, -> clust_num_ores = 5, -> clust_size = 3, -> y_min = 1025, -> y_max = 31000, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_tin", -> wherein = "default:stone", -> clust_scarcity = 13 * 13 * 13, -> clust_num_ores = 4, -> clust_size = 3, -> y_min = -127, -> y_max = -32, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_tin", -> wherein = "default:stone", -> clust_scarcity = 10 * 10 * 10, -> clust_num_ores = 5, -> clust_size = 3, -> y_min = -31000, -> y_max = -128, -> }) -> -> -- Gold -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_gold", -> wherein = "default:stone", -> clust_scarcity = 13 * 13 * 13, -> clust_num_ores = 5, -> clust_size = 3, -> y_min = 1025, -> y_max = 31000, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_gold", -> wherein = "default:stone", -> clust_scarcity = 15 * 15 * 15, -> clust_num_ores = 3, -> clust_size = 2, -> y_min = -255, -> y_max = -64, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_gold", -> wherein = "default:stone", -> clust_scarcity = 13 * 13 * 13, -> clust_num_ores = 5, -> clust_size = 3, -> y_min = -31000, -> y_max = -256, -> }) -> -> -- Mese crystal -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_mese", -> wherein = "default:stone", -> clust_scarcity = 14 * 14 * 14, -> clust_num_ores = 5, -> clust_size = 3, -> y_min = 1025, -> y_max = 31000, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_mese", -> wherein = "default:stone", -> clust_scarcity = 18 * 18 * 18, -> clust_num_ores = 3, -> clust_size = 2, -> y_min = -255, -> y_max = -64, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_mese", -> wherein = "default:stone", -> clust_scarcity = 14 * 14 * 14, -> clust_num_ores = 5, -> clust_size = 3, -> y_min = -31000, -> y_max = -256, -> }) -> -> -- Diamond -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_diamond", -> wherein = "default:stone", -> clust_scarcity = 15 * 15 * 15, -> clust_num_ores = 4, -> clust_size = 3, -> y_min = 1025, -> y_max = 31000, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_diamond", -> wherein = "default:stone", -> clust_scarcity = 17 * 17 * 17, -> clust_num_ores = 4, -> clust_size = 3, -> y_min = -255, -> y_max = -128, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:stone_with_diamond", -> wherein = "default:stone", -> clust_scarcity = 15 * 15 * 15, -> clust_num_ores = 4, -> clust_size = 3, -> y_min = -31000, -> y_max = -256, -> }) -> -> -- Mese block -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:mese", -> wherein = "default:stone", -> clust_scarcity = 36 * 36 * 36, -> clust_num_ores = 3, -> clust_size = 2, -> y_min = 1025, -> y_max = 31000, -> }) -> -> minetest.register_ore({ -> ore_type = "scatter", -> ore = "default:mese", -> wherein = "default:stone", -> clust_scarcity = 36 * 36 * 36, -> clust_num_ores = 3, -> clust_size = 2, -> y_min = -31000, -> y_max = -1024, -> }) -142c413,416 -< function default.register_blob_ores() ---- -> function default.register_ores() -> -> -- Blob ore -> -- These first to avoid other ores in blobs -144a419 -> -- This first to avoid clay in sand blobs -191c466 -< "floatland_ocean", "floatland_grassland", "floatland_coniferous_forest"} ---- -> "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"} -215,216c490 -< "rainforest", "rainforest_swamp", "floatland_grassland", -< "floatland_coniferous_forest"} ---- -> "rainforest", "rainforest_swamp", "floatland_coniferous_forest"} -245c519 -< "floatland_ocean", "floatland_grassland", "floatland_coniferous_forest"} ---- -> "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"} -247,248d520 -< end -< -250,253c522 -< -- Scatter ores -< -- All mapgens -< -< function default.register_ores() ---- -> -- Scatter ores -1178a1448 -> -- Used when mgv7 'biomerepeat' flag is false -1180,1202c1450 -< function default.register_floatland_biomes(floatland_level, shadow_limit) -< -< -- Coniferous forest -< -< minetest.register_biome({ -< name = "floatland_coniferous_forest", -< --node_dust = "", -< node_top = "default:dirt_with_grass", -< depth_top = 1, -< node_filler = "default:dirt", -< depth_filler = 3, -< --node_stone = "", -< --node_water_top = "", -< --depth_water_top = , -< --node_water = "", -< --node_river_water = "", -< --node_riverbed = "", -< --depth_riverbed = , -< y_min = floatland_level + 2, -< y_max = 31000, -< heat_point = 50, -< humidity_point = 70, -< }) ---- -> -- TODO Temporary simple biomes to be replaced by special floatland biomes later. -1204c1452 -< -- Grassland ---- -> function default.register_floatland_biomes(floatland_level, shadow_limit) -1220c1468 -< y_min = floatland_level + 2, ---- -> y_min = floatland_level + 4, -1223,1245c1471 -< humidity_point = 35, -< }) -< -< -- Sandstone desert -< -< minetest.register_biome({ -< name = "floatland_sandstone_desert", -< --node_dust = "", -< node_top = "default:sand", -< depth_top = 1, -< node_filler = "default:sand", -< depth_filler = 1, -< node_stone = "default:sandstone", -< --node_water_top = "", -< --depth_water_top = , -< --node_water = "", -< --node_river_water = "", -< --node_riverbed = "", -< --depth_riverbed = , -< y_min = floatland_level + 2, -< y_max = 31000, -< heat_point = 50, -< humidity_point = 0, ---- -> humidity_point = 50, -1248,1249d1473 -< -- Floatland ocean / underground -< -1251c1475 -< name = "floatland_ocean", ---- -> name = "floatland_grassland_ocean", -1265c1489 -< y_max = floatland_level + 1, ---- -> y_max = floatland_level + 3, -1383c1607 -< "floatland_grassland", "floatland_coniferous_forest"}, ---- -> "floatland_grassland"}, -1497c1721 -< biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"}, ---- -> biomes = {"taiga", "coniferous_forest"}, -1797c2021 -< "mountains, ridges, nofloatlands" ---- -> "mountains, ridges, nofloatlands, caverns, biomerepeat" -1799a2024 -> local captures_nobiorep = string.match(mgv7_spflags, "nobiomerepeat") -1801,1802c2026,2031 -< local mgv7_floatland_level = minetest.get_mapgen_setting("mgv7_floatland_level") or 1280 -< local mgv7_shadow_limit = minetest.get_mapgen_setting("mgv7_shadow_limit") or 1024 ---- -> -- Get setting or default -> -- Make global for mods to use to register floatland biomes -> default.mgv7_floatland_level = -> minetest.get_mapgen_setting("mgv7_floatland_level") or 1280 -> default.mgv7_shadow_limit = -> minetest.get_mapgen_setting("mgv7_shadow_limit") or 1024 -1808a2038 -> -1810,1811c2040 -< default.register_mgv6_blob_ores() -< default.register_ores() ---- -> default.register_mgv6_ores() -1813,1818c2042,2051 -< elseif mg_name == "v7" and captures_float == "floatlands" and -< captures_nofloat ~= "nofloatlands" then -< -- Mgv7 with floatlands -< default.register_biomes(mgv7_shadow_limit - 1) -< default.register_floatland_biomes(mgv7_floatland_level, mgv7_shadow_limit) -< default.register_blob_ores() ---- -> elseif mg_name == "v7" and -> captures_float == "floatlands" and -> -- Need to check for 'nofloatlands' because that contains -> -- 'floatlands' which makes the second condition true. -> captures_nofloat ~= "nofloatlands" and -> captures_nobiorep == "nobiomerepeat" then -> -- Mgv7 with floatlands and floatland biomes -> default.register_biomes(default.mgv7_shadow_limit - 1) -> default.register_floatland_biomes( -> default.mgv7_floatland_level, default.mgv7_shadow_limit) -1823d2055 -< default.register_blob_ores() diff --git a/mods/default.diff/nodes.lua b/mods/default.diff/nodes.lua deleted file mode 100644 index 7346c1d..0000000 --- a/mods/default.diff/nodes.lua +++ /dev/null @@ -1,2692 +0,0 @@ --- mods/default/nodes.lua - - ---[[ Node name convention: - -Although many node names are in combined-word form, the required form for new -node names is words separated by underscores. If both forms are used in written -language (for example pinewood and pine wood) the underscore form should be used. - ---]] - - ---[[ Index: - -Stone ------ -(1. Material 2. Cobble variant 3. Brick variant 4. Modified forms) - -default:stone -default:cobble -default:stonebrick -default:stone_block -default:mossycobble - -default:desert_stone -default:desert_cobble -default:desert_stonebrick -default:desert_stone_block - -default:sandstone -default:sandstonebrick -default:sandstone_block -default:desert_sandstone -default:desert_sandstone_brick -default:desert_sandstone_block -default:silver_sandstone -default:silver_sandstone_brick -default:silver_sandstone_block - -default:obsidian -default:obsidianbrick -default:obsidian_block - -Soft / Non-Stone ----------------- -(1. Material 2. Modified forms) - -default:dirt -default:dirt_with_grass -default:dirt_with_grass_footsteps -default:dirt_with_dry_grass -default:dirt_with_snow -default:dirt_with_rainforest_litter - -default:sand -default:desert_sand -default:silver_sand - -default:gravel - -default:clay - -default:snow -default:snowblock - -default:ice - -Trees ------ -(1. Trunk 2. Fabricated trunk 3. Leaves 4. Sapling 5. Fruits) - -default:tree -default:wood -default:leaves -default:sapling -default:apple - -default:jungle_tree -default:jungle_wood -default:jungle_leaves -default:jungle_sapling - -default:pine_tree -default:pine_wood -default:pine_needles -default:pine_sapling - -default:acacia_tree -default:acacia_wood -default:acacia_leaves -default:acacia_sapling - -default:aspen_tree -default:aspen_wood -default:aspen_leaves -default:aspen_sapling - -Ores ----- -(1. In stone 2. Blocks) - -default:stone_with_coal -default:coalblock - -default:stone_with_iron -default:steelblock - -default:stone_with_copper -default:copperblock - -default:stone_with_tin -default:tinblock - -default:bronzeblock - -default:stone_with_gold -default:goldblock - -default:stone_with_mese -default:mese - -default:stone_with_diamond -default:diamondblock - -Plantlife ---------- - -default:cactus -default:papyrus -default:dry_shrub -default:jungle_grass - -default:grass_1 -default:grass_2 -default:grass_3 -default:grass_4 -default:grass_5 - -default:dry_grass_1 -default:dry_grass_2 -default:dry_grass_3 -default:dry_grass_4 -default:dry_grass_5 - -default:bush_stem -default:bush_leaves -default:bush_sapling -default:acacia_bush_stem -default:acacia_bush_leaves -default:acacia_bush_sapling - -Corals ------- - -default:coral_brown -default:coral_orange -default:coral_skeleton - -Liquids -------- -(1. Source 2. Flowing) - -default:water_source -default:water_flowing - -default:river_water_source -default:river_water_flowing - -default:lava_source -default:lava_flowing - -Tools / "Advanced" crafting / Non-"natural" -------------------------------------------- - -default:chest -default:chest_locked - -default:bookshelf - -default:sign_wall_wood -default:sign_wall_steel - -default:ladder_wood -default:ladder_steel - -default:fence_wood -default:fence_acacia_wood -default:fence_jungle_wood -default:fence_pine_wood -default:fence_aspen_wood - -default:glass -default:obsidian_glass - -default:brick - -default:meselamp -default:mese_post_light - -Misc ----- - -default:cloud - ---]] - --- --- Stone --- - -minetest.register_node("default:stone", { - description = "Stone", - tiles = {"default_stone.png"}, - groups = {cracky = 3, stone = 1}, - drop = 'default:cobble', - legacy_mineral = true, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:cobble", { - description = "Cobblestone", - tiles = {"default_cobble.png"}, - is_ground_content = false, - groups = {cracky = 3, stone = 2}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:stonebrick", { - description = "Stone Brick", - paramtype2 = "facedir", - place_param2 = 0, - tiles = {"default_stone_brick.png"}, - is_ground_content = false, - groups = {cracky = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:stone_block", { - description = "Stone Block", - tiles = {"default_stone_block.png"}, - is_ground_content = false, - groups = {cracky = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:mossycobble", { - description = "Mossy Cobblestone", - tiles = {"default_mossycobble.png"}, - is_ground_content = false, - groups = {cracky = 3, stone = 1}, - sounds = default.node_sound_stone_defaults(), -}) - - -minetest.register_node("default:desert_stone", { - description = "Desert Stone", - tiles = {"default_desert_stone.png"}, - groups = {cracky = 3, stone = 1}, - drop = 'default:desert_cobble', - legacy_mineral = true, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:desert_cobble", { - description = "Desert Cobblestone", - tiles = {"default_desert_cobble.png"}, - is_ground_content = false, - groups = {cracky = 3, stone = 2}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:desert_stonebrick", { - description = "Desert Stone Brick", - paramtype2 = "facedir", - place_param2 = 0, - tiles = {"default_desert_stone_brick.png"}, - is_ground_content = false, - groups = {cracky = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:desert_stone_block", { - description = "Desert Stone Block", - tiles = {"default_desert_stone_block.png"}, - is_ground_content = false, - groups = {cracky = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:sandstone", { - description = "Sandstone", - tiles = {"default_sandstone.png"}, - groups = {crumbly = 1, cracky = 3}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:sandstonebrick", { - description = "Sandstone Brick", - paramtype2 = "facedir", - place_param2 = 0, - tiles = {"default_sandstone_brick.png"}, - is_ground_content = false, - groups = {cracky = 2}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:sandstone_block", { - description = "Sandstone Block", - tiles = {"default_sandstone_block.png"}, - is_ground_content = false, - groups = {cracky = 2}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:desert_sandstone", { - description = "Desert Sandstone", - tiles = {"default_desert_sandstone.png"}, - groups = {crumbly = 1, cracky = 3}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:desert_sandstone_brick", { - description = "Desert Sandstone Brick", - paramtype2 = "facedir", - place_param2 = 0, - tiles = {"default_desert_sandstone_brick.png"}, - is_ground_content = false, - groups = {cracky = 2}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:desert_sandstone_block", { - description = "Desert Sandstone Block", - tiles = {"default_desert_sandstone_block.png"}, - is_ground_content = false, - groups = {cracky = 2}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:silver_sandstone", { - description = "Silver Sandstone", - tiles = {"default_silver_sandstone.png"}, - groups = {crumbly = 1, cracky = 3}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:silver_sandstone_brick", { - description = "Silver Sandstone Brick", - paramtype2 = "facedir", - place_param2 = 0, - tiles = {"default_silver_sandstone_brick.png"}, - is_ground_content = false, - groups = {cracky = 2}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:silver_sandstone_block", { - description = "Silver Sandstone Block", - tiles = {"default_silver_sandstone_block.png"}, - is_ground_content = false, - groups = {cracky = 2}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:obsidian", { - description = "Obsidian", - tiles = {"default_obsidian.png"}, - sounds = default.node_sound_stone_defaults(), - groups = {cracky = 1, level = 2}, -}) - -minetest.register_node("default:obsidianbrick", { - description = "Obsidian Brick", - paramtype2 = "facedir", - place_param2 = 0, - tiles = {"default_obsidian_brick.png"}, - is_ground_content = false, - sounds = default.node_sound_stone_defaults(), - groups = {cracky = 1, level = 2}, -}) - -minetest.register_node("default:obsidian_block", { - description = "Obsidian Block", - tiles = {"default_obsidian_block.png"}, - is_ground_content = false, - sounds = default.node_sound_stone_defaults(), - groups = {cracky = 1, level = 2}, -}) - --- --- Soft / Non-Stone --- - -minetest.register_node("default:dirt", { - description = "Dirt", - tiles = {"default_dirt.png"}, - groups = {crumbly = 3, soil = 1}, - sounds = default.node_sound_dirt_defaults(), -}) - -minetest.register_node("default:dirt_with_grass", { - description = "Dirt with Grass", - tiles = {"default_grass.png", "default_dirt.png", - {name = "default_dirt.png^default_grass_side.png", - tileable_vertical = false}}, - groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, - drop = 'default:dirt', - sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_grass_footstep", gain = 0.25}, - }), -}) - -minetest.register_node("default:dirt_with_grass_footsteps", { - description = "Dirt with Grass and Footsteps", - tiles = {"default_grass.png^default_footprint.png", "default_dirt.png", - {name = "default_dirt.png^default_grass_side.png", - tileable_vertical = false}}, - groups = {crumbly = 3, soil = 1, not_in_creative_inventory = 1}, - drop = 'default:dirt', - sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_grass_footstep", gain = 0.25}, - }), -}) - -minetest.register_node("default:dirt_with_dry_grass", { - description = "Dirt with Dry Grass", - tiles = {"default_dry_grass.png", - "default_dirt.png", - {name = "default_dirt.png^default_dry_grass_side.png", - tileable_vertical = false}}, - groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, - drop = 'default:dirt', - sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_grass_footstep", gain = 0.4}, - }), -}) - -minetest.register_node("default:dirt_with_snow", { - description = "Dirt with Snow", - tiles = {"default_snow.png", "default_dirt.png", - {name = "default_dirt.png^default_snow_side.png", - tileable_vertical = false}}, - groups = {crumbly = 3, spreading_dirt_type = 1, snowy = 1}, - drop = 'default:dirt', - sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_snow_footstep", gain = 0.15}, - }), -}) - -minetest.register_node("default:dirt_with_rainforest_litter", { - description = "Dirt with Rainforest Litter", - tiles = { - "default_rainforest_litter.png", - "default_dirt.png", - {name = "default_dirt.png^default_rainforest_litter_side.png", - tileable_vertical = false} - }, - groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, - drop = "default:dirt", - sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_grass_footstep", gain = 0.4}, - }), -}) - -minetest.register_node("default:sand", { - description = "Sand", - tiles = {"default_sand.png"}, - groups = {crumbly = 3, falling_node = 1, sand = 1}, - sounds = default.node_sound_sand_defaults(), -}) - -minetest.register_node("default:desert_sand", { - description = "Desert Sand", - tiles = {"default_desert_sand.png"}, - groups = {crumbly = 3, falling_node = 1, sand = 1}, - sounds = default.node_sound_sand_defaults(), -}) - -minetest.register_node("default:silver_sand", { - description = "Silver Sand", - tiles = {"default_silver_sand.png"}, - groups = {crumbly = 3, falling_node = 1, sand = 1}, - sounds = default.node_sound_sand_defaults(), -}) - - -minetest.register_node("default:gravel", { - description = "Gravel", - tiles = {"default_gravel.png"}, - groups = {crumbly = 2, falling_node = 1}, - sounds = default.node_sound_gravel_defaults(), - drop = { - max_items = 1, - items = { - {items = {'default:flint'}, rarity = 16}, - {items = {'default:gravel'}} - } - } -}) - -minetest.register_node("default:clay", { - description = "Clay", - tiles = {"default_clay.png"}, - groups = {crumbly = 3}, - drop = 'default:clay_lump 4', - sounds = default.node_sound_dirt_defaults(), -}) - - -minetest.register_node("default:snow", { - description = "Snow", - tiles = {"default_snow.png"}, - inventory_image = "default_snowball.png", - wield_image = "default_snowball.png", - paramtype = "light", - buildable_to = true, - floodable = true, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, - }, - }, - groups = {crumbly = 3, falling_node = 1, puts_out_fire = 1, snowy = 1}, - sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_snow_footstep", gain = 0.15}, - dug = {name = "default_snow_footstep", gain = 0.2}, - dig = {name = "default_snow_footstep", gain = 0.2} - }), - - on_construct = function(pos) - pos.y = pos.y - 1 - if minetest.get_node(pos).name == "default:dirt_with_grass" then - minetest.set_node(pos, {name = "default:dirt_with_snow"}) - end - end, -}) - -minetest.register_node("default:snowblock", { - description = "Snow Block", - tiles = {"default_snow.png"}, - groups = {crumbly = 3, puts_out_fire = 1, cools_lava = 1, snowy = 1}, - sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_snow_footstep", gain = 0.15}, - dug = {name = "default_snow_footstep", gain = 0.2}, - dig = {name = "default_snow_footstep", gain = 0.2} - }), - - on_construct = function(pos) - pos.y = pos.y - 1 - if minetest.get_node(pos).name == "default:dirt_with_grass" then - minetest.set_node(pos, {name = "default:dirt_with_snow"}) - end - end, -}) - -minetest.register_node("default:ice", { - description = "Ice", - tiles = {"default_ice.png"}, - is_ground_content = false, - paramtype = "light", - groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1}, - sounds = default.node_sound_glass_defaults(), -}) - --- --- Trees --- - -minetest.register_node("default:tree", { - description = "Apple Tree", - tiles = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"}, - paramtype2 = "facedir", - is_ground_content = false, - groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, - sounds = default.node_sound_wood_defaults(), - - on_place = minetest.rotate_node -}) - -minetest.register_node("default:wood", { - description = "Apple Wood Planks", - paramtype2 = "facedir", - place_param2 = 0, - tiles = {"default_wood.png"}, - is_ground_content = false, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1}, - sounds = default.node_sound_wood_defaults(), -}) - -minetest.register_node("default:sapling", { - description = "Apple Tree Sapling", - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1 - {-0.125, -0.375, -0.1875, 0.1875, 0, 0.1875}, -- NodeBox2 - {0, -0.125, -0.0625, 0.1875, 0.125, 0.125}, -- NodeBox3 - } - }, - tiles = {"default_sapling_top.png", - "default_sapling_bottom.png", - "default_sapling_side.png", - "default_sapling_side.png", - "default_sapling_side.png", - "default_sapling_side.png" - }, - inventory_image = "default_sapling.png", - wield_image = "default_sapling.png", - paramtype = "light", - sunlight_propagates = true, - walkable = true, - on_timer = default.grow_sapling, - selection_box = { - type = "fixed", - fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} - }, - groups = {snappy = 2, dig_immediate = 3, flammable = 2, - attached_node = 1, sapling = 1}, - sounds = default.node_sound_leaves_defaults(), - - on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(300, 1500)) - end, - - on_place = function(itemstack, placer, pointed_thing) - itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, - "default:sapling", - -- minp, maxp to be checked, relative to sapling pos - -- minp_relative.y = 1 because sapling pos has been checked - {x = -2, y = 1, z = -2}, - {x = 2, y = 6, z = 2}, - -- maximum interval of interior volume check - 4) - - return itemstack - end, -}) - -minetest.register_node("default:leaves", { - description = "Apple Tree Leaves", - drawtype = "allfaces_optional", - waving = 1, - tiles = {"default_leaves.png"}, - special_tiles = {"default_leaves_simple.png"}, - paramtype = "light", - is_ground_content = false, - groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, - drop = { - max_items = 1, - items = { - { - -- player will get sapling with 1/20 chance - items = {'default:sapling'}, - rarity = 20, - }, - { - -- player will get leaves only if he get no saplings, - -- this is because max_items is 1 - items = {'default:leaves'}, - } - } - }, - sounds = default.node_sound_leaves_defaults(), - - after_place_node = default.after_place_leaves, -}) - -minetest.register_node("default:apple", { - description = "Apple", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, 0.0625, 0.25}, -- NodeBox1 - {-0.0625, 0.0625, -0.0625, 0.0625, 0.25, 0.0625}, -- NodeBox2 - } - }, - tiles = {"default_apple.png"}, - inventory_image = "default_apple.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - is_ground_content = false, - selection_box = { - type = "fixed", - fixed = {-3 / 16, -7 / 16, -3 / 16, 3 / 16, 4 / 16, 3 / 16} - }, - groups = {fleshy = 3, dig_immediate = 3, flammable = 2, - leafdecay = 3, leafdecay_drop = 1}, - on_use = minetest.item_eat(2), - sounds = default.node_sound_leaves_defaults(), - - after_place_node = function(pos, placer, itemstack) - if placer:is_player() then - minetest.set_node(pos, {name = "default:apple", param2 = 1}) - end - end, -}) - - -minetest.register_node("default:jungle_tree", { - description = "Jungle Tree", - tiles = {"default_jungle_tree_top.png", "default_jungle_tree_top.png", - "default_jungle_tree.png"}, - paramtype2 = "facedir", - is_ground_content = false, - groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, - sounds = default.node_sound_wood_defaults(), - - on_place = minetest.rotate_node -}) - -minetest.register_node("default:jungle_wood", { - description = "Jungle Wood Planks", - paramtype2 = "facedir", - place_param2 = 0, - tiles = {"default_jungle_wood.png"}, - is_ground_content = false, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1}, - sounds = default.node_sound_wood_defaults(), -}) - -minetest.register_node("default:jungle_leaves", { - description = "Jungle Tree Leaves", - drawtype = "allfaces_optional", - waving = 1, - tiles = {"default_jungle_leaves.png"}, - special_tiles = {"default_jungle_leaves_simple.png"}, - paramtype = "light", - is_ground_content = false, - groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, - drop = { - max_items = 1, - items = { - {items = {'default:jungle_sapling'}, rarity = 20}, - {items = {'default:jungle_leaves'}} - } - }, - sounds = default.node_sound_leaves_defaults(), - - after_place_node = default.after_place_leaves, -}) - -minetest.register_node("default:jungle_sapling", { - description = "Jungle Tree Sapling", - tiles = { - "default_jungle_sapling_top.png", - "default_jungle_sapling_bottom.png", - "default_jungle_sapling_side.png", - "default_jungle_sapling_side.png", - "default_jungle_sapling_side.png", - "default_jungle_sapling_side.png" - }, - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1 - {-0.25, -0.3125, -0.25, 0.25, 0, 0.25}, -- NodeBox3 - {-0.125, -0.0625, -0.125, 0.1875, 0.125, 0.1875}, -- NodeBox4 - } - }, - inventory_image = "default_jungle_sapling.png", - wield_image = "default_jungle_sapling.png", - paramtype = "light", - sunlight_propagates = true, - walkable = true, - on_timer = default.grow_sapling, - selection_box = { - type = "fixed", - fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} - }, - groups = {snappy = 2, dig_immediate = 3, flammable = 2, - attached_node = 1, sapling = 1}, - sounds = default.node_sound_leaves_defaults(), - - on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(300, 1500)) - end, - - on_place = function(itemstack, placer, pointed_thing) - itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, - "default:junglesapling", - -- minp, maxp to be checked, relative to sapling pos - -- minp_relative.y = 1 because sapling pos has been checked - {x = -2, y = 1, z = -2}, - {x = 2, y = 15, z = 2}, - -- maximum interval of interior volume check - 4) - - return itemstack - end, -}) - - -minetest.register_node("default:pine_tree", { - description = "Pine Tree", - tiles = {"default_pine_tree_top.png", "default_pine_tree_top.png", - "default_pine_tree.png"}, - paramtype2 = "facedir", - is_ground_content = false, - groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3}, - sounds = default.node_sound_wood_defaults(), - - on_place = minetest.rotate_node -}) - -minetest.register_node("default:pine_wood", { - description = "Pine Wood Planks", - paramtype2 = "facedir", - place_param2 = 0, - tiles = {"default_pine_wood.png"}, - is_ground_content = false, - groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, - sounds = default.node_sound_wood_defaults(), -}) - -minetest.register_node("default:pine_needles",{ - description = "Pine Needles", - drawtype = "allfaces_optional", - tiles = {"default_pine_needles.png"}, - waving = 1, - paramtype = "light", - is_ground_content = false, - groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, - drop = { - max_items = 1, - items = { - {items = {"default:pine_sapling"}, rarity = 20}, - {items = {"default:pine_needles"}} - } - }, - sounds = default.node_sound_leaves_defaults(), - - after_place_node = default.after_place_leaves, -}) - -minetest.register_node("default:pine_sapling", { - description = "Pine Tree Sapling", - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1 - {-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox2 - {-0.25, -0.3125, -0.25, 0.25, -0.25, 0.25}, -- NodeBox3 - {-0.1875, -0.25, -0.1875, 0.1875, -0.125, 0.1875}, -- NodeBox4 - {-0.125, -0.1875, -0.125, 0.125, -0.0625, 0.125}, -- NodeBox5 - {-0.0625, -0.0625, -0.0625, 0.0625, 0.0625, 0.0625}, -- NodeBox6 - } - }, - tiles = { - "default_pine_sapling_top.png", - "default_pine_sapling_bottom.png", - "default_pine_sapling_side.png", - "default_pine_sapling_side.png", - "default_pine_sapling_side.png", - "default_pine_sapling_side.png" - }, - inventory_image = "default_pine_sapling.png", - wield_image = "default_pine_sapling.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - on_timer = default.grow_sapling, - selection_box = { - type = "fixed", - fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} - }, - groups = {snappy = 2, dig_immediate = 3, flammable = 3, - attached_node = 1, sapling = 1}, - sounds = default.node_sound_leaves_defaults(), - - on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(300, 1500)) - end, - - on_place = function(itemstack, placer, pointed_thing) - itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, - "default:pine_sapling", - -- minp, maxp to be checked, relative to sapling pos - -- minp_relative.y = 1 because sapling pos has been checked - {x = -2, y = 1, z = -2}, - {x = 2, y = 12, z = 2}, - -- maximum interval of interior volume check - 4) - - return itemstack - end, -}) - - -minetest.register_node("default:acacia_tree", { - description = "Acacia Tree", - tiles = {"default_acacia_tree_top.png", "default_acacia_tree_top.png", - "default_acacia_tree.png"}, - paramtype2 = "facedir", - is_ground_content = false, - groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, - sounds = default.node_sound_wood_defaults(), - - on_place = minetest.rotate_node -}) - -minetest.register_node("default:acacia_wood", { - description = "Acacia Wood Planks", - paramtype2 = "facedir", - place_param2 = 0, - tiles = {"default_acacia_wood.png"}, - is_ground_content = false, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1}, - sounds = default.node_sound_wood_defaults(), -}) - -minetest.register_node("default:acacia_leaves", { - description = "Acacia Tree Leaves", - drawtype = "allfaces_optional", - tiles = {"default_acacia_leaves.png"}, - special_tiles = {"default_acacia_leaves_simple.png"}, - waving = 1, - paramtype = "light", - is_ground_content = false, - groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, - drop = { - max_items = 1, - items = { - {items = {"default:acacia_sapling"}, rarity = 20}, - {items = {"default:acacia_leaves"}} - } - }, - sounds = default.node_sound_leaves_defaults(), - - after_place_node = default.after_place_leaves, -}) - -minetest.register_node("default:acacia_sapling", { - description = "Acacia Tree Sapling", - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1 - {-0.125, -0.375, -0.1875, 0.1875, 0, 0.1875}, -- NodeBox2 - {0, -0.125, -0.0625, 0.1875, 0.125, 0.125}, -- NodeBox3 - } - }, - tiles = {"default_acacia_sapling_top.png", - "default_acacia_sapling_bottom.png", - "default_acacia_sapling_side.png", - "default_acacia_sapling_side.png", - "default_acacia_sapling_side.png", - "default_acacia_sapling_side.png" - }, - inventory_image = "default_acacia_sapling.png", - wield_image = "default_acacia_sapling.png", - paramtype = "light", - sunlight_propagates = true, - walkable = true, - on_timer = default.grow_sapling, - selection_box = { - type = "fixed", - fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} - }, - groups = {snappy = 2, dig_immediate = 3, flammable = 2, - attached_node = 1, sapling = 1}, - sounds = default.node_sound_leaves_defaults(), - - on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(300, 1500)) - end, - - on_place = function(itemstack, placer, pointed_thing) - itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, - "default:acacia_sapling", - -- minp, maxp to be checked, relative to sapling pos - -- minp_relative.y = 1 because sapling pos has been checked - {x = -4, y = 1, z = -4}, - {x = 4, y = 6, z = 4}, - -- maximum interval of interior volume check - 4) - - return itemstack - end, -}) - -minetest.register_node("default:aspen_tree", { - description = "Aspen Tree", - tiles = {"default_aspen_tree_top.png", "default_aspen_tree_top.png", - "default_aspen_tree.png"}, - paramtype2 = "facedir", - is_ground_content = false, - groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3}, - sounds = default.node_sound_wood_defaults(), - - on_place = minetest.rotate_node -}) - -minetest.register_node("default:aspen_wood", { - description = "Aspen Wood Planks", - paramtype2 = "facedir", - place_param2 = 0, - tiles = {"default_aspen_wood.png"}, - is_ground_content = false, - groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, - sounds = default.node_sound_wood_defaults(), -}) - -minetest.register_node("default:aspen_leaves", { - description = "Aspen Tree Leaves", - drawtype = "allfaces_optional", - tiles = {"default_aspen_leaves.png"}, - waving = 1, - paramtype = "light", - is_ground_content = false, - groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, - drop = { - max_items = 1, - items = { - {items = {"default:aspen_sapling"}, rarity = 20}, - {items = {"default:aspen_leaves"}} - } - }, - sounds = default.node_sound_leaves_defaults(), - - after_place_node = default.after_place_leaves, -}) - -minetest.register_node("default:aspen_sapling", { - description = "Aspen Tree Sapling", - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1 - {-0.125, -0.375, -0.1875, 0.1875, 0, 0.1875}, -- NodeBox2 - {0, -0.125, -0.0625, 0.1875, 0.125, 0.125}, -- NodeBox3 - } - }, - tiles = {"default_aspen_sapling_top.png", - "default_aspen_sapling_bottom.png", - "default_aspen_sapling_side.png", - "default_aspen_sapling_side.png", - "default_aspen_sapling_side.png", - "default_aspen_sapling_side.png" - }, - inventory_image = "default_aspen_sapling.png", - wield_image = "default_aspen_sapling.png", - paramtype = "light", - sunlight_propagates = true, - walkable = true, - on_timer = default.grow_sapling, - selection_box = { - type = "fixed", - fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 0.5, 3 / 16} - }, - groups = {snappy = 2, dig_immediate = 3, flammable = 3, - attached_node = 1, sapling = 1}, - sounds = default.node_sound_leaves_defaults(), - - on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(300, 1500)) - end, - - on_place = function(itemstack, placer, pointed_thing) - itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, - "default:aspen_sapling", - -- minp, maxp to be checked, relative to sapling pos - -- minp_relative.y = 1 because sapling pos has been checked - {x = -2, y = 1, z = -2}, - {x = 2, y = 12, z = 2}, - -- maximum interval of interior volume check - 4) - - return itemstack - end, -}) - --- --- Ores --- - -minetest.register_node("default:stone_with_coal", { - description = "Coal Ore", - tiles = {"default_stone.png^default_mineral_coal.png"}, - groups = {cracky = 3}, - drop = 'default:coal_lump', - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:coalblock", { - description = "Coal Block", - tiles = {"default_coal_block.png"}, - is_ground_content = false, - groups = {cracky = 3}, - sounds = default.node_sound_stone_defaults(), -}) - - -minetest.register_node("default:stone_with_iron", { - description = "Iron Ore", - tiles = {"default_stone.png^default_mineral_iron.png"}, - groups = {cracky = 2}, - drop = 'default:iron_lump', - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:steelblock", { - description = "Steel Block", - tiles = {"default_steel_block.png"}, - is_ground_content = false, - groups = {cracky = 1, level = 2}, - sounds = default.node_sound_metal_defaults(), -}) - - -minetest.register_node("default:stone_with_copper", { - description = "Copper Ore", - tiles = {"default_stone.png^default_mineral_copper.png"}, - groups = {cracky = 2}, - drop = 'default:copper_lump', - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:copperblock", { - description = "Copper Block", - tiles = {"default_copper_block.png"}, - is_ground_content = false, - groups = {cracky = 1, level = 2}, - sounds = default.node_sound_metal_defaults(), -}) - - -minetest.register_node("default:stone_with_tin", { - description = "Tin Ore", - tiles = {"default_stone.png^default_mineral_tin.png"}, - groups = {cracky = 2}, - drop = "default:tin_lump", - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:tinblock", { - description = "Tin Block", - tiles = {"default_tin_block.png"}, - is_ground_content = false, - groups = {cracky = 1, level = 2}, - sounds = default.node_sound_metal_defaults(), -}) - - -minetest.register_node("default:bronzeblock", { - description = "Bronze Block", - tiles = {"default_bronze_block.png"}, - is_ground_content = false, - groups = {cracky = 1, level = 2}, - sounds = default.node_sound_metal_defaults(), -}) - - -minetest.register_node("default:stone_with_mese", { - description = "Mese Ore", - tiles = {"default_stone.png^default_mineral_mese.png"}, - groups = {cracky = 1}, - drop = "default:mese_crystal", - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:mese", { - description = "Mese Block", - tiles = {"default_mese_block.png"}, - paramtype = "light", - groups = {cracky = 1, level = 2}, - sounds = default.node_sound_stone_defaults(), - light_source = 3, -}) - - -minetest.register_node("default:stone_with_gold", { - description = "Gold Ore", - tiles = {"default_stone.png^default_mineral_gold.png"}, - groups = {cracky = 2}, - drop = "default:gold_lump", - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:goldblock", { - description = "Gold Block", - tiles = {"default_gold_block.png"}, - is_ground_content = false, - groups = {cracky = 1}, - sounds = default.node_sound_metal_defaults(), -}) - - -minetest.register_node("default:stone_with_diamond", { - description = "Diamond Ore", - tiles = {"default_stone.png^default_mineral_diamond.png"}, - groups = {cracky = 1}, - drop = "default:diamond", - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:diamondblock", { - description = "Diamond Block", - tiles = {"default_diamond_block.png"}, - is_ground_content = false, - groups = {cracky = 1, level = 3}, - sounds = default.node_sound_stone_defaults(), -}) - --- --- Plantlife (non-cubic) --- - -minetest.register_node("default:cactus", { - description = "Cactus", - tiles = {"default_cactus_top.png", "default_cactus_top.png", - "default_cactus_side.png"}, - paramtype2 = "facedir", - groups = {choppy = 3}, - sounds = default.node_sound_wood_defaults(), - on_place = minetest.rotate_node, -}) - -minetest.register_node("default:papyrus", { - description = "Papyrus", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {0.1875, -0.5, 0.1875, 0.4375, 0.5, 0.4375}, -- NodeBox1 - {0.1875, -0.5, -0.4375, 0.4375, 0.5, -0.1875}, -- NodeBox2 - {-0.4375, -0.5, -0.4375, -0.1875, 0.5, -0.1875}, -- NodeBox3 - {-0.4375, -0.5, 0.1875, -0.1875, 0.5, 0.4375}, -- NodeBox4 - } - }, - tiles = {"default_papyrus.png"}, - inventory_image = "default_inv_papyrus.png", - wield_image = "default_inv_papyrus.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "fixed", - fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16}, - }, - groups = {snappy = 3, flammable = 2}, - sounds = default.node_sound_leaves_defaults(), - - after_dig_node = function(pos, node, metadata, digger) - default.dig_up(pos, node, digger) - end, -}) - -minetest.register_node("default:dry_shrub", { - description = "Dry Shrub", - drawtype = "plantlike", - waving = 1, - tiles = {"default_dry_shrub.png"}, - inventory_image = "default_dry_shrub.png", - wield_image = "default_dry_shrub.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - groups = {snappy = 3, flammable = 3, attached_node = 1}, - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 4 / 16, 5 / 16}, - }, -}) - -minetest.register_node("default:jungle_grass", { - description = "Jungle Grass", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.125, -0.5, -0.125, 0.125, 0.25, 0.125}, -- NodeBox18 - {0.125, 0.25, -0.125, 0.375, 0.5, 0.125}, -- NodeBox19 - {0.25, -0.5, 0.25, 0.5, -0.125, 0.5}, -- NodeBox20 - {-0.5, -0.5, 0.25, -0.25, -0.25, 0.5}, -- NodeBox21 - {0.25, -0.5, -0.5, 0.5, -0.1875, -0.25}, -- NodeBox22 - {-0.5, -0.5, -0.5, -0.25, -0.0625, -0.25}, -- NodeBox23 - } - }, - tiles = {"default_grass.png"}, - inventory_image = "default_jungle_grass.png", - wield_image = "default_jungle_grass.png", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1}, - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 1.19, 7 / 16}, - }, -}) - - -minetest.register_node("default:grass_1", { - description = "Grass", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.375, -0.5, 0.125, -0.125, -0.25, 0.375}, -- NodeBox9 - {0.125, -0.5, 0.125, 0.375, -0.25, 0.375}, -- NodeBox11 - {-0.375, -0.5, -0.375, -0.125, -0.25, -0.125}, -- NodeBox12 - } - }, - waving = 1, - tiles = {"default_grass.png"}, - -- Use texture of a taller grass stage in inventory - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - groups = {snappy = 3, flora = 1, attached_node = 1, grass = 1, flammable = 1}, - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -5 / 16, 6 / 16}, - }, -}) - -minetest.register_node("default:grass_2", { - description = "Grass", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.125, -0.5, -0.125, 0.125, -0.1875, 0.125}, -- NodeBox8 - {-0.375, -0.5, 0.125, -0.125, 0.0625, 0.375}, -- NodeBox9 - {0.125, -0.5, 0.125, 0.375, 0.0625, 0.375}, -- NodeBox11 - {-0.375, -0.5, -0.375, -0.125, 0.0625, -0.125}, -- NodeBox12 - {0.125, -0.5, -0.375, 0.375, 0.0625, -0.125}, -- NodeBox13 - } - }, - waving = 1, - tiles = {"default_grass.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "default:grass_2", - groups = {snappy = 3, flora = 1, attached_node = 1, - not_in_creative_inventory = 1, grass = 1, flammable = 1}, - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, - }, -}) - -minetest.register_node("default:grass_3", { - description = "Grass", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.125, -0.5, -0.125, 0.125, -0.1875, 0.125}, -- NodeBox8 - {-0.375, -0.5, 0.125, -0.125, 0.3125, 0.375}, -- NodeBox9 - {0.125, -0.5, 0.125, 0.375, 0.3125, 0.375}, -- NodeBox11 - {-0.375, -0.5, -0.375, -0.125, 0.3125, -0.125}, -- NodeBox12 - {0.125, -0.5, -0.375, 0.375, 0.3125, -0.125}, -- NodeBox13 - } - }, - waving = 1, - tiles = {"default_grass.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "default:grass_3", - groups = {snappy = 3, flora = 1, attached_node = 1, - not_in_creative_inventory = 1, grass = 1, flammable = 1}, - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, - }, -}) - -minetest.register_node("default:grass_4", { - description = "Grass", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {0.125, -0.5, 0.125, 0.4375, 0.5, 0.4375}, -- NodeBox1 - {0.125, -0.5, -0.4375, 0.4375, 0.5, -0.125}, -- NodeBox2 - {-0.4375, -0.5, -0.4375, -0.125, 0.5, -0.125}, -- NodeBox3 - {-0.4375, -0.5, 0.125, -0.125, 0.5, 0.4375}, -- NodeBox4 - {-0.125, -0.5, -0.125, 0.125, -0.0625, 0.125}, -- NodeBox7 - } - }, - waving = 1, - tiles = {"default_grass.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "default:grass_3", - groups = {snappy = 3, flora = 1, attached_node = 1, - not_in_creative_inventory = 1, grass = 1, flammable = 1}, - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, - }, -}) - -minetest.register_node("default:grass_5", { - description = "Grass", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {0.125, -0.5, 0.125, 0.4375, 0.5, 0.4375}, -- NodeBox1 - {0.125, -0.5, -0.4375, 0.4375, 0.5, -0.125}, -- NodeBox2 - {-0.4375, -0.5, -0.4375, -0.125, 0.5, -0.125}, -- NodeBox3 - {-0.4375, -0.5, 0.125, -0.125, 0.5, 0.4375}, -- NodeBox4 - {-0.125, -0.5, -0.125, 0.125, 0.125, 0.125}, -- NodeBox7 - } - }, - waving = 1, - tiles = {"default_grass.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "default:grass_3", - groups = {snappy = 3, flora = 1, attached_node = 1, - not_in_creative_inventory = 1, grass = 1, flammable = 1}, - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, - }, -}) - -minetest.register_node("default:dry_grass_1", { - description = "Dry Grass", - drawtype = "plantlike", - waving = 1, - tiles = {"default_dry_grass_1.png"}, - inventory_image = "default_dry_grass_3.png", - wield_image = "default_dry_grass_3.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - groups = {snappy = 3, flammable = 3, flora = 1, - attached_node = 1, dry_grass = 1}, - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, - }, - - on_place = function(itemstack, placer, pointed_thing) - -- place a random dry grass node - local stack = ItemStack("default:dry_grass_" .. math.random(1, 5)) - local ret = minetest.item_place(stack, placer, pointed_thing) - return ItemStack("default:dry_grass_1 " .. - itemstack:get_count() - (1 - ret:get_count())) - end, -}) - -for i = 2, 5 do - minetest.register_node("default:dry_grass_" .. i, { - description = "Dry Grass", - drawtype = "plantlike", - waving = 1, - tiles = {"default_dry_grass_" .. i .. ".png"}, - inventory_image = "default_dry_grass_" .. i .. ".png", - wield_image = "default_dry_grass_" .. i .. ".png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - groups = {snappy = 3, flammable = 3, flora = 1, attached_node = 1, - not_in_creative_inventory=1, dry_grass = 1}, - drop = "default:dry_grass_1", - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -1 / 16, 6 / 16}, - }, - }) -end - - -minetest.register_node("default:bush_stem", { - description = "Bush Stem", - drawtype = "plantlike", - visual_scale = 1.41, - tiles = {"default_bush_stem.png"}, - inventory_image = "default_bush_stem.png", - wield_image = "default_bush_stem.png", - paramtype = "light", - sunlight_propagates = true, - groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, - sounds = default.node_sound_wood_defaults(), - selection_box = { - type = "fixed", - fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 0.5, 7 / 16}, - }, -}) - -minetest.register_node("default:bush_leaves", { - description = "Bush Leaves", - drawtype = "allfaces_optional", - waving = 1, - tiles = {"default_leaves_simple.png"}, - paramtype = "light", - groups = {snappy = 3, flammable = 2, leaves = 1}, - drop = { - max_items = 1, - items = { - {items = {"default:bush_sapling"}, rarity = 5}, - {items = {"default:bush_leaves"}} - } - }, - sounds = default.node_sound_leaves_defaults(), - - after_place_node = default.after_place_leaves, -}) - -minetest.register_node("default:bush_sapling", { - description = "Bush Sapling", - drawtype = "plantlike", - tiles = {"default_bush_sapling.png"}, - inventory_image = "default_bush_sapling.png", - wield_image = "default_bush_sapling.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - on_timer = default.grow_sapling, - selection_box = { - type = "fixed", - fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16} - }, - groups = {snappy = 2, dig_immediate = 3, flammable = 2, - attached_node = 1, sapling = 1}, - sounds = default.node_sound_leaves_defaults(), - - on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(300, 1500)) - end, - - on_place = function(itemstack, placer, pointed_thing) - itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, - "default:bush_sapling", - -- minp, maxp to be checked, relative to sapling pos - {x = -1, y = 0, z = -1}, - {x = 1, y = 1, z = 1}, - -- maximum interval of interior volume check - 2) - - return itemstack - end, -}) - -minetest.register_node("default:acacia_bush_stem", { - description = "Acacia Bush Stem", - drawtype = "plantlike", - visual_scale = 1.41, - tiles = {"default_acacia_bush_stem.png"}, - inventory_image = "default_acacia_bush_stem.png", - wield_image = "default_acacia_bush_stem.png", - paramtype = "light", - sunlight_propagates = true, - groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, - sounds = default.node_sound_wood_defaults(), - selection_box = { - type = "fixed", - fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 0.5, 7 / 16}, - }, -}) - -minetest.register_node("default:acacia_bush_leaves", { - description = "Acacia Bush Leaves", - drawtype = "allfaces_optional", - waving = 1, - tiles = {"default_acacia_leaves_simple.png"}, - paramtype = "light", - groups = {snappy = 3, flammable = 2, leaves = 1}, - drop = { - max_items = 1, - items = { - {items = {"default:acacia_bush_sapling"}, rarity = 5}, - {items = {"default:acacia_bush_leaves"}} - } - }, - sounds = default.node_sound_leaves_defaults(), - - after_place_node = default.after_place_leaves, -}) - -minetest.register_node("default:acacia_bush_sapling", { - description = "Acacia Bush Sapling", - drawtype = "plantlike", - tiles = {"default_acacia_bush_sapling.png"}, - inventory_image = "default_acacia_bush_sapling.png", - wield_image = "default_acacia_bush_sapling.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - on_timer = default.grow_sapling, - selection_box = { - type = "fixed", - fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 2 / 16, 3 / 16} - }, - groups = {snappy = 2, dig_immediate = 3, flammable = 2, - attached_node = 1, sapling = 1}, - sounds = default.node_sound_leaves_defaults(), - - on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(300, 1500)) - end, - - on_place = function(itemstack, placer, pointed_thing) - itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, - "default:acacia_bush_sapling", - -- minp, maxp to be checked, relative to sapling pos - {x = -1, y = 0, z = -1}, - {x = 1, y = 1, z = 1}, - -- maximum interval of interior volume check - 2) - - return itemstack - end, -}) - - --- --- Corals --- - -minetest.register_node("default:coral_brown", { - description = "Brown Coral", - tiles = {"default_coral_brown.png"}, - groups = {cracky = 3}, - drop = "default:coral_skeleton", - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:coral_orange", { - description = "Orange Coral", - tiles = {"default_coral_orange.png"}, - groups = {cracky = 3}, - drop = "default:coral_skeleton", - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:coral_skeleton", { - description = "Coral Skeleton", - tiles = {"default_coral_skeleton.png"}, - groups = {cracky = 3}, - sounds = default.node_sound_stone_defaults(), -}) - - --- --- Liquids --- - -minetest.register_node("default:water_source", { - description = "Water Source", - drawtype = "liquid", - tiles = { - { - name = "default_water_source_animated.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 2.0, - }, - }, - }, - special_tiles = { - -- New-style water source material (mostly unused) - { - name = "default_water_source_animated.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 2.0, - }, - backface_culling = false, - }, - }, - alpha = 160, - paramtype = "light", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - is_ground_content = false, - drop = "", - drowning = 1, - liquidtype = "source", - liquid_alternative_flowing = "default:water_flowing", - liquid_alternative_source = "default:water_source", - liquid_viscosity = 1, - post_effect_color = {a = 103, r = 30, g = 60, b = 90}, - groups = {water = 3, liquid = 3, puts_out_fire = 1, cools_lava = 1}, - sounds = default.node_sound_water_defaults(), -}) - -minetest.register_node("default:water_flowing", { - description = "Flowing Water", - drawtype = "flowingliquid", - tiles = {"default_water.png"}, - special_tiles = { - { - name = "default_water_flowing_animated.png", - backface_culling = false, - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 0.8, - }, - }, - { - name = "default_water_flowing_animated.png", - backface_culling = true, - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 0.8, - }, - }, - }, - alpha = 160, - paramtype = "light", - paramtype2 = "flowingliquid", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - is_ground_content = false, - drop = "", - drowning = 1, - liquidtype = "flowing", - liquid_alternative_flowing = "default:water_flowing", - liquid_alternative_source = "default:water_source", - liquid_viscosity = 1, - post_effect_color = {a = 103, r = 30, g = 60, b = 90}, - groups = {water = 3, liquid = 3, puts_out_fire = 1, - not_in_creative_inventory = 1, cools_lava = 1}, - sounds = default.node_sound_water_defaults(), -}) - - -minetest.register_node("default:river_water_source", { - description = "River Water Source", - drawtype = "liquid", - tiles = { - { - name = "default_river_water_source_animated.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 2.0, - }, - }, - }, - special_tiles = { - { - name = "default_river_water_source_animated.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 2.0, - }, - backface_culling = false, - }, - }, - alpha = 160, - paramtype = "light", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - is_ground_content = false, - drop = "", - drowning = 1, - liquidtype = "source", - liquid_alternative_flowing = "default:river_water_flowing", - liquid_alternative_source = "default:river_water_source", - liquid_viscosity = 1, - liquid_renewable = false, - liquid_range = 2, - post_effect_color = {a = 103, r = 30, g = 76, b = 90}, - groups = {water = 3, liquid = 3, puts_out_fire = 1, cools_lava = 1}, - sounds = default.node_sound_water_defaults(), -}) - -minetest.register_node("default:river_water_flowing", { - description = "Flowing River Water", - drawtype = "flowingliquid", - tiles = {"default_river_water.png"}, - special_tiles = { - { - name = "default_river_water_flowing_animated.png", - backface_culling = false, - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 0.8, - }, - }, - { - name = "default_river_water_flowing_animated.png", - backface_culling = true, - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 0.8, - }, - }, - }, - alpha = 160, - paramtype = "light", - paramtype2 = "flowingliquid", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - is_ground_content = false, - drop = "", - drowning = 1, - liquidtype = "flowing", - liquid_alternative_flowing = "default:river_water_flowing", - liquid_alternative_source = "default:river_water_source", - liquid_viscosity = 1, - liquid_renewable = false, - liquid_range = 2, - post_effect_color = {a = 103, r = 30, g = 76, b = 90}, - groups = {water = 3, liquid = 3, puts_out_fire = 1, - not_in_creative_inventory = 1, cools_lava = 1}, - sounds = default.node_sound_water_defaults(), -}) - - -minetest.register_node("default:lava_source", { - description = "Lava Source", - drawtype = "liquid", - tiles = { - { - name = "default_lava_source_animated.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 3.0, - }, - }, - }, - special_tiles = { - -- New-style lava source material (mostly unused) - { - name = "default_lava_source_animated.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 3.0, - }, - backface_culling = false, - }, - }, - paramtype = "light", - light_source = default.LIGHT_MAX - 1, - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - is_ground_content = false, - drop = "", - drowning = 1, - liquidtype = "source", - liquid_alternative_flowing = "default:lava_flowing", - liquid_alternative_source = "default:lava_source", - liquid_viscosity = 7, - liquid_renewable = true, - damage_per_second = 4 * 2, - post_effect_color = {a = 191, r = 255, g = 64, b = 0}, - groups = {lava = 3, liquid = 2, igniter = 1}, -}) - -minetest.register_node("default:lava_flowing", { - description = "Flowing Lava", - drawtype = "flowingliquid", - tiles = {"default_lava.png"}, - special_tiles = { - { - name = "default_lava_flowing_animated.png", - backface_culling = false, - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 3.3, - }, - }, - { - name = "default_lava_flowing_animated.png", - backface_culling = true, - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 3.3, - }, - }, - }, - paramtype = "light", - paramtype2 = "flowingliquid", - light_source = default.LIGHT_MAX - 1, - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - is_ground_content = false, - drop = "", - drowning = 1, - liquidtype = "flowing", - liquid_alternative_flowing = "default:lava_flowing", - liquid_alternative_source = "default:lava_source", - liquid_viscosity = 7, - liquid_renewable = true, - damage_per_second = 4 * 2, - post_effect_color = {a = 191, r = 255, g = 64, b = 0}, - groups = {lava = 3, liquid = 2, igniter = 1, - not_in_creative_inventory = 1}, -}) - --- --- Tools / "Advanced" crafting / Non-"natural" --- - -function default.get_chest_formspec(pos) - local spos = pos.x .. "," .. pos.y .. "," .. pos.z - local formspec = - "size[8,9]" .. - default.gui_bg .. - default.gui_bg_img .. - default.gui_slots .. - "list[nodemeta:" .. spos .. ";main;0,0.3;8,4;]" .. - "list[current_player;main;0,4.85;8,1;]" .. - "list[current_player;main;0,6.08;8,3;8]" .. - "listring[nodemeta:" .. spos .. ";main]" .. - "listring[current_player;main]" .. - default.get_hotbar_bg(0,4.85) - return formspec -end - -local function chest_lid_obstructed(pos) - local above = {x = pos.x, y = pos.y + 1, z = pos.z} - local def = minetest.registered_nodes[minetest.get_node(above).name] - -- allow ladders, signs, wallmounted things and torches to not obstruct - if def and - (def.drawtype == "airlike" or - def.drawtype == "signlike" or - def.drawtype == "torchlike" or - (def.drawtype == "nodebox" and def.paramtype2 == "wallmounted")) then - return false - end - return true -end - -local open_chests = {} - -minetest.register_on_player_receive_fields(function(player, formname, fields) - if formname ~= "default:chest" then - return - end - if not player or not fields.quit then - return - end - local pn = player:get_player_name() - - if not open_chests[pn] then - return - end - - local pos = open_chests[pn].pos - local sound = open_chests[pn].sound - local swap = open_chests[pn].swap - local node = minetest.get_node(pos) - - open_chests[pn] = nil - for k, v in pairs(open_chests) do - if v.pos.x == pos.x and v.pos.y == pos.y and v.pos.z == pos.z then - return true - end - end - minetest.after(0.2, minetest.swap_node, pos, { name = "default:" .. swap, - param2 = node.param2 }) - minetest.sound_play(sound, {gain = 0.3, pos = pos, max_hear_distance = 10}) - return true -end) - -function default.register_chest(name, d) - local def = table.copy(d) - def.drawtype = "mesh" - def.visual = "mesh" - def.paramtype = "light" - def.paramtype2 = "facedir" - def.legacy_facedir_simple = true - def.is_ground_content = false - - if def.protected then - def.on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", "Locked Chest") - meta:set_string("owner", "") - local inv = meta:get_inventory() - inv:set_size("main", 8*4) - end - def.after_place_node = function(pos, placer) - local meta = minetest.get_meta(pos) - meta:set_string("owner", placer:get_player_name() or "") - meta:set_string("infotext", "Locked Chest (owned by " .. - meta:get_string("owner") .. ")") - end - def.can_dig = function(pos,player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - return inv:is_empty("main") and - default.can_interact_with_node(player, pos) - end - def.allow_metadata_inventory_move = function(pos, from_list, from_index, - to_list, to_index, count, player) - if not default.can_interact_with_node(player, pos) then - return 0 - end - return count - end - def.allow_metadata_inventory_put = function(pos, listname, index, stack, player) - if not default.can_interact_with_node(player, pos) then - return 0 - end - return stack:get_count() - end - def.allow_metadata_inventory_take = function(pos, listname, index, stack, player) - if not default.can_interact_with_node(player, pos) then - return 0 - end - return stack:get_count() - end - def.on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - if not default.can_interact_with_node(clicker, pos) then - return itemstack - end - - minetest.sound_play(def.sound_open, {gain = 0.3, - pos = pos, max_hear_distance = 10}) - if not chest_lid_obstructed(pos) then - minetest.swap_node(pos, - { name = "default:" .. name .. "_open", - param2 = node.param2 }) - end - minetest.after(0.2, minetest.show_formspec, - clicker:get_player_name(), - "default:chest", default.get_chest_formspec(pos)) - open_chests[clicker:get_player_name()] = { pos = pos, - sound = def.sound_close, swap = name } - end - def.on_blast = function() end - def.on_key_use = function(pos, player) - local secret = minetest.get_meta(pos):get_string("key_lock_secret") - local itemstack = player:get_wielded_item() - local key_meta = itemstack:get_meta() - - if key_meta:get_string("secret") == "" then - key_meta:set_string("secret", minetest.parse_json(itemstack:get_metadata()).secret) - itemstack:set_metadata("") - end - - if secret ~= key_meta:get_string("secret") then - return - end - - minetest.show_formspec( - player:get_player_name(), - "default:chest_locked", - default.get_chest_formspec(pos) - ) - end - def.on_skeleton_key_use = function(pos, player, newsecret) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - local pn = player:get_player_name() - - -- verify placer is owner of lockable chest - if owner ~= pn then - minetest.record_protection_violation(pos, pn) - minetest.chat_send_player(pn, "You do not own this chest.") - return nil - end - - local secret = meta:get_string("key_lock_secret") - if secret == "" then - secret = newsecret - meta:set_string("key_lock_secret", secret) - end - - return secret, "a locked chest", owner - end - else - def.on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", "Chest") - local inv = meta:get_inventory() - inv:set_size("main", 8*4) - end - def.can_dig = function(pos,player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - return inv:is_empty("main") - end - def.on_rightclick = function(pos, node, clicker) - minetest.sound_play(def.sound_open, {gain = 0.3, pos = pos, - max_hear_distance = 10}) - if not chest_lid_obstructed(pos) then - minetest.swap_node(pos, { - name = "default:" .. name .. "_open", - param2 = node.param2 }) - end - minetest.after(0.2, minetest.show_formspec, - clicker:get_player_name(), - "default:chest", default.get_chest_formspec(pos)) - open_chests[clicker:get_player_name()] = { pos = pos, - sound = def.sound_close, swap = name } - end - end - - def.on_metadata_inventory_move = function(pos, from_list, from_index, - to_list, to_index, count, player) - minetest.log("action", player:get_player_name() .. - " moves stuff in chest at " .. minetest.pos_to_string(pos)) - end - def.on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name() .. - " moves " .. stack:get_name() .. - " to chest at " .. minetest.pos_to_string(pos)) - end - def.on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name() .. - " takes " .. stack:get_name() .. - " from chest at " .. minetest.pos_to_string(pos)) - end - def.on_blast = function(pos) - local drops = {} - default.get_inventory_drops(pos, "main", drops) - drops[#drops+1] = "default:chest" - minetest.remove_node(pos) - return drops - end - - local def_opened = table.copy(def) - local def_closed = table.copy(def) - - def_opened.mesh = "chest_open.obj" - for i = 1, #def_opened.tiles do - if type(def_opened.tiles[i]) == "string" then - def_opened.tiles[i] = {name = def_opened.tiles[i], backface_culling = true} - elseif def_opened.tiles[i].backface_culling == nil then - def_opened.tiles[i].backface_culling = true - end - end - def_opened.drop = "default:" .. name - def_opened.groups.not_in_creative_inventory = 1 - def_opened.selection_box = { - type = "fixed", - fixed = { -1/2, -1/2, -1/2, 1/2, 3/16, 1/2 }, - } - def_opened.can_dig = function() - return false - end - - def_closed.mesh = nil - def_closed.drawtype = nil - def_closed.tiles[6] = def.tiles[5] -- swap textures around for "normal" - def_closed.tiles[5] = def.tiles[3] -- drawtype to make them match the mesh - def_closed.tiles[3] = def.tiles[3].."^[transformFX" - - minetest.register_node("default:" .. name, def_closed) - minetest.register_node("default:" .. name .. "_open", def_opened) - - -- convert old chests to this new variant - minetest.register_lbm({ - label = "update chests to opening chests", - name = "default:upgrade_" .. name .. "_v2", - nodenames = {"default:" .. name}, - action = function(pos, node) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", nil) - local inv = meta:get_inventory() - local list = inv:get_list("default:chest") - if list then - inv:set_size("main", 8*4) - inv:set_list("main", list) - inv:set_list("default:chest", nil) - end - end - }) -end - - -default.register_chest("chest", { - description = "Chest", - tiles = { - "default_chest_top.png", - "default_chest_top.png", - "default_chest_side.png", - "default_chest_side.png", - "default_chest_front.png", - "default_chest_inside.png" - }, - sounds = default.node_sound_wood_defaults(), - sound_open = "default_chest_open", - sound_close = "default_chest_close", - groups = {choppy = 2, oddly_breakable_by_hand = 2}, -}) - -default.register_chest("chest_locked", { - description = "Locked Chest", - tiles = { - "default_chest_top.png", - "default_chest_top.png", - "default_chest_side.png", - "default_chest_side.png", - "default_chest_lock.png", - "default_chest_inside.png" - }, - sounds = default.node_sound_wood_defaults(), - sound_open = "default_chest_open", - sound_close = "default_chest_close", - groups = {choppy = 2, oddly_breakable_by_hand = 2}, - protected = true, -}) - -local bookshelf_formspec = - "size[8,7;]" .. - default.gui_bg .. - default.gui_bg_img .. - default.gui_slots .. - "list[context;books;0,0.3;8,2;]" .. - "list[current_player;main;0,2.85;8,1;]" .. - "list[current_player;main;0,4.08;8,3;8]" .. - "listring[context;books]" .. - "listring[current_player;main]" .. - default.get_hotbar_bg(0,2.85) - -local function get_bookshelf_formspec(inv) - local formspec = bookshelf_formspec - local invlist = inv and inv:get_list("books") - -- Inventory slots overlay - local bx, by = 0, 0.3 - for i = 1, 16 do - if i == 9 then - bx = 0 - by = by + 1 - end - if not invlist or invlist[i]:is_empty() then - formspec = formspec .. - "image[" .. bx .. "," .. by .. ";1,1;default_bookshelf_slot.png]" - end - bx = bx + 1 - end - return formspec -end - -minetest.register_node("default:bookshelf", { - description = "Bookshelf", - tiles = {"default_wood.png", "default_wood.png", "default_wood.png", - "default_wood.png", "default_bookshelf.png", "default_bookshelf.png"}, - paramtype2 = "facedir", - is_ground_content = false, - groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, - sounds = default.node_sound_wood_defaults(), - - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", get_bookshelf_formspec(nil)) - local inv = meta:get_inventory() - inv:set_size("books", 8 * 2) - end, - can_dig = function(pos,player) - local inv = minetest.get_meta(pos):get_inventory() - return inv:is_empty("books") - end, - allow_metadata_inventory_put = function(pos, listname, index, stack) - if minetest.get_item_group(stack:get_name(), "book") ~= 0 then - return stack:get_count() - end - return 0 - end, - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name() .. - " moves stuff in bookshelf at " .. minetest.pos_to_string(pos)) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", get_bookshelf_formspec(meta:get_inventory())) - end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name() .. - " moves stuff to bookshelf at " .. minetest.pos_to_string(pos)) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", get_bookshelf_formspec(meta:get_inventory())) - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name() .. - " takes stuff from bookshelf at " .. minetest.pos_to_string(pos)) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", get_bookshelf_formspec(meta:get_inventory())) - end, - on_blast = function(pos) - local drops = {} - default.get_inventory_drops(pos, "books", drops) - drops[#drops+1] = "default:bookshelf" - minetest.remove_node(pos) - return drops - end, -}) - -torch_box = { - type = "wallmounted", - wall_top = {-0.5/3, -0.5/3, -0.5/3, 0.5/3, 1.5/3, 0.5/3}, - wall_bottom = {-0.5/3, -1.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3}, - wall_side = {-1.5/3, -0.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3}, -} - -minetest.register_node("default:torch", { - drawtype = "nodebox", - description = "Torch", - tiles = {"default_torch.png"}, - inventory_image = "default_torch_inventory.png", - wield_image = "default_torch_inventory.png", - paramtype = "light", - paramtype2 = "wallmounted", - legacy_wallmounted = true, - sunlight_propagates = true, - walkable = false, - light_source = default.LIGHT_MAX-2, - node_box = torch_box, - groups = {attached_node=1, dig_immediate=3,not_in_creative_inventory=1}, - drop='"default:torch" 1', - sounds = default.node_sound_wood_defaults(), --- on_construct = function(pos) --- local tmr = minetest.env:get_node_timer(pos) --- tmr:start(torch_time) --- end, --- on_rightclick = function(pos, node) --- local tmr = minetest.env:get_node_timer(pos) --- local meta = minetest.get_meta(pos) --- local proc = math.floor(tmr:get_elapsed()/(torch_time/100)) --- meta:set_string("infotext", proc.."%") --- end, --- on_timer = function(pos,elapsed) --- local node = minetest.get_node(pos) --- minetest.set_node(pos, {name="default:torch_out", param2 = node.param2}) --- end, -}) - -local function register_sign(material, desc, def) - minetest.register_node("default:sign_wall_" .. material, { - description = desc .. " Sign", - drawtype = "nodebox", - tiles = {"default_sign_wall_" .. material .. ".png"}, - inventory_image = "default_sign_" .. material .. ".png", - wield_image = "default_sign_" .. material .. ".png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - is_ground_content = false, - walkable = false, - node_box = { - type = "wallmounted", - wall_top = {-0.4375, 0.4375, -0.3125, 0.4375, 0.5, 0.3125}, - wall_bottom = {-0.4375, -0.5, -0.3125, 0.4375, -0.4375, 0.3125}, - wall_side = {-0.5, -0.3125, -0.4375, -0.4375, 0.3125, 0.4375}, - }, - groups = def.groups, - legacy_wallmounted = true, - sounds = def.sounds, - - on_construct = function(pos) - --local n = minetest.get_node(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", "field[text;;${text}]") - end, - on_receive_fields = function(pos, formname, fields, sender) - --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields)) - local player_name = sender:get_player_name() - if minetest.is_protected(pos, player_name) then - minetest.record_protection_violation(pos, player_name) - return - end - local meta = minetest.get_meta(pos) - if not fields.text then return end - minetest.log("action", (player_name or "") .. " wrote \"" .. - fields.text .. "\" to sign at " .. minetest.pos_to_string(pos)) - meta:set_string("text", fields.text) - meta:set_string("infotext", '"' .. fields.text .. '"') - end, - }) -end - -register_sign("wood", "Wooden", { - sounds = default.node_sound_wood_defaults(), - groups = {choppy = 2, attached_node = 1, flammable = 2, oddly_breakable_by_hand = 3} -}) - -register_sign("steel", "Steel", { - sounds = default.node_sound_metal_defaults(), - groups = {cracky = 2, attached_node = 1} -}) - -minetest.register_node("default:ladder_wood", { - description = "Wooden Ladder", - drawtype = "signlike", - tiles = {"default_ladder_wood.png"}, - inventory_image = "default_ladder_wood.png", - wield_image = "default_ladder_wood.png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - walkable = false, - climbable = true, - is_ground_content = false, - selection_box = { - type = "wallmounted", - --wall_top = = - --wall_bottom = = - --wall_side = = - }, - groups = {choppy = 2, oddly_breakable_by_hand = 3, flammable = 2}, - legacy_wallmounted = true, - sounds = default.node_sound_wood_defaults(), -}) - -minetest.register_node("default:ladder_steel", { - description = "Steel Ladder", - drawtype = "signlike", - tiles = {"default_ladder_steel.png"}, - inventory_image = "default_ladder_steel.png", - wield_image = "default_ladder_steel.png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - walkable = false, - climbable = true, - is_ground_content = false, - selection_box = { - type = "wallmounted", - --wall_top = = - --wall_bottom = = - --wall_side = = - }, - groups = {cracky = 2}, - sounds = default.node_sound_metal_defaults(), -}) - -default.register_fence("default:fence_wood", { - description = "Apple Wood Fence", - texture = "default_fence_wood.png", - inventory_image = "default_fence_overlay.png^default_wood.png^default_fence_overlay.png^[makealpha:255,126,126", - wield_image = "default_fence_overlay.png^default_wood.png^default_fence_overlay.png^[makealpha:255,126,126", - material = "default:wood", - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, - sounds = default.node_sound_wood_defaults() -}) - -default.register_fence("default:fence_acacia_wood", { - description = "Acacia Wood Fence", - texture = "default_fence_acacia_wood.png", - inventory_image = "default_fence_overlay.png^default_acacia_wood.png^default_fence_overlay.png^[makealpha:255,126,126", - wield_image = "default_fence_overlay.png^default_acacia_wood.png^default_fence_overlay.png^[makealpha:255,126,126", - material = "default:acacia_wood", - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, - sounds = default.node_sound_wood_defaults() -}) - -default.register_fence("default:fence_jungle_wood", { - description = "Jungle Wood Fence", - texture = "default_fence_jungle_wood.png", - inventory_image = "default_fence_overlay.png^default_jungle_wood.png^default_fence_overlay.png^[makealpha:255,126,126", - wield_image = "default_fence_overlay.png^default_jungle_wood.png^default_fence_overlay.png^[makealpha:255,126,126", - material = "default:jungle_wood", - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, - sounds = default.node_sound_wood_defaults() -}) - -default.register_fence("default:fence_pine_wood", { - description = "Pine Wood Fence", - texture = "default_fence_pine_wood.png", - inventory_image = "default_fence_overlay.png^default_pine_wood.png^default_fence_overlay.png^[makealpha:255,126,126", - wield_image = "default_fence_overlay.png^default_pine_wood.png^default_fence_overlay.png^[makealpha:255,126,126", - material = "default:pine_wood", - groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, - sounds = default.node_sound_wood_defaults() -}) - -default.register_fence("default:fence_aspen_wood", { - description = "Aspen Wood Fence", - texture = "default_fence_aspen_wood.png", - inventory_image = "default_fence_overlay.png^default_aspen_wood.png^default_fence_overlay.png^[makealpha:255,126,126", - wield_image = "default_fence_overlay.png^default_aspen_wood.png^default_fence_overlay.png^[makealpha:255,126,126", - material = "default:aspen_wood", - groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, - sounds = default.node_sound_wood_defaults() -}) - -minetest.register_node("default:glass", { - description = "Glass", - drawtype = "glasslike_framed_optional", - tiles = {"default_glass.png", "default_glass_detail.png"}, - paramtype = "light", - -- paramtype2 = "glasslikeliquidlevel", - sunlight_propagates = true, - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 3}, - sounds = default.node_sound_glass_defaults(), -}) - -minetest.register_node("default:obsidian_glass", { - description = "Obsidian Glass", - drawtype = "glasslike_framed_optional", - tiles = {"default_obsidian_glass.png", "default_obsidian_glass_detail.png"}, - paramtype = "light", - paramtype2 = "glasslikeliquidlevel", - is_ground_content = false, - sunlight_propagates = true, - sounds = default.node_sound_glass_defaults(), - groups = {cracky = 3}, -}) - - -minetest.register_node("default:brick", { - description = "Brick Block", - paramtype2 = "facedir", - place_param2 = 0, - tiles = {"default_brick.png"}, - is_ground_content = false, - groups = {cracky = 3}, - sounds = default.node_sound_stone_defaults(), -}) - - -minetest.register_node("default:meselamp", { - description = "Mese Lamp", - drawtype = "glasslike", - tiles = {"default_meselamp.png"}, - paramtype = "light", - sunlight_propagates = true, - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 3}, - sounds = default.node_sound_glass_defaults(), - light_source = default.LIGHT_MAX, -}) - -minetest.register_node("default:mese_post_light", { - description = "Mese Post Light", - tiles = {"default_mese_post_light_top.png", "default_mese_post_light_top.png", - "default_mese_post_light_side_dark.png", "default_mese_post_light_side_dark.png", - "default_mese_post_light_side.png", "default_mese_post_light_side.png"}, - wield_image = "default_mese_post_light_side.png", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-2 / 16, -8 / 16, -2 / 16, 2 / 16, 8 / 16, 2 / 16}, - }, - }, - paramtype = "light", - light_source = default.LIGHT_MAX, - sunlight_propagates = true, - is_ground_content = false, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, - sounds = default.node_sound_wood_defaults(), -}) - --- --- Misc --- - -minetest.register_node("default:cloud", { - description = "Cloud", - tiles = {"default_cloud.png"}, - is_ground_content = false, - sounds = default.node_sound_defaults(), - groups = {not_in_creative_inventory = 1}, -}) - --- --- register trees for leafdecay --- - -if minetest.get_mapgen_setting("mg_name") == "v6" then - default.register_leafdecay({ - trunks = {"default:tree"}, - leaves = {"default:apple", "default:leaves"}, - radius = 2, - }) - - default.register_leafdecay({ - trunks = {"default:jungle_tree"}, - leaves = {"default:jungle_leaves"}, - radius = 3, - }) - - default.register_leafdecay({ - trunks = {"default:pine_tree"}, - leaves = {"default:pine_needles"}, - radius = 3, - }) -else - default.register_leafdecay({ - trunks = {"default:tree"}, - leaves = {"default:apple", "default:leaves"}, - radius = 3, - }) - - default.register_leafdecay({ - trunks = {"default:jungle_tree"}, - leaves = {"default:jungle_leaves"}, - radius = 2, - }) - - default.register_leafdecay({ - trunks = {"default:pine_tree"}, - leaves = {"default:pine_needles"}, - radius = 2, - }) -end - -default.register_leafdecay({ - trunks = {"default:acacia_tree"}, - leaves = {"default:acacia_leaves"}, - radius = 2, -}) - -default.register_leafdecay({ - trunks = {"default:aspen_tree"}, - leaves = {"default:aspen_leaves"}, - radius = 3, -}) - -default.register_leafdecay({ - trunks = {"default:bush_stem"}, - leaves = {"default:bush_leaves"}, - radius = 1, -}) - -default.register_leafdecay({ - trunks = {"default:acacia_bush_stem"}, - leaves = {"default:acacia_bush_leaves"}, - radius = 1, -}) - -minetest.register_alias("default:jungleleaves", "default:jungle_leaves") -minetest.register_alias("default:junglewood", "default:jungle_wood") -minetest.register_alias("default:junglesapling", "default:jungle_sapling") -minetest.register_alias("default:jungletree", "default:jungle_tree") -minetest.register_alias("default:junglegrass", "default:jungle_grass") - -minetest.register_alias("default:fence_junglewood", "default:fence_jungle_wood") diff --git a/mods/default.diff/nodes.lua.diff b/mods/default.diff/nodes.lua.diff deleted file mode 100644 index bc1a3fe..0000000 --- a/mods/default.diff/nodes.lua.diff +++ /dev/null @@ -1,610 +0,0 @@ -78,81c78,81 -< default:jungletree -< default:junglewood -< default:jungleleaves -< default:junglesapling ---- -> default:jungle_tree -> default:jungle_wood -> default:jungle_leaves -> default:jungle_sapling -131c131 -< default:junglegrass ---- -> default:jungle_grass -188c188 -< default:fence_junglewood ---- -> default:fence_jungle_wood -572c572 -< description = "Tree", ---- -> description = "Apple Tree", -583c583 -< description = "Wooden Planks", ---- -> description = "Apple Wood Planks", -593,595c593,610 -< description = "Sapling", -< drawtype = "plantlike", -< tiles = {"default_sapling.png"}, ---- -> description = "Apple Tree Sapling", -> drawtype = "nodebox", -> paramtype = "light", -> node_box = { -> type = "fixed", -> fixed = { -> {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1 -> {-0.125, -0.375, -0.1875, 0.1875, 0, 0.1875}, -- NodeBox2 -> {0, -0.125, -0.0625, 0.1875, 0.125, 0.125}, -- NodeBox3 -> } -> }, -> tiles = {"default_sapling_top.png", -> "default_sapling_bottom.png", -> "default_sapling_side.png", -> "default_sapling_side.png", -> "default_sapling_side.png", -> "default_sapling_side.png" -> }, -600c615 -< walkable = false, ---- -> walkable = true, -611c626 -< minetest.get_node_timer(pos):start(math.random(2400,4800)) ---- -> minetest.get_node_timer(pos):start(math.random(300, 1500)) -629c644 -< description = "Leaves", ---- -> description = "Apple Tree Leaves", -659c674,681 -< drawtype = "plantlike", ---- -> drawtype = "nodebox", -> node_box = { -> type = "fixed", -> fixed = { -> {-0.25, -0.5, -0.25, 0.25, 0.0625, 0.25}, -- NodeBox1 -> {-0.0625, 0.0625, -0.0625, 0.0625, 0.25, 0.0625}, -- NodeBox2 -> } -> }, -683c705 -< minetest.register_node("default:jungletree", { ---- -> minetest.register_node("default:jungle_tree", { -685,686c707,708 -< tiles = {"default_jungletree_top.png", "default_jungletree_top.png", -< "default_jungletree.png"}, ---- -> tiles = {"default_jungle_tree_top.png", "default_jungle_tree_top.png", -> "default_jungle_tree.png"}, -695c717 -< minetest.register_node("default:junglewood", { ---- -> minetest.register_node("default:jungle_wood", { -699c721 -< tiles = {"default_junglewood.png"}, ---- -> tiles = {"default_jungle_wood.png"}, -705,706c727,728 -< minetest.register_node("default:jungleleaves", { -< description = "Jungle Leaves", ---- -> minetest.register_node("default:jungle_leaves", { -> description = "Jungle Tree Leaves", -709,710c731,732 -< tiles = {"default_jungleleaves.png"}, -< special_tiles = {"default_jungleleaves_simple.png"}, ---- -> tiles = {"default_jungle_leaves.png"}, -> special_tiles = {"default_jungle_leaves_simple.png"}, -717,718c739,740 -< {items = {'default:junglesapling'}, rarity = 20}, -< {items = {'default:jungleleaves'}} ---- -> {items = {'default:jungle_sapling'}, rarity = 20}, -> {items = {'default:jungle_leaves'}} -726,731c748,769 -< minetest.register_node("default:junglesapling", { -< description = "Jungle Sapling", -< drawtype = "plantlike", -< tiles = {"default_junglesapling.png"}, -< inventory_image = "default_junglesapling.png", -< wield_image = "default_junglesapling.png", ---- -> minetest.register_node("default:jungle_sapling", { -> description = "Jungle Tree Sapling", -> tiles = { -> "default_jungle_sapling_top.png", -> "default_jungle_sapling_bottom.png", -> "default_jungle_sapling_side.png", -> "default_jungle_sapling_side.png", -> "default_jungle_sapling_side.png", -> "default_jungle_sapling_side.png" -> }, -> drawtype = "nodebox", -> paramtype = "light", -> node_box = { -> type = "fixed", -> fixed = { -> {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1 -> {-0.25, -0.3125, -0.25, 0.25, 0, 0.25}, -- NodeBox3 -> {-0.125, -0.0625, -0.125, 0.1875, 0.125, 0.1875}, -- NodeBox4 -> } -> }, -> inventory_image = "default_jungle_sapling.png", -> wield_image = "default_jungle_sapling.png", -734c772 -< walkable = false, ---- -> walkable = true, -745c783 -< minetest.get_node_timer(pos):start(math.random(2400,4800)) ---- -> minetest.get_node_timer(pos):start(math.random(300, 1500)) -806,808c844,865 -< description = "Pine Sapling", -< drawtype = "plantlike", -< tiles = {"default_pine_sapling.png"}, ---- -> description = "Pine Tree Sapling", -> drawtype = "nodebox", -> paramtype = "light", -> node_box = { -> type = "fixed", -> fixed = { -> {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1 -> {-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox2 -> {-0.25, -0.3125, -0.25, 0.25, -0.25, 0.25}, -- NodeBox3 -> {-0.1875, -0.25, -0.1875, 0.1875, -0.125, 0.1875}, -- NodeBox4 -> {-0.125, -0.1875, -0.125, 0.125, -0.0625, 0.125}, -- NodeBox5 -> {-0.0625, -0.0625, -0.0625, 0.0625, 0.0625, 0.0625}, -- NodeBox6 -> } -> }, -> tiles = { -> "default_pine_sapling_top.png", -> "default_pine_sapling_bottom.png", -> "default_pine_sapling_side.png", -> "default_pine_sapling_side.png", -> "default_pine_sapling_side.png", -> "default_pine_sapling_side.png" -> }, -824c881 -< minetest.get_node_timer(pos):start(math.random(2400,4800)) ---- -> minetest.get_node_timer(pos):start(math.random(300, 1500)) -865c922 -< description = "Acacia Leaves", ---- -> description = "Acacia Tree Leaves", -887,888c944,960 -< drawtype = "plantlike", -< tiles = {"default_acacia_sapling.png"}, ---- -> drawtype = "nodebox", -> paramtype = "light", -> node_box = { -> type = "fixed", -> fixed = { -> {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1 -> {-0.125, -0.375, -0.1875, 0.1875, 0, 0.1875}, -- NodeBox2 -> {0, -0.125, -0.0625, 0.1875, 0.125, 0.125}, -- NodeBox3 -> } -> }, -> tiles = {"default_acacia_sapling_top.png", -> "default_acacia_sapling_bottom.png", -> "default_acacia_sapling_side.png", -> "default_acacia_sapling_side.png", -> "default_acacia_sapling_side.png", -> "default_acacia_sapling_side.png" -> }, -893c965 -< walkable = false, ---- -> walkable = true, -904c976 -< minetest.get_node_timer(pos):start(math.random(2400,4800)) ---- -> minetest.get_node_timer(pos):start(math.random(300, 1500)) -944c1016 -< description = "Aspen Leaves", ---- -> description = "Aspen Tree Leaves", -965,966c1037,1053 -< drawtype = "plantlike", -< tiles = {"default_aspen_sapling.png"}, ---- -> drawtype = "nodebox", -> paramtype = "light", -> node_box = { -> type = "fixed", -> fixed = { -> {-0.0625, -0.5, -0.0625, 0.0625, -0.3125, 0.0625}, -- NodeBox1 -> {-0.125, -0.375, -0.1875, 0.1875, 0, 0.1875}, -- NodeBox2 -> {0, -0.125, -0.0625, 0.1875, 0.125, 0.125}, -- NodeBox3 -> } -> }, -> tiles = {"default_aspen_sapling_top.png", -> "default_aspen_sapling_bottom.png", -> "default_aspen_sapling_side.png", -> "default_aspen_sapling_side.png", -> "default_aspen_sapling_side.png", -> "default_aspen_sapling_side.png" -> }, -971c1058 -< walkable = false, ---- -> walkable = true, -982c1069 -< minetest.get_node_timer(pos):start(math.random(2400,4800)) ---- -> minetest.get_node_timer(pos):start(math.random(300, 1500)) -1147c1234,1243 -< drawtype = "plantlike", ---- -> drawtype = "nodebox", -> node_box = { -> type = "fixed", -> fixed = { -> {0.1875, -0.5, 0.1875, 0.4375, 0.5, 0.4375}, -- NodeBox1 -> {0.1875, -0.5, -0.4375, 0.4375, 0.5, -0.1875}, -- NodeBox2 -> {-0.4375, -0.5, -0.4375, -0.1875, 0.5, -0.1875}, -- NodeBox3 -> {-0.4375, -0.5, 0.1875, -0.1875, 0.5, 0.4375}, -- NodeBox4 -> } -> }, -1149,1150c1245,1246 -< inventory_image = "default_papyrus.png", -< wield_image = "default_papyrus.png", ---- -> inventory_image = "default_inv_papyrus.png", -> wield_image = "default_inv_papyrus.png", -1185c1281 -< minetest.register_node("default:junglegrass", { ---- -> minetest.register_node("default:jungle_grass", { -1187,1192c1283,1297 -< drawtype = "plantlike", -< waving = 1, -< visual_scale = 1.69, -< tiles = {"default_junglegrass.png"}, -< inventory_image = "default_junglegrass.png", -< wield_image = "default_junglegrass.png", ---- -> drawtype = "nodebox", -> node_box = { -> type = "fixed", -> fixed = { -> {-0.125, -0.5, -0.125, 0.125, 0.25, 0.125}, -- NodeBox18 -> {0.125, 0.25, -0.125, 0.375, 0.5, 0.125}, -- NodeBox19 -> {0.25, -0.5, 0.25, 0.5, -0.125, 0.5}, -- NodeBox20 -> {-0.5, -0.5, 0.25, -0.25, -0.25, 0.5}, -- NodeBox21 -> {0.25, -0.5, -0.5, 0.5, -0.1875, -0.25}, -- NodeBox22 -> {-0.5, -0.5, -0.5, -0.25, -0.0625, -0.25}, -- NodeBox23 -> } -> }, -> tiles = {"default_grass.png"}, -> inventory_image = "default_jungle_grass.png", -> wield_image = "default_jungle_grass.png", -1193a1299 -> paramtype2 = "facedir", -1208c1314,1322 -< drawtype = "plantlike", ---- -> drawtype = "nodebox", -> node_box = { -> type = "fixed", -> fixed = { -> {-0.375, -0.5, 0.125, -0.125, -0.25, 0.375}, -- NodeBox9 -> {0.125, -0.5, 0.125, 0.375, -0.25, 0.375}, -- NodeBox11 -> {-0.375, -0.5, -0.375, -0.125, -0.25, -0.125}, -- NodeBox12 -> } -> }, -1210c1324 -< tiles = {"default_grass_1.png"}, ---- -> tiles = {"default_grass.png"}, -1212,1213d1325 -< inventory_image = "default_grass_3.png", -< wield_image = "default_grass_3.png", -1223a1336 -> }) -1225,1231c1338,1364 -< on_place = function(itemstack, placer, pointed_thing) -< -- place a random grass node -< local stack = ItemStack("default:grass_" .. math.random(1,5)) -< local ret = minetest.item_place(stack, placer, pointed_thing) -< return ItemStack("default:grass_1 " .. -< itemstack:get_count() - (1 - ret:get_count())) -< end, ---- -> minetest.register_node("default:grass_2", { -> description = "Grass", -> drawtype = "nodebox", -> node_box = { -> type = "fixed", -> fixed = { -> {-0.125, -0.5, -0.125, 0.125, -0.1875, 0.125}, -- NodeBox8 -> {-0.375, -0.5, 0.125, -0.125, 0.0625, 0.375}, -- NodeBox9 -> {0.125, -0.5, 0.125, 0.375, 0.0625, 0.375}, -- NodeBox11 -> {-0.375, -0.5, -0.375, -0.125, 0.0625, -0.125}, -- NodeBox12 -> {0.125, -0.5, -0.375, 0.375, 0.0625, -0.125}, -- NodeBox13 -> } -> }, -> waving = 1, -> tiles = {"default_grass.png"}, -> paramtype = "light", -> sunlight_propagates = true, -> walkable = false, -> buildable_to = true, -> drop = "default:grass_2", -> groups = {snappy = 3, flora = 1, attached_node = 1, -> not_in_creative_inventory = 1, grass = 1, flammable = 1}, -> sounds = default.node_sound_leaves_defaults(), -> selection_box = { -> type = "fixed", -> fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, -> }, -1234,1248c1367,1388 -< for i = 2, 5 do -< minetest.register_node("default:grass_" .. i, { -< description = "Grass", -< drawtype = "plantlike", -< waving = 1, -< tiles = {"default_grass_" .. i .. ".png"}, -< inventory_image = "default_grass_" .. i .. ".png", -< wield_image = "default_grass_" .. i .. ".png", -< paramtype = "light", -< sunlight_propagates = true, -< walkable = false, -< buildable_to = true, -< drop = "default:grass_1", -< groups = {snappy = 3, flora = 1, attached_node = 1, -< not_in_creative_inventory = 1, grass = 1, flammable = 1}, ---- -> minetest.register_node("default:grass_3", { -> description = "Grass", -> drawtype = "nodebox", -> node_box = { -> type = "fixed", -> fixed = { -> {-0.125, -0.5, -0.125, 0.125, -0.1875, 0.125}, -- NodeBox8 -> {-0.375, -0.5, 0.125, -0.125, 0.3125, 0.375}, -- NodeBox9 -> {0.125, -0.5, 0.125, 0.375, 0.3125, 0.375}, -- NodeBox11 -> {-0.375, -0.5, -0.375, -0.125, 0.3125, -0.125}, -- NodeBox12 -> {0.125, -0.5, -0.375, 0.375, 0.3125, -0.125}, -- NodeBox13 -> } -> }, -> waving = 1, -> tiles = {"default_grass.png"}, -> paramtype = "light", -> sunlight_propagates = true, -> walkable = false, -> buildable_to = true, -> drop = "default:grass_3", -> groups = {snappy = 3, flora = 1, attached_node = 1, -> not_in_creative_inventory = 1, grass = 1, flammable = 1}, -1250,1255c1390,1423 -< selection_box = { -< type = "fixed", -< fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, -< }, -< }) -< end ---- -> selection_box = { -> type = "fixed", -> fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, -> }, -> }) -> -> minetest.register_node("default:grass_4", { -> description = "Grass", -> drawtype = "nodebox", -> node_box = { -> type = "fixed", -> fixed = { -> {0.125, -0.5, 0.125, 0.4375, 0.5, 0.4375}, -- NodeBox1 -> {0.125, -0.5, -0.4375, 0.4375, 0.5, -0.125}, -- NodeBox2 -> {-0.4375, -0.5, -0.4375, -0.125, 0.5, -0.125}, -- NodeBox3 -> {-0.4375, -0.5, 0.125, -0.125, 0.5, 0.4375}, -- NodeBox4 -> {-0.125, -0.5, -0.125, 0.125, -0.0625, 0.125}, -- NodeBox7 -> } -> }, -> waving = 1, -> tiles = {"default_grass.png"}, -> paramtype = "light", -> sunlight_propagates = true, -> walkable = false, -> buildable_to = true, -> drop = "default:grass_3", -> groups = {snappy = 3, flora = 1, attached_node = 1, -> not_in_creative_inventory = 1, grass = 1, flammable = 1}, -> sounds = default.node_sound_leaves_defaults(), -> selection_box = { -> type = "fixed", -> fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, -> }, -> }) -1256a1425,1452 -> minetest.register_node("default:grass_5", { -> description = "Grass", -> drawtype = "nodebox", -> node_box = { -> type = "fixed", -> fixed = { -> {0.125, -0.5, 0.125, 0.4375, 0.5, 0.4375}, -- NodeBox1 -> {0.125, -0.5, -0.4375, 0.4375, 0.5, -0.125}, -- NodeBox2 -> {-0.4375, -0.5, -0.4375, -0.125, 0.5, -0.125}, -- NodeBox3 -> {-0.4375, -0.5, 0.125, -0.125, 0.5, 0.4375}, -- NodeBox4 -> {-0.125, -0.5, -0.125, 0.125, 0.125, 0.125}, -- NodeBox7 -> } -> }, -> waving = 1, -> tiles = {"default_grass.png"}, -> paramtype = "light", -> sunlight_propagates = true, -> walkable = false, -> buildable_to = true, -> drop = "default:grass_3", -> groups = {snappy = 3, flora = 1, attached_node = 1, -> not_in_creative_inventory = 1, grass = 1, flammable = 1}, -> sounds = default.node_sound_leaves_defaults(), -> selection_box = { -> type = "fixed", -> fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, -> }, -> }) -1365c1561 -< minetest.get_node_timer(pos):start(math.random(1200, 2400)) ---- -> minetest.get_node_timer(pos):start(math.random(300, 1500)) -1436c1632 -< minetest.get_node_timer(pos):start(math.random(1200, 2400)) ---- -> minetest.get_node_timer(pos):start(math.random(300, 1500)) -1712c1908 -< liquid_renewable = false, ---- -> liquid_renewable = true, -1758c1954 -< liquid_renewable = false, ---- -> liquid_renewable = true, -1769c1965 -< local function get_chest_formspec(pos) ---- -> function default.get_chest_formspec(pos) -1786c1982 -< local above = { x = pos.x, y = pos.y + 1, z = pos.z } ---- -> local above = {x = pos.x, y = pos.y + 1, z = pos.z} -1789c1985,1986 -< if def.drawtype == "airlike" or ---- -> if def and -> (def.drawtype == "airlike" or -1792c1989 -< (def.drawtype == "nodebox" and def.paramtype2 == "wallmounted") then ---- -> (def.drawtype == "nodebox" and def.paramtype2 == "wallmounted")) then -1892c2089 -< "default:chest", get_chest_formspec(pos)) ---- -> "default:chest", default.get_chest_formspec(pos)) -1914c2111 -< get_chest_formspec(pos) ---- -> default.get_chest_formspec(pos) -1959c2156 -< "default:chest", get_chest_formspec(pos)) ---- -> "default:chest", default.get_chest_formspec(pos)) -1991a2189,2195 -> for i = 1, #def_opened.tiles do -> if type(def_opened.tiles[i]) == "string" then -> def_opened.tiles[i] = {name = def_opened.tiles[i], backface_culling = true} -> elseif def_opened.tiles[i].backface_culling == nil then -> def_opened.tiles[i].backface_culling = true -> end -> end -1997c2201 -< } ---- -> } -2146a2351,2389 -> torch_box = { -> type = "wallmounted", -> wall_top = {-0.5/3, -0.5/3, -0.5/3, 0.5/3, 1.5/3, 0.5/3}, -> wall_bottom = {-0.5/3, -1.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3}, -> wall_side = {-1.5/3, -0.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3}, -> } -> -> minetest.register_node("default:torch", { -> drawtype = "nodebox", -> description = "Torch", -> tiles = {"default_torch.png"}, -> inventory_image = "default_torch_inventory.png", -> wield_image = "default_torch_inventory.png", -> paramtype = "light", -> paramtype2 = "wallmounted", -> legacy_wallmounted = true, -> sunlight_propagates = true, -> walkable = false, -> light_source = default.LIGHT_MAX-2, -> node_box = torch_box, -> groups = {attached_node=1, dig_immediate=3,not_in_creative_inventory=1}, -> drop='"default:torch" 1', -> sounds = default.node_sound_wood_defaults(), -> -- on_construct = function(pos) -> -- local tmr = minetest.env:get_node_timer(pos) -> -- tmr:start(torch_time) -> -- end, -> -- on_rightclick = function(pos, node) -> -- local tmr = minetest.env:get_node_timer(pos) -> -- local meta = minetest.get_meta(pos) -> -- local proc = math.floor(tmr:get_elapsed()/(torch_time/100)) -> -- meta:set_string("infotext", proc.."%") -> -- end, -> -- on_timer = function(pos,elapsed) -> -- local node = minetest.get_node(pos) -> -- minetest.set_node(pos, {name="default:torch_out", param2 = node.param2}) -> -- end, -> }) -> -2247c2490 -< description = "Wooden Fence", ---- -> description = "Apple Wood Fence", -2257c2500 -< description = "Acacia Fence", ---- -> description = "Acacia Wood Fence", -2266c2509 -< default.register_fence("default:fence_junglewood", { ---- -> default.register_fence("default:fence_jungle_wood", { -2268,2271c2511,2514 -< texture = "default_fence_junglewood.png", -< inventory_image = "default_fence_overlay.png^default_junglewood.png^default_fence_overlay.png^[makealpha:255,126,126", -< wield_image = "default_fence_overlay.png^default_junglewood.png^default_fence_overlay.png^[makealpha:255,126,126", -< material = "default:junglewood", ---- -> texture = "default_fence_jungle_wood.png", -> inventory_image = "default_fence_overlay.png^default_jungle_wood.png^default_fence_overlay.png^[makealpha:255,126,126", -> wield_image = "default_fence_overlay.png^default_jungle_wood.png^default_fence_overlay.png^[makealpha:255,126,126", -> material = "default:jungle_wood", -2277c2520 -< description = "Pine Fence", ---- -> description = "Pine Wood Fence", -2287c2530 -< description = "Aspen Fence", ---- -> description = "Aspen Wood Fence", -2301c2544 -< paramtype2 = "glasslikeliquidlevel", ---- -> -- paramtype2 = "glasslikeliquidlevel", -2389,2390c2632,2633 -< trunks = {"default:jungletree"}, -< leaves = {"default:jungleleaves"}, ---- -> trunks = {"default:jungle_tree"}, -> leaves = {"default:jungle_leaves"}, -2407,2408c2650,2651 -< trunks = {"default:jungletree"}, -< leaves = {"default:jungleleaves"}, ---- -> trunks = {"default:jungle_tree"}, -> leaves = {"default:jungle_leaves"}, -2441a2685,2692 -> -> minetest.register_alias("default:jungleleaves", "default:jungle_leaves") -> minetest.register_alias("default:junglewood", "default:jungle_wood") -> minetest.register_alias("default:junglesapling", "default:jungle_sapling") -> minetest.register_alias("default:jungletree", "default:jungle_tree") -> minetest.register_alias("default:junglegrass", "default:jungle_grass") -> -> minetest.register_alias("default:fence_junglewood", "default:fence_jungle_wood") diff --git a/mods/default.diff/source.txt b/mods/default.diff/source.txt deleted file mode 100644 index 516ed14..0000000 --- a/mods/default.diff/source.txt +++ /dev/null @@ -1 +0,0 @@ -https://github.com/minetest/minetest_game/archive/0.4.16.tar.gz diff --git a/mods/default.diff/tools.lua b/mods/default.diff/tools.lua deleted file mode 100644 index 37e126b..0000000 --- a/mods/default.diff/tools.lua +++ /dev/null @@ -1,810 +0,0 @@ --- mods/default/tools.lua - -local place_tool = function(itemstack, direction, meta1, meta2, pt, tool) --- minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:" .. tool .. "_deco", param2=direction}) --- meta1:set_int("wear", itemstack:get_wear()) --- meta2:set_int("wear", itemstack:get_wear()) --- itemstack:take_item() - return itemstack -end - - --- The hand -minetest.register_item(":", { - type = "none", - wield_image = "wieldhand.png", - wield_scale = {x=1,y=1,z=2.5}, - tool_capabilities = { - full_punch_interval = 0.9, - max_drop_level = 0, - groupcaps = { - crumbly = {times={[2]=3.00, [3]=0.70}, uses=0, maxlevel=1}, - snappy = {times={[3]=0.40}, uses=0, maxlevel=1}, - oddly_breakable_by_hand = {times={[1]=3.50,[2]=2.00,[3]=0.70}, uses=0} - }, - damage_groups = {fleshy=1}, - } -}) - --- --- Picks --- - -minetest.register_tool("default:pick_wood", { - description = "Wooden Pickaxe", - inventory_image = "default_tool_woodpick.png", - tool_capabilities = { - full_punch_interval = 1.2, - max_drop_level=0, - groupcaps={ - cracky = {times={[3]=1.60}, uses=10, maxlevel=1}, - }, - damage_groups = {fleshy=2}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:pick_wood_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:pick_stone", { - description = "Stone Pickaxe", - inventory_image = "default_tool_stonepick.png", - tool_capabilities = { - full_punch_interval = 1.3, - max_drop_level=0, - groupcaps={ - cracky = {times={[2]=2.0, [3]=1.00}, uses=20, maxlevel=1}, - }, - damage_groups = {fleshy=3}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:pick_stone_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:pick_steel", { - description = "Steel Pickaxe", - inventory_image = "default_tool_steelpick.png", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=1, - groupcaps={ - cracky = {times={[1]=4.00, [2]=1.60, [3]=0.80}, uses=20, maxlevel=2}, - }, - damage_groups = {fleshy=4}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:pick_steel_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:pick_bronze", { - description = "Bronze Pickaxe", - inventory_image = "default_tool_bronzepick.png", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=1, - groupcaps={ - cracky = {times={[1]=4.00, [2]=1.60, [3]=0.80}, uses=30, maxlevel=2}, - }, - damage_groups = {fleshy=4}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:pick_bronze_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:pick_mese", { - description = "Mese Pickaxe", - inventory_image = "default_tool_mesepick.png", - tool_capabilities = { - full_punch_interval = 0.9, - max_drop_level=3, - groupcaps={ - cracky = {times={[1]=2.4, [2]=1.2, [3]=0.60}, uses=20, maxlevel=3}, - }, - damage_groups = {fleshy=5}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:pick_mese_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:pick_diamond", { - description = "Diamond Pickaxe", - inventory_image = "default_tool_diamondpick.png", - tool_capabilities = { - full_punch_interval = 0.9, - max_drop_level=3, - groupcaps={ - cracky = {times={[1]=2.0, [2]=1.0, [3]=0.50}, uses=30, maxlevel=3}, - }, - damage_groups = {fleshy=5}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:pick_diamond_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - --- --- Shovels --- - -minetest.register_tool("default:shovel_wood", { - description = "Wooden Shovel", - inventory_image = "default_tool_woodshovel.png", - wield_image = "default_tool_woodshovel.png^[transformR90", - tool_capabilities = { - full_punch_interval = 1.2, - max_drop_level=0, - groupcaps={ - crumbly = {times={[1]=3.00, [2]=1.60, [3]=0.60}, uses=10, maxlevel=1}, - }, - damage_groups = {fleshy=2}, - }, - groups = {flammable = 2}, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:shovel_wood_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:shovel_stone", { - description = "Stone Shovel", - inventory_image = "default_tool_stoneshovel.png", - wield_image = "default_tool_stoneshovel.png^[transformR90", - tool_capabilities = { - full_punch_interval = 1.4, - max_drop_level=0, - groupcaps={ - crumbly = {times={[1]=1.80, [2]=1.20, [3]=0.50}, uses=20, maxlevel=1}, - }, - damage_groups = {fleshy=2}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:shovel_stone_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:shovel_steel", { - description = "Steel Shovel", - inventory_image = "default_tool_steelshovel.png", - wield_image = "default_tool_steelshovel.png^[transformR90", - tool_capabilities = { - full_punch_interval = 1.1, - max_drop_level=1, - groupcaps={ - crumbly = {times={[1]=1.50, [2]=0.90, [3]=0.40}, uses=30, maxlevel=2}, - }, - damage_groups = {fleshy=3}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:shovel_stone_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, - on_place = function(itemstack, placer, pointed_thing) - place_tool(itemstack, minetest.dir_to_facedir(placer:get_look_dir()), - minetest.env:get_meta({x=pointed_thing.under.x, y=pointed_thing.under.y , z=pointed_thing.under.z}), - minetest.env:get_meta({x=pointed_thing.under.x, y=pointed_thing.under.y+1, z=pointed_thing.under.z}), - pointed_thing, "shovel_steel"); - end, -}) - -minetest.register_tool("default:shovel_bronze", { - description = "Bronze Shovel", - inventory_image = "default_tool_bronzeshovel.png", - wield_image = "default_tool_bronzeshovel.png^[transformR90", - tool_capabilities = { - full_punch_interval = 1.1, - max_drop_level=1, - groupcaps={ - crumbly = {times={[1]=1.50, [2]=0.90, [3]=0.40}, uses=40, maxlevel=2}, - }, - damage_groups = {fleshy=3}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:shovel_bronze_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:shovel_mese", { - description = "Mese Shovel", - inventory_image = "default_tool_meseshovel.png", - wield_image = "default_tool_meseshovel.png^[transformR90", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=3, - groupcaps={ - crumbly = {times={[1]=1.20, [2]=0.60, [3]=0.30}, uses=20, maxlevel=3}, - }, - damage_groups = {fleshy=4}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:shovel_mese_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:shovel_diamond", { - description = "Diamond Shovel", - inventory_image = "default_tool_diamondshovel.png", - wield_image = "default_tool_diamondshovel.png^[transformR90", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=1, - groupcaps={ - crumbly = {times={[1]=1.10, [2]=0.50, [3]=0.30}, uses=30, maxlevel=3}, - }, - damage_groups = {fleshy=4}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:shovel_diamond_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - --- --- Axes --- - -minetest.register_tool("default:axe_wood", { - description = "Wooden Axe", - inventory_image = "default_tool_woodaxe.png", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=0, - groupcaps={ - choppy = {times={[2]=3.00, [3]=1.60}, uses=10, maxlevel=1}, - }, - damage_groups = {fleshy=2}, - }, - groups = {flammable = 2}, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:axe_wood_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:axe_stone", { - description = "Stone Axe", - inventory_image = "default_tool_stoneaxe.png", - tool_capabilities = { - full_punch_interval = 1.2, - max_drop_level=0, - groupcaps={ - choppy={times={[1]=3.00, [2]=2.00, [3]=1.30}, uses=20, maxlevel=1}, - }, - damage_groups = {fleshy=3}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:axe_stone_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:axe_steel", { - description = "Steel Axe", - inventory_image = "default_tool_steelaxe.png", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=1, - groupcaps={ - choppy={times={[1]=2.50, [2]=1.40, [3]=1.00}, uses=20, maxlevel=2}, - }, - damage_groups = {fleshy=4}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:axe_steel_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:axe_bronze", { - description = "Bronze Axe", - inventory_image = "default_tool_bronzeaxe.png", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=1, - groupcaps={ - choppy={times={[1]=2.50, [2]=1.40, [3]=1.00}, uses=30, maxlevel=2}, - }, - damage_groups = {fleshy=4}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:axe_bronze_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:axe_mese", { - description = "Mese Axe", - inventory_image = "default_tool_meseaxe.png", - tool_capabilities = { - full_punch_interval = 0.9, - max_drop_level=1, - groupcaps={ - choppy={times={[1]=2.20, [2]=1.00, [3]=0.60}, uses=20, maxlevel=3}, - }, - damage_groups = {fleshy=6}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:axe_mese_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:axe_diamond", { - description = "Diamond Axe", - inventory_image = "default_tool_diamondaxe.png", - tool_capabilities = { - full_punch_interval = 0.9, - max_drop_level=1, - groupcaps={ - choppy={times={[1]=2.10, [2]=0.90, [3]=0.50}, uses=30, maxlevel=3}, - }, - damage_groups = {fleshy=7}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:axe_diamond_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - --- --- Swords --- - -minetest.register_tool("default:sword_wood", { - description = "Wooden Sword", - inventory_image = "default_tool_woodsword.png", - tool_capabilities = { - full_punch_interval = 1, - max_drop_level=0, - groupcaps={ - snappy={times={[2]=1.6, [3]=0.40}, uses=10, maxlevel=1}, - }, - damage_groups = {fleshy=2}, - }, - groups = {flammable = 2}, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:sword_wood_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:sword_stone", { - description = "Stone Sword", - inventory_image = "default_tool_stonesword.png", - tool_capabilities = { - full_punch_interval = 1.2, - max_drop_level=0, - groupcaps={ - snappy={times={[2]=1.4, [3]=0.40}, uses=20, maxlevel=1}, - }, - damage_groups = {fleshy=4}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:sword_stone_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:sword_steel", { - description = "Steel Sword", - inventory_image = "default_tool_steelsword.png", - tool_capabilities = { - full_punch_interval = 0.8, - max_drop_level=1, - groupcaps={ - snappy={times={[1]=2.5, [2]=1.20, [3]=0.35}, uses=30, maxlevel=2}, - }, - damage_groups = {fleshy=6}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:sword_steel_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:sword_bronze", { - description = "Bronze Sword", - inventory_image = "default_tool_bronzesword.png", - tool_capabilities = { - full_punch_interval = 0.8, - max_drop_level=1, - groupcaps={ - snappy={times={[1]=2.5, [2]=1.20, [3]=0.35}, uses=40, maxlevel=2}, - }, - damage_groups = {fleshy=6}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:sword_bronze_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:sword_mese", { - description = "Mese Sword", - inventory_image = "default_tool_mesesword.png", - tool_capabilities = { - full_punch_interval = 0.7, - max_drop_level=1, - groupcaps={ - snappy={times={[1]=2.0, [2]=1.00, [3]=0.35}, uses=30, maxlevel=3}, - }, - damage_groups = {fleshy=7}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:sword_mese_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:sword_diamond", { - description = "Diamond Sword", - inventory_image = "default_tool_diamondsword.png", - tool_capabilities = { - full_punch_interval = 0.7, - max_drop_level=1, - groupcaps={ - snappy={times={[1]=1.90, [2]=0.90, [3]=0.30}, uses=40, maxlevel=3}, - }, - damage_groups = {fleshy=8}, - }, - sound = {breaks = "default_tool_breaks"}, - on_place = function(itemstack, placer, pointed_thing) - local pt = pointed_thing - if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then - local wear = itemstack:get_wear() - local direction = minetest.dir_to_facedir(placer:get_look_dir()) - local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) - local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) - minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:sword_diamond_deco", param2=direction}) - meta1:set_int("wear", wear) - meta2:set_int("wear", wear) - itemstack:take_item() - return itemstack - end - end, -}) - -minetest.register_tool("default:key", { - description = "Key", - inventory_image = "default_key.png", - groups = {key = 1, not_in_creative_inventory = 1}, - stack_max = 1, - on_place = function(itemstack, placer, pointed_thing) - local under = pointed_thing.under - local node = minetest.get_node(under) - local def = minetest.registered_nodes[node.name] - if def and def.on_rightclick and - not (placer and placer:get_player_control().sneak) then - return def.on_rightclick(under, node, placer, itemstack, - pointed_thing) or itemstack - end - if pointed_thing.type ~= "node" then - return itemstack - end - - local pos = pointed_thing.under - node = minetest.get_node(pos) - - if not node or node.name == "ignore" then - return itemstack - end - - local ndef = minetest.registered_nodes[node.name] - if not ndef then - return itemstack - end - - local on_key_use = ndef.on_key_use - if on_key_use then - on_key_use(pos, placer) - end - - return nil - end -}) - - -local register_deco_block = function(tool_name, tool_tiles, tool_nodebox) - minetest.register_node(tool_name.."_deco", { - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - tiles = tool_tiles, - groups = { - snappy=3, - flammable=2, - not_in_creative_inventory=1 - }, - node_box = { - type = "fixed", - fixed = tool_nodebox, - }, - sounds = default.node_sound_wood_defaults(), - on_dig = function(pos, node, digger) - if digger:is_player() and digger:get_inventory() then - local meta = minetest.env:get_meta(pos) - local wear_out = meta:get_int("wear") - digger:get_inventory():add_item("main", {name=tool_name, count=1, wear=wear_out, metadata=""}) - end - minetest.remove_node(pos) - end, -}) -end - -local register_deco_block_materials = function(material, top) - register_deco_block("default:pick_"..material, {top, "default_tool_"..material.."pick.png"}, {{-0.5/3, -1.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3},{-0.5/3, 0.5/3, -1.5/3, 0.5/3, 1.5/3, 1.5/3}}) - register_deco_block("default:shovel_"..material, {top, "default_tool_"..material.."shovel.png"}, {{-0.5/3, -1.5/3, -0.5/3, 0.5/3, 1.5/3, 0.5/3}}) - register_deco_block("default:axe_"..material, {top, top, "default_tool_"..material.."axe.png^[transformFX", "default_tool_"..material.."axe.png", "default_tool_"..material.."axe.png^[combine:6x6:2,0=".."default_tool_"..material.."axe.png", "default_tool_"..material.."axe.png"}, {{-0.5/3, -1.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3},{-0.5/3, 0.5/3, -0.5/3, 0.5/3, 1.5/3, 1.5/3},{-0.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3, 1.5/3}}) - register_deco_block("default:sword_"..material, {top, "default_tool_"..material.."sword.png"}, {{-0.5/3, -1.5/3, -0.5/3, 0.5/3, 1.5/3, 0.5/3}}) -end -register_deco_block_materials("stone", "default_cobble.png") -register_deco_block_materials("wood", "default_wood.png") -register_deco_block_materials("steel", "default_steel_block.png") -register_deco_block_materials("bronze", "default_bronze_block.png") -register_deco_block_materials("mese", "default_mese_block.png") -register_deco_block_materials("diamond", "default_diamond_block.png") diff --git a/mods/default.diff/tools.lua.diff b/mods/default.diff/tools.lua.diff deleted file mode 100644 index fa5b90a..0000000 --- a/mods/default.diff/tools.lua.diff +++ /dev/null @@ -1,424 +0,0 @@ -2a3,11 -> local place_tool = function(itemstack, direction, meta1, meta2, pt, tool) -> -- minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:" .. tool .. "_deco", param2=direction}) -> -- meta1:set_int("wear", itemstack:get_wear()) -> -- meta2:set_int("wear", itemstack:get_wear()) -> -- itemstack:take_item() -> return itemstack -> end -> -> -35d43 -< groups = {flammable = 2}, -36a45,58 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:pick_wood_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -50a73,86 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:pick_stone_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -64a101,114 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:pick_steel_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -78a129,142 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:pick_bronze_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -92a157,170 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:pick_mese_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -106a185,198 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:pick_diamond_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -126a219,232 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:shovel_wood_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -141a248,261 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:shovel_stone_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -156a277,296 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:shovel_stone_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -> on_place = function(itemstack, placer, pointed_thing) -> place_tool(itemstack, minetest.dir_to_facedir(placer:get_look_dir()), -> minetest.env:get_meta({x=pointed_thing.under.x, y=pointed_thing.under.y , z=pointed_thing.under.z}), -> minetest.env:get_meta({x=pointed_thing.under.x, y=pointed_thing.under.y+1, z=pointed_thing.under.z}), -> pointed_thing, "shovel_steel"); -> end, -171a312,325 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:shovel_bronze_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -186a341,354 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:shovel_mese_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -201a370,383 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:shovel_diamond_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -220a403,416 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:axe_wood_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -234a431,444 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:axe_stone_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -248a459,472 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:axe_steel_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -262a487,500 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:axe_bronze_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -276a515,528 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:axe_mese_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -286c538 -< choppy={times={[1]=2.10, [2]=0.90, [3]=0.50}, uses=30, maxlevel=2}, ---- -> choppy={times={[1]=2.10, [2]=0.90, [3]=0.50}, uses=30, maxlevel=3}, -290a543,556 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:axe_diamond_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -309a576,589 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:sword_wood_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -323a604,617 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:sword_stone_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -337a632,645 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:sword_steel_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -351a660,673 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:sword_bronze_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -365a688,701 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:sword_mese_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -379a716,729 -> on_place = function(itemstack, placer, pointed_thing) -> local pt = pointed_thing -> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then -> local wear = itemstack:get_wear() -> local direction = minetest.dir_to_facedir(placer:get_look_dir()) -> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) -> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) -> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="default:sword_diamond_deco", param2=direction}) -> meta1:set_int("wear", wear) -> meta2:set_int("wear", wear) -> itemstack:take_item() -> return itemstack -> end -> end, -419a770,810 -> -> -> local register_deco_block = function(tool_name, tool_tiles, tool_nodebox) -> minetest.register_node(tool_name.."_deco", { -> drawtype = "nodebox", -> paramtype = "light", -> paramtype2 = "facedir", -> tiles = tool_tiles, -> groups = { -> snappy=3, -> flammable=2, -> not_in_creative_inventory=1 -> }, -> node_box = { -> type = "fixed", -> fixed = tool_nodebox, -> }, -> sounds = default.node_sound_wood_defaults(), -> on_dig = function(pos, node, digger) -> if digger:is_player() and digger:get_inventory() then -> local meta = minetest.env:get_meta(pos) -> local wear_out = meta:get_int("wear") -> digger:get_inventory():add_item("main", {name=tool_name, count=1, wear=wear_out, metadata=""}) -> end -> minetest.remove_node(pos) -> end, -> }) -> end -> -> local register_deco_block_materials = function(material, top) -> register_deco_block("default:pick_"..material, {top, "default_tool_"..material.."pick.png"}, {{-0.5/3, -1.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3},{-0.5/3, 0.5/3, -1.5/3, 0.5/3, 1.5/3, 1.5/3}}) -> register_deco_block("default:shovel_"..material, {top, "default_tool_"..material.."shovel.png"}, {{-0.5/3, -1.5/3, -0.5/3, 0.5/3, 1.5/3, 0.5/3}}) -> register_deco_block("default:axe_"..material, {top, top, "default_tool_"..material.."axe.png^[transformFX", "default_tool_"..material.."axe.png", "default_tool_"..material.."axe.png^[combine:6x6:2,0=".."default_tool_"..material.."axe.png", "default_tool_"..material.."axe.png"}, {{-0.5/3, -1.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3},{-0.5/3, 0.5/3, -0.5/3, 0.5/3, 1.5/3, 1.5/3},{-0.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3, 1.5/3}}) -> register_deco_block("default:sword_"..material, {top, "default_tool_"..material.."sword.png"}, {{-0.5/3, -1.5/3, -0.5/3, 0.5/3, 1.5/3, 0.5/3}}) -> end -> register_deco_block_materials("stone", "default_cobble.png") -> register_deco_block_materials("wood", "default_wood.png") -> register_deco_block_materials("steel", "default_steel_block.png") -> register_deco_block_materials("bronze", "default_bronze_block.png") -> register_deco_block_materials("mese", "default_mese_block.png") -> register_deco_block_materials("diamond", "default_diamond_block.png") diff --git a/mods/default.diff/torch.lua b/mods/default.diff/torch.lua deleted file mode 100644 index 3c3ae96..0000000 --- a/mods/default.diff/torch.lua +++ /dev/null @@ -1,146 +0,0 @@ - ---[[ - -Torch mod - formerly mod "Torches" -====================== - -(c) Copyright BlockMen (2013-2015) -(C) Copyright sofar (2016) - -This mod changes the default torch drawtype from "torchlike" to "mesh", -giving the torch a three dimensional appearance. The mesh contains the -proper pixel mapping to make the animation appear as a particle above -the torch, while in fact the animation is just the texture of the mesh. - - -License: -~~~~~~~~ -(c) Copyright BlockMen (2013-2015) - -Textures and Meshes/Models: -CC-BY 3.0 BlockMen -Note that the models were entirely done from scratch by sofar. - -Code: -Licensed under the GNU LGPL version 2.1 or higher. -You can redistribute it and/or modify it under -the terms of the GNU Lesser General Public License -as published by the Free Software Foundation; - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -See LICENSE.txt and http://www.gnu.org/licenses/lgpl-2.1.txt - ---]] - -minetest.register_node("default:torch", { - description = "Torch", - drawtype = "mesh", - mesh = "torch_floor.obj", - inventory_image = "default_torch_on_floor.png", - wield_image = "default_torch_on_floor.png", - tiles = {{ - name = "default_torch_on_floor_animated.png", - animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} - }}, - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - walkable = false, - liquids_pointable = false, - light_source = 12, - groups = {choppy=2, dig_immediate=3, flammable=1, attached_node=1, torch=1}, - drop = "default:torch", - selection_box = { - type = "wallmounted", - wall_bottom = {-1/8, -1/2, -1/8, 1/8, 2/16, 1/8}, - }, - sounds = default.node_sound_wood_defaults(), - on_place = function(itemstack, placer, pointed_thing) - local under = pointed_thing.under - local node = minetest.get_node(under) - local def = minetest.registered_nodes[node.name] - if def and def.on_rightclick and - ((not placer) or (placer and not placer:get_player_control().sneak)) then - return def.on_rightclick(under, node, placer, itemstack, - pointed_thing) or itemstack - end - - local above = pointed_thing.above - local wdir = minetest.dir_to_wallmounted(vector.subtract(under, above)) - local fakestack = itemstack - if wdir == 0 then - fakestack:set_name("default:torch_ceiling") - elseif wdir == 1 then - fakestack:set_name("default:torch") - else - fakestack:set_name("default:torch_wall") - end - - itemstack = minetest.item_place(fakestack, placer, pointed_thing, wdir) - itemstack:set_name("default:torch") - - return itemstack - end -}) - -minetest.register_node("default:torch_wall", { - drawtype = "mesh", - mesh = "torch_wall.obj", - tiles = {{ - name = "default_torch_on_floor_animated.png", - animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} - }}, - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - walkable = false, - light_source = 12, - groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1}, - drop = "default:torch", - selection_box = { - type = "wallmounted", - wall_side = {-1/2, -1/2, -1/8, -1/8, 1/8, 1/8}, - }, - sounds = default.node_sound_wood_defaults(), -}) - -minetest.register_node("default:torch_ceiling", { - drawtype = "mesh", - mesh = "torch_ceiling.obj", - tiles = {{ - name = "default_torch_on_floor_animated.png", - animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} - }}, - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - walkable = false, - light_source = 12, - groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1}, - drop = "default:torch", - selection_box = { - type = "wallmounted", - wall_top = {-1/8, -1/16, -5/16, 1/8, 1/2, 1/8}, - }, - sounds = default.node_sound_wood_defaults(), -}) - -minetest.register_lbm({ - name = "default:3dtorch", - nodenames = {"default:torch", "torches:floor", "torches:wall"}, - action = function(pos, node) - if node.param2 == 0 then - minetest.set_node(pos, {name = "default:torch_ceiling", - param2 = node.param2}) - elseif node.param2 == 1 then - minetest.set_node(pos, {name = "default:torch", - param2 = node.param2}) - else - minetest.set_node(pos, {name = "default:torch_wall", - param2 = node.param2}) - end - end -}) diff --git a/mods/default.diff/trees.lua b/mods/default.diff/trees.lua deleted file mode 100644 index b2687c9..0000000 --- a/mods/default.diff/trees.lua +++ /dev/null @@ -1,557 +0,0 @@ -local random = math.random - --- --- Grow trees from saplings --- - --- 'can grow' function - -function default.can_grow(pos) - local node_under = minetest.get_node_or_nil({x = pos.x, y = pos.y - 1, z = pos.z}) - if not node_under then - return false - end - local name_under = node_under.name - local is_soil = minetest.get_item_group(name_under, "soil") - if is_soil == 0 then - return false - end - local light_level = minetest.get_node_light(pos) - if not light_level or light_level < 10 then - return false - end - return true -end - - --- 'is snow nearby' function - -local function is_snow_nearby(pos) - return minetest.find_node_near(pos, 1, {"group:snowy"}) -end - - --- Grow sapling - -function default.grow_sapling(pos) - if not default.can_grow(pos) then - -- try again 5 min later - minetest.get_node_timer(pos):start(1) - return - end - - local mg_name = minetest.get_mapgen_setting("mg_name") - local node = minetest.get_node(pos) - if node.name == "default:sapling" then - minetest.log("action", "A sapling grows into a tree at ".. - minetest.pos_to_string(pos)) - if mg_name == "v6" then - default.grow_tree(pos, random(1, 4) == 1) - else - default.grow_new_apple_tree(pos) - end - elseif node.name == "default:junglesapling" then - minetest.log("action", "A jungle sapling grows into a tree at ".. - minetest.pos_to_string(pos)) - if mg_name == "v6" then - default.grow_jungle_tree(pos) - else - default.grow_new_jungle_tree(pos) - end - elseif node.name == "default:pine_sapling" then - minetest.log("action", "A pine sapling grows into a tree at ".. - minetest.pos_to_string(pos)) - local snow = is_snow_nearby(pos) - if mg_name == "v6" then - default.grow_pine_tree(pos, snow) - elseif snow then - default.grow_new_snowy_pine_tree(pos) - else - default.grow_new_pine_tree(pos) - end - elseif node.name == "default:acacia_sapling" then - minetest.log("action", "An acacia sapling grows into a tree at ".. - minetest.pos_to_string(pos)) - default.grow_new_acacia_tree(pos) - elseif node.name == "default:aspen_sapling" then - minetest.log("action", "An aspen sapling grows into a tree at ".. - minetest.pos_to_string(pos)) - default.grow_new_aspen_tree(pos) - elseif node.name == "default:bush_sapling" then - minetest.log("action", "A bush sapling grows into a bush at ".. - minetest.pos_to_string(pos)) - default.grow_bush(pos) - elseif node.name == "default:acacia_bush_sapling" then - minetest.log("action", "An acacia bush sapling grows into a bush at ".. - minetest.pos_to_string(pos)) - default.grow_acacia_bush(pos) - end -end - -minetest.register_lbm({ - name = "default:convert_saplings_to_node_timer", - nodenames = {"default:sapling", "default:junglesapling", - "default:pine_sapling", "default:acacia_sapling", - "default:aspen_sapling"}, - action = function(pos) - minetest.get_node_timer(pos):start(math.random(10, 11)) - end -}) - --- --- Tree generation --- - --- Apple tree and jungle tree trunk and leaves function - -local function add_trunk_and_leaves(data, a, pos, tree_cid, leaves_cid, - height, size, iters, is_apple_tree) - local x, y, z = pos.x, pos.y, pos.z - local c_air = minetest.get_content_id("air") - local c_ignore = minetest.get_content_id("ignore") - local c_apple = minetest.get_content_id("default:apple") - - -- Trunk - data[a:index(x, y, z)] = tree_cid -- Force-place lowest trunk node to replace sapling - for yy = y + 1, y + height - 1 do - local vi = a:index(x, yy, z) - local node_id = data[vi] - if node_id == c_air or node_id == c_ignore or node_id == leaves_cid then - data[vi] = tree_cid - end - end - - -- Force leaves near the trunk - for z_dist = -1, 1 do - for y_dist = -size, 1 do - local vi = a:index(x - 1, y + height + y_dist, z + z_dist) - for x_dist = -1, 1 do - if data[vi] == c_air or data[vi] == c_ignore then - if is_apple_tree and random(1, 8) == 1 then - data[vi] = c_apple - else - data[vi] = leaves_cid - end - end - vi = vi + 1 - end - end - end - - -- Randomly add leaves in 2x2x2 clusters. - for i = 1, iters do - local clust_x = x + random(-size, size - 1) - local clust_y = y + height + random(-size, 0) - local clust_z = z + random(-size, size - 1) - - for xi = 0, 1 do - for yi = 0, 1 do - for zi = 0, 1 do - local vi = a:index(clust_x + xi, clust_y + yi, clust_z + zi) - if data[vi] == c_air or data[vi] == c_ignore then - if is_apple_tree and random(1, 8) == 1 then - data[vi] = c_apple - else - data[vi] = leaves_cid - end - end - end - end - end - end -end - - --- Apple tree - -function default.grow_tree(pos, is_apple_tree, bad) - --[[ - NOTE: Tree-placing code is currently duplicated in the engine - and in games that have saplings; both are deprecated but not - replaced yet - --]] - if bad then - error("Deprecated use of default.grow_tree") - end - - local x, y, z = pos.x, pos.y, pos.z - local height = random(4, 5) - local c_tree = minetest.get_content_id("default:tree") - local c_leaves = minetest.get_content_id("default:leaves") - - local vm = minetest.get_voxel_manip() - local minp, maxp = vm:read_from_map( - {x = x - 2, y = y, z = z - 2}, - {x = x + 2, y = y + height + 1, z = z + 2} - ) - local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) - local data = vm:get_data() - - add_trunk_and_leaves(data, a, pos, c_tree, c_leaves, height, 2, 8, is_apple_tree) - - vm:set_data(data) - vm:write_to_map() - vm:update_map() -end - - --- Jungle tree - -function default.grow_jungle_tree(pos, bad) - --[[ - NOTE: Jungletree-placing code is currently duplicated in the engine - and in games that have saplings; both are deprecated but not - replaced yet - --]] - if bad then - error("Deprecated use of default.grow_jungle_tree") - end - - local x, y, z = pos.x, pos.y, pos.z - local height = random(8, 12) - local c_air = minetest.get_content_id("air") - local c_ignore = minetest.get_content_id("ignore") - local c_jungletree = minetest.get_content_id("default:jungletree") - local c_jungleleaves = minetest.get_content_id("default:jungleleaves") - - local vm = minetest.get_voxel_manip() - local minp, maxp = vm:read_from_map( - {x = x - 3, y = y - 1, z = z - 3}, - {x = x + 3, y = y + height + 1, z = z + 3} - ) - local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) - local data = vm:get_data() - - add_trunk_and_leaves(data, a, pos, c_jungletree, c_jungleleaves, - height, 3, 30, false) - - -- Roots - for z_dist = -1, 1 do - local vi_1 = a:index(x - 1, y - 1, z + z_dist) - local vi_2 = a:index(x - 1, y, z + z_dist) - for x_dist = -1, 1 do - if random(1, 3) >= 2 then - if data[vi_1] == c_air or data[vi_1] == c_ignore then - data[vi_1] = c_jungletree - elseif data[vi_2] == c_air or data[vi_2] == c_ignore then - data[vi_2] = c_jungletree - end - end - vi_1 = vi_1 + 1 - vi_2 = vi_2 + 1 - end - end - - vm:set_data(data) - vm:write_to_map() - vm:update_map() -end - - --- Pine tree from mg mapgen mod, design by sfan5, pointy top added by paramat - -local function add_pine_needles(data, vi, c_air, c_ignore, c_snow, c_pine_needles) - local node_id = data[vi] - if node_id == c_air or node_id == c_ignore or node_id == c_snow then - data[vi] = c_pine_needles - end -end - -local function add_snow(data, vi, c_air, c_ignore, c_snow) - local node_id = data[vi] - if node_id == c_air or node_id == c_ignore then - data[vi] = c_snow - end -end - -function default.grow_pine_tree(pos, snow) - local x, y, z = pos.x, pos.y, pos.z - local maxy = y + random(9, 13) -- Trunk top - - local c_air = minetest.get_content_id("air") - local c_ignore = minetest.get_content_id("ignore") - local c_pine_tree = minetest.get_content_id("default:pine_tree") - local c_pine_needles = minetest.get_content_id("default:pine_needles") - local c_snow = minetest.get_content_id("default:snow") - - local vm = minetest.get_voxel_manip() - local minp, maxp = vm:read_from_map( - {x = x - 3, y = y, z = z - 3}, - {x = x + 3, y = maxy + 3, z = z + 3} - ) - local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) - local data = vm:get_data() - - -- Upper branches layer - local dev = 3 - for yy = maxy - 1, maxy + 1 do - for zz = z - dev, z + dev do - local vi = a:index(x - dev, yy, zz) - local via = a:index(x - dev, yy + 1, zz) - for xx = x - dev, x + dev do - if random() < 0.95 - dev * 0.05 then - add_pine_needles(data, vi, c_air, c_ignore, c_snow, - c_pine_needles) - if snow then - add_snow(data, via, c_air, c_ignore, c_snow) - end - end - vi = vi + 1 - via = via + 1 - end - end - dev = dev - 1 - end - - -- Centre top nodes - add_pine_needles(data, a:index(x, maxy + 1, z), c_air, c_ignore, c_snow, - c_pine_needles) - add_pine_needles(data, a:index(x, maxy + 2, z), c_air, c_ignore, c_snow, - c_pine_needles) -- Paramat added a pointy top node - if snow then - add_snow(data, a:index(x, maxy + 3, z), c_air, c_ignore, c_snow) - end - - -- Lower branches layer - local my = 0 - for i = 1, 20 do -- Random 2x2 squares of needles - local xi = x + random(-3, 2) - local yy = maxy + random(-6, -5) - local zi = z + random(-3, 2) - if yy > my then - my = yy - end - for zz = zi, zi+1 do - local vi = a:index(xi, yy, zz) - local via = a:index(xi, yy + 1, zz) - for xx = xi, xi + 1 do - add_pine_needles(data, vi, c_air, c_ignore, c_snow, - c_pine_needles) - if snow then - add_snow(data, via, c_air, c_ignore, c_snow) - end - vi = vi + 1 - via = via + 1 - end - end - end - - dev = 2 - for yy = my + 1, my + 2 do - for zz = z - dev, z + dev do - local vi = a:index(x - dev, yy, zz) - local via = a:index(x - dev, yy + 1, zz) - for xx = x - dev, x + dev do - if random() < 0.95 - dev * 0.05 then - add_pine_needles(data, vi, c_air, c_ignore, c_snow, - c_pine_needles) - if snow then - add_snow(data, via, c_air, c_ignore, c_snow) - end - end - vi = vi + 1 - via = via + 1 - end - end - dev = dev - 1 - end - - -- Trunk - -- Force-place lowest trunk node to replace sapling - data[a:index(x, y, z)] = c_pine_tree - for yy = y + 1, maxy do - local vi = a:index(x, yy, z) - local node_id = data[vi] - if node_id == c_air or node_id == c_ignore or - node_id == c_pine_needles or node_id == c_snow then - data[vi] = c_pine_tree - end - end - - vm:set_data(data) - vm:write_to_map() - vm:update_map() -end - - --- New apple tree - -function default.grow_new_apple_tree(pos) - local path = minetest.get_modpath("default") .. - "/schematics/apple_tree_from_sapling.mts" - minetest.place_schematic({x = pos.x - 2, y = pos.y - 1, z = pos.z - 2}, - path, "random", nil, false) -end - - --- New jungle tree - -function default.grow_new_jungle_tree(pos) - local path = minetest.get_modpath("default") .. - "/schematics/jungle_tree_from_sapling.mts" - minetest.place_schematic({x = pos.x - 2, y = pos.y - 1, z = pos.z - 2}, - path, "random", nil, false) -end - - --- New pine tree - -function default.grow_new_pine_tree(pos) - local path = minetest.get_modpath("default") .. - "/schematics/pine_tree_from_sapling.mts" - minetest.place_schematic({x = pos.x - 2, y = pos.y - 1, z = pos.z - 2}, - path, "0", nil, false) -end - - --- New snowy pine tree - -function default.grow_new_snowy_pine_tree(pos) - local path = minetest.get_modpath("default") .. - "/schematics/snowy_pine_tree_from_sapling.mts" - minetest.place_schematic({x = pos.x - 2, y = pos.y - 1, z = pos.z - 2}, - path, "random", nil, false) -end - - --- New acacia tree - -function default.grow_new_acacia_tree(pos) - local path = minetest.get_modpath("default") .. - "/schematics/acacia_tree_from_sapling.mts" - minetest.place_schematic({x = pos.x - 4, y = pos.y - 1, z = pos.z - 4}, - path, "random", nil, false) -end - - --- New aspen tree - -function default.grow_new_aspen_tree(pos) - local path = minetest.get_modpath("default") .. - "/schematics/aspen_tree_from_sapling.mts" - minetest.place_schematic({x = pos.x - 2, y = pos.y - 1, z = pos.z - 2}, - path, "0", nil, false) -end - - --- Bushes do not need 'from sapling' schematic variants because --- only the stem node is force-placed in the schematic. - --- Bush - -function default.grow_bush(pos) - local path = minetest.get_modpath("default") .. - "/schematics/bush.mts" - minetest.place_schematic({x = pos.x - 1, y = pos.y - 1, z = pos.z - 1}, - path, "0", nil, false) -end - - --- Acacia bush - -function default.grow_acacia_bush(pos) - local path = minetest.get_modpath("default") .. - "/schematics/acacia_bush.mts" - minetest.place_schematic({x = pos.x - 1, y = pos.y - 1, z = pos.z - 1}, - path, "0", nil, false) -end - - --- --- Sapling 'on place' function to check protection of node and resulting tree volume --- - -function default.sapling_on_place(itemstack, placer, pointed_thing, - sapling_name, minp_relative, maxp_relative, interval) - -- Position of sapling - local pos = pointed_thing.under - local node = minetest.get_node_or_nil(pos) - local pdef = node and minetest.registered_nodes[node.name] - - if pdef and pdef.on_rightclick and not placer:get_player_control().sneak then - return pdef.on_rightclick(pos, node, placer, itemstack, pointed_thing) - end - - if not pdef or not pdef.buildable_to then - pos = pointed_thing.above - node = minetest.get_node_or_nil(pos) - pdef = node and minetest.registered_nodes[node.name] - if not pdef or not pdef.buildable_to then - return itemstack - end - end - - local player_name = placer:get_player_name() - -- Check sapling position for protection - if minetest.is_protected(pos, player_name) then - minetest.record_protection_violation(pos, player_name) - return itemstack - end - -- Check tree volume for protection - if default.intersects_protection( - vector.add(pos, minp_relative), - vector.add(pos, maxp_relative), - player_name, - interval) then - minetest.record_protection_violation(pos, player_name) - -- Print extra information to explain - minetest.chat_send_player(player_name, "Tree will intersect protection") - return itemstack - end - - minetest.log("action", player_name .. " places node " - .. sapling_name .. " at " .. minetest.pos_to_string(pos)) - - local take_item = not (creative and creative.is_enabled_for - and creative.is_enabled_for(player_name)) - local newnode = {name = sapling_name} - local ndef = minetest.registered_nodes[sapling_name] - minetest.set_node(pos, newnode) - - -- Run callback - if ndef and ndef.after_place_node then - -- Deepcopy place_to and pointed_thing because callback can modify it - if ndef.after_place_node(table.copy(pos), placer, - itemstack, table.copy(pointed_thing)) then - take_item = false - end - end - - -- Run script hook - for _, callback in ipairs(minetest.registered_on_placenodes) do - -- Deepcopy pos, node and pointed_thing because callback can modify them - if callback(table.copy(pos), table.copy(newnode), - placer, table.copy(node or {}), - itemstack, table.copy(pointed_thing)) then - take_item = false - end - end - - if take_item then - itemstack:take_item() - end - - return itemstack -end - - --- Important bloody aliases - -minetest.register_alias("trees:tree_conifer", "default:pine_tree") -minetest.register_alias("trees:wood_conifer", "default:pine_wood") -minetest.register_alias("trees:sapling_conifer", "default:pine_sapling") -minetest.register_alias("trees:leaves_conifer", "default:pine_needles") - -minetest.register_alias("trees:tree_palm", "default:jungletree") -minetest.register_alias("trees:leaves_palm", "default:jungleleaves") -minetest.register_alias("trees:sapling_palm", "default:junglesapling") -minetest.register_alias("trees:wood_palm", "default:junglewood") - -minetest.register_alias("trees:tree_mangrove", "default:aspen_tree") -minetest.register_alias("trees:leaves_mangrove", "default:aspen_leaves") -minetest.register_alias("trees:sapling_mangrove", "default:aspen_sapling") -minetest.register_alias("trees:wood_mangrove", "default:aspen_wood") - -minetest.register_alias("trees:leaves_red", "default:jungleleaves") -minetest.register_alias("trees:leaves_yellow", "default:jungleleaves") -minetest.register_alias("trees:leaves_green", "default:jungleleaves") diff --git a/mods/default.diff/trees.lua.diff b/mods/default.diff/trees.lua.diff deleted file mode 100644 index b165a47..0000000 --- a/mods/default.diff/trees.lua.diff +++ /dev/null @@ -1,41 +0,0 @@ -20c20 -< if not light_level or light_level < 13 then ---- -> if not light_level or light_level < 10 then -34c34 -< -- Sapling ABM ---- -> -- Grow sapling -38,39c38,39 -< -- try a bit later again -< minetest.get_node_timer(pos):start(math.random(240, 600)) ---- -> -- try again 5 min later -> minetest.get_node_timer(pos):start(1) -97c97 -< minetest.get_node_timer(pos):start(math.random(1200, 2400)) ---- -> minetest.get_node_timer(pos):start(math.random(10, 11)) -535a536,557 -> -> -> -- Important bloody aliases -> -> minetest.register_alias("trees:tree_conifer", "default:pine_tree") -> minetest.register_alias("trees:wood_conifer", "default:pine_wood") -> minetest.register_alias("trees:sapling_conifer", "default:pine_sapling") -> minetest.register_alias("trees:leaves_conifer", "default:pine_needles") -> -> minetest.register_alias("trees:tree_palm", "default:jungletree") -> minetest.register_alias("trees:leaves_palm", "default:jungleleaves") -> minetest.register_alias("trees:sapling_palm", "default:junglesapling") -> minetest.register_alias("trees:wood_palm", "default:junglewood") -> -> minetest.register_alias("trees:tree_mangrove", "default:aspen_tree") -> minetest.register_alias("trees:leaves_mangrove", "default:aspen_leaves") -> minetest.register_alias("trees:sapling_mangrove", "default:aspen_sapling") -> minetest.register_alias("trees:wood_mangrove", "default:aspen_wood") -> -> minetest.register_alias("trees:leaves_red", "default:jungleleaves") -> minetest.register_alias("trees:leaves_yellow", "default:jungleleaves") -> minetest.register_alias("trees:leaves_green", "default:jungleleaves") diff --git a/mods/farming/README.txt b/mods/farming/README.txt index 3ccd8c3..6b9c970 100644 --- a/mods/farming/README.txt +++ b/mods/farming/README.txt @@ -1,37 +1,54 @@ -Minetest Game mod: farming -========================== -See license.txt for license information. +===FARMING MOD for MINETEST-C55=== +by PilzAdam -Authors of source code ----------------------- -Originally by PilzAdam (MIT) -webdesigner97 (MIT) -Various Minetest developers and contributors (MIT) +Introduction: +This mod adds farming to Minetest. -Authors of media (textures) ---------------------------- -Created by PilzAdam (CC BY 3.0): - farming_bread.png - farming_soil.png - farming_soil_wet.png - farming_soil_wet_side.png - farming_string.png +How to install: +Unzip the archive an place it in minetest-base-directory/mods/minetest/ +if you have a windows client or a linux run-in-place client. If you have +a linux system-wide instalation place it in ~/.minetest/mods/minetest/. +If you want to install this mod only in one world create the folder +worldmods/ in your worlddirectory. +For further information or help see: +http://wiki.minetest.com/wiki/Installing_Mods -Created by BlockMen (CC BY 3.0): - farming_tool_diamondhoe.png - farming_tool_mesehoe.png - farming_tool_bronzehoe.png - farming_tool_steelhoe.png - farming_tool_stonehoe.png - farming_tool_woodhoe.png +How to use the mod: +Craft a wood/stone/steel hoe: +material material + stick + stick +Dig dirt with it and turn it to soil. Water the soil and plant the seeds +you get by digging dirt with the hoe. Wait until the seeds are seasoned +and harvest them. When harvesting you will get the product and new seeds. +For further information or help see: +http://minetest.net/forum/viewtopic.php?id=2787 -Created by MasterGollum (CC BY 3.0): - farming_straw.png +License: +Sourcecode: WTFPL (see below) +Graphics: WTFPL (see below) with exceptions below. -Created by Gambit (CC BY 3.0): - farming_wheat.png - farming_wheat_*.png - farming_cotton_*.png - farming_flour.png - farming_cotton_seed.png - farming_wheat_seed.png +The following files were contributed by Tirifto and are released into +public domain under the CC0 license. +See: https://creativecommons.org/publicdomain/zero/1.0/legalcode + +farming_bread.png +farming_cake_mix.png +farming_flour.png + +See also: +http://minetest.net/ + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/mods/farming/cactus.lua b/mods/farming/cactus.lua new file mode 100644 index 0000000..3723e70 --- /dev/null +++ b/mods/farming/cactus.lua @@ -0,0 +1,22 @@ +minetest.register_abm({ + nodenames = {"default:cactus"}, + interval = 50, + chance = 20, + action = function(pos, node) + pos.y = pos.y-1 + local name = minetest.env:get_node(pos).name + if name == "default:desert_sand" or name == "default:sand" then + pos.y = pos.y+1 + local height = 0 + while minetest.env:get_node(pos).name == "default:cactus" do + height = height+1 + pos.y = pos.y+1 + end + if height < 4 then + if minetest.env:get_node(pos).name == "air" then + minetest.env:set_node(pos, node) + end + end + end + end +}) diff --git a/mods/farming/changelog.txt b/mods/farming/changelog.txt new file mode 100644 index 0000000..80138c5 --- /dev/null +++ b/mods/farming/changelog.txt @@ -0,0 +1,17 @@ +Version 3: +- make pumpkins with face not craftable but created by punching with a sword +- change groups of pumpkins to more wood like +- add big pumpkin +- add scarecrow +- make bread non stackable +- make saplings plantable everywhere (they still grow only with light and wet soil) +- add weed +- add fuel attributes to nearly everything +- add pumpkin bread +Version 2: +- soil dont turn to dirt when walking over it +- fix hoe bug +- rename corn to wheat +- new textures for harvested wheat +- make cotton drop strings when harvested +- add rubber diff --git a/mods/farming/cotton.lua b/mods/farming/cotton.lua new file mode 100644 index 0000000..dddb7a3 --- /dev/null +++ b/mods/farming/cotton.lua @@ -0,0 +1,107 @@ +minetest.register_craftitem("farming:cotton_seed", { + description = "Cotton Seeds", + inventory_image = "farming_cotton_seed.png", + on_place = function(itemstack, placer, pointed_thing) + local above = minetest.env:get_node(pointed_thing.above) + if above.name == "air" then + above.name = "farming:cotton_1" + minetest.env:set_node(pointed_thing.above, above) + itemstack:take_item(1) + return itemstack + end + end +}) + +minetest.register_node("farming:cotton_1", { + paramtype = "light", + sunlight_propagates = true, + walkable = false, + drawtype = "raillike", + drop = "", + tiles = {"farming_cotton_seed.png"}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.5, 0.5} + }, + }, + groups = {snappy=3, flammable=2, not_in_creative_inventory=1, attached_node=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("farming:cotton_2", { + paramtype = "light", + sunlight_propagates = true, + walkable = false, + drawtype = "plantlike", + drop = "", + tiles = {"farming_cotton_2.png"}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.5+12/16, 0.5} + }, + }, + groups = {snappy=3, flammable=2, not_in_creative_inventory=1, attached_node=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("farming:cotton", { + paramtype = "light", + sunlight_propagates = true, + walkable = false, + drawtype = "nodebox", + tiles = {"farming_cotton.png"}, + node_box = { + type = "fixed", + fixed = { + {-0.5/5, -2.5/5, -0.5/5, 0.5/5, -1.5/5, 0.5/5}, + {0.5/5, -1.5/5, -1.5/5, 1.5/5, 1.5/5, -0.5/5}, + {-1.5/5, -1.5/5, 0.5/5, -0.5/5, 1.5/5, 1.5/5}, + {0.5/5, -1.5/5, 0.5/5, 1.5/5, 1.5/5, 1.5/5}, + {-1.5/5, -1.5/5, -1.5/5, -0.5/5, 1.5/5, -0.5/5}, + {-2.5/5, 0.5/5, -2.5/5, -1.5/5, 2.5/5, -1.5/5}, + {1.5/5, 0.5/5, -2.5/5, 2.5/5, 2.5/5, -1.5/5}, + {1.5/5, 0.5/5, 1.5/5, 2.5/5, 2.5/5, 2.5/5}, + {-2.5/5, 0.5/5, 1.5/5, -1.5/5, 2.5/5, 2.5/5}, + } + }, + drop = { + max_items = 6, + items = { + { items = {'farming:cotton_seed'} }, + { items = {'farming:cotton_seed'}, rarity = 2}, + { items = {'farming:cotton_seed'}, rarity = 5}, + { items = {'farming:string'} }, + { items = {'farming:string'}, rarity = 2 }, + { items = {'farming:string'}, rarity = 5 } + } + }, + groups = {snappy=3, flammable=2, not_in_creative_inventory=1, attached_node=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +farming:add_plant("farming:cotton", {"farming:cotton_1", "farming:cotton_2"}, 50, 20) + +minetest.register_craftitem("farming:string", { + description = "String", + inventory_image = "farming_string.png", +}) + +minetest.register_craft({ + output = "wool:white", + recipe = {{"farming:string"}} +}) + +-- ========= FUEL ========= +minetest.register_craft({ + type = "fuel", + recipe = "farming:cotton_seed", + burntime = 1 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:string", + burntime = 1 +}) diff --git a/mods/farming/depends.txt b/mods/farming/depends.txt index 470ec30..0b8ebe0 100644 --- a/mods/farming/depends.txt +++ b/mods/farming/depends.txt @@ -1,2 +1,3 @@ default +bucket wool diff --git a/mods/farming/hoes.lua b/mods/farming/hoes.lua index 5aae390..43a482b 100644 --- a/mods/farming/hoes.lua +++ b/mods/farming/hoes.lua @@ -1,42 +1,89 @@ -farming.register_hoe(":farming:hoe_wood", { - description = "Wooden Hoe", - inventory_image = "farming_tool_woodhoe.png", - max_uses = 30, - material = "group:wood", - groups = {flammable = 2}, +local function create_soil(pos, inv, p) + if pos == nil then + return false + end + local node = minetest.env:get_node(pos) + local name = node.name + local above = minetest.env:get_node({x=pos.x, y=pos.y+1, z=pos.z}) + if name == "default:dirt" or name == "default:dirt_with_grass" then + if above.name == "air" then + node.name = "farming:soil" + minetest.env:set_node(pos, node) + if inv and p and name == "default:dirt_with_grass" then + for name,rarity in pairs(farming.seeds) do + if math.random(1, rarity-p) == 1 then + inv:add_item("main", ItemStack(name)) + end + end + end + return true + end + end + return false +end +print("kajldkalkwdhalwkjd") +minetest.register_tool("farming:hoe_wood", { + description = "Wood Hoe", + inventory_image = "farming_hoe_wood.png", + on_use = function(itemstack, user, pointed_thing) + if create_soil(pointed_thing.under, user:get_inventory(), 0) then + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535/30) + end + return itemstack + end + end }) -farming.register_hoe(":farming:hoe_stone", { +minetest.register_craft({ + output = "farming:hoe_wood", + recipe = { + {"group:wood", "group:wood"}, + {"", "group:wood"}, + {"", "group:wood"} + } +}) + +minetest.register_tool("farming:hoe_stone", { description = "Stone Hoe", - inventory_image = "farming_tool_stonehoe.png", - max_uses = 90, - material = "group:stone" + inventory_image = "farming_hoe_stone.png", + on_use = function(itemstack, user, pointed_thing) + if create_soil(pointed_thing.under, user:get_inventory(), 5) then + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535/50) + end + return itemstack + end + end }) -farming.register_hoe(":farming:hoe_steel", { +minetest.register_craft({ + output = "farming:hoe_stone", + recipe = { + {"group:stone", "group:stone"}, + {"", "group:wood"}, + {"", "group:wood"} + } +}) + +minetest.register_tool("farming:hoe_steel", { description = "Steel Hoe", - inventory_image = "farming_tool_steelhoe.png", - max_uses = 200, - material = "default:steel_ingot" + inventory_image = "farming_hoe_steel.png", + on_use = function(itemstack, user, pointed_thing) + if create_soil(pointed_thing.under, user:get_inventory(), 10) then + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535/80) + end + return itemstack + end + end }) -farming.register_hoe(":farming:hoe_bronze", { - description = "Bronze Hoe", - inventory_image = "farming_tool_bronzehoe.png", - max_uses = 220, - material = "default:bronze_ingot" -}) - -farming.register_hoe(":farming:hoe_mese", { - description = "Mese Hoe", - inventory_image = "farming_tool_mesehoe.png", - max_uses = 350, - material = "default:mese_crystal" -}) - -farming.register_hoe(":farming:hoe_diamond", { - description = "Diamond Hoe", - inventory_image = "farming_tool_diamondhoe.png", - max_uses = 500, - material = "default:diamond" +minetest.register_craft({ + output = "farming:hoe_steel", + recipe = { + {"default:steel_ingot", "default:steel_ingot"}, + {"", "group:wood"}, + {"", "group:wood"} + } }) diff --git a/mods/farming/init.lua b/mods/farming/init.lua index 97dc9b4..0b61454 100644 --- a/mods/farming/init.lua +++ b/mods/farming/init.lua @@ -1,109 +1,212 @@ --- Global farming namespace farming = {} -farming.path = minetest.get_modpath("farming") --- Load files -dofile(farming.path .. "/api.lua") -dofile(farming.path .. "/nodes.lua") -dofile(farming.path .. "/hoes.lua") +function farming:add_plant(full_grown, names, interval, chance) + minetest.register_abm({ + nodenames = names, + interval = interval, + chance = chance, + action = function(pos, node) + pos.y = pos.y-1 + if minetest.env:get_node(pos).name ~= "farming:soil_wet" then + return + end + pos.y = pos.y+1 + if not minetest.env:get_node_light(pos) then + return + end + if minetest.env:get_node_light(pos) < 8 then + return + end + local step = nil + for i,name in ipairs(names) do + if name == node.name then + step = i + break + end + end + if step == nil then + return + end + local new_node = {name=names[step+1]} + if new_node.name == nil then + new_node.name = full_grown + end + minetest.env:set_node(pos, new_node) + end +} ) +end --- WHEAT -farming.register_plant("farming:wheat", { - description = "Wheat seed", - paramtype2 = "meshoptions", - inventory_image = "farming_wheat_seed.png", - steps = 8, - minlight = 13, - maxlight = default.LIGHT_MAX, - fertility = {"grassland"}, - groups = {flammable = 4}, - place_param2 = 3, -}) -minetest.register_craftitem("farming:flour", { - description = "Flour", - inventory_image = "farming_flour.png", - groups = {flammable = 1}, -}) +function farming:generate_tree(pos, trunk, leaves, underground, replacements) + pos.y = pos.y-1 + local nodename = minetest.env:get_node(pos).name + local ret = true + for _,name in ipairs(underground) do + if nodename == name then + ret = false + break + end + end + pos.y = pos.y+1 + if not minetest.env:get_node_light(pos) then + return + end + if ret or minetest.env:get_node_light(pos) < 8 then + return + end + + node = {name = ""} + for dy=1,4 do + pos.y = pos.y+dy + if minetest.env:get_node(pos).name ~= "air" then + return + end + pos.y = pos.y-dy + end + node.name = trunk + for dy=0,4 do + pos.y = pos.y+dy + minetest.env:set_node(pos, node) + pos.y = pos.y-dy + end + + if not replacements then + replacements = {} + end + + node.name = leaves + pos.y = pos.y+3 + for dx=-2,2 do + for dz=-2,2 do + for dy=0,3 do + pos.x = pos.x+dx + pos.y = pos.y+dy + pos.z = pos.z+dz + + if dx == 0 and dz == 0 and dy==3 then + if minetest.env:get_node(pos).name == "air" and math.random(1, 5) <= 4 then + minetest.env:set_node(pos, node) + for name,rarity in pairs(replacements) do + if math.random(1, rarity) == 1 then + minetest.env:set_node(pos, {name=name}) + end + end + end + elseif dx == 0 and dz == 0 and dy==4 then + if minetest.env:get_node(pos).name == "air" and math.random(1, 5) <= 4 then + minetest.env:set_node(pos, node) + for name,rarity in pairs(replacements) do + if math.random(1, rarity) == 1 then + minetest.env:set_node(pos, {name=name}) + end + end + end + elseif math.abs(dx) ~= 2 and math.abs(dz) ~= 2 then + if minetest.env:get_node(pos).name == "air" then + minetest.env:set_node(pos, node) + for name,rarity in pairs(replacements) do + if math.random(1, rarity) == 1 then + minetest.env:set_node(pos, {name=name}) + end + end + end + else + if math.abs(dx) ~= 2 or math.abs(dz) ~= 2 then + if minetest.env:get_node(pos).name == "air" and math.random(1, 5) <= 4 then + minetest.env:set_node(pos, node) + for name,rarity in pairs(replacements) do + if math.random(1, rarity) == 1 then + minetest.env:set_node(pos, {name=name}) + end + end + end + end + end + + pos.x = pos.x-dx + pos.y = pos.y-dy + pos.z = pos.z-dz + end + end + end +end -minetest.register_craftitem("farming:bread", { - description = "Bread", - inventory_image = "farming_bread.png", - on_use = minetest.item_eat(5), - groups = {flammable = 2}, -}) +farming.seeds = { + ["farming:wheat_seed"]=20, + ["farming:cotton_seed"]=30, + ["farming:pumpkin_seed"]=60, +} -minetest.register_craft({ - type = "shapeless", - output = "farming:flour", - recipe = {"farming:wheat", "farming:wheat", "farming:wheat", "farming:wheat"} -}) +-- ========= ALIASES FOR FARMING MOD BY SAPIER ========= +-- hoes +minetest.register_alias("farming:wood_hoe", "farming:hoe_wood") +minetest.register_alias("farming:cobble_hoe", "farming:hoe_stone") +minetest.register_alias("farming:steel_hoe", "farming:hoe_steel") +minetest.register_alias("farming:mese_hoe", "farming:hoe_steel") -minetest.register_craft({ - type = "cooking", - cooktime = 15, - output = "farming:bread", - recipe = "farming:flour" -}) +-- wheat -> wheat +minetest.register_alias("farming:wheat_node", "farming:wheat") +--minetest.register_alias("farming:wheat", "farming_wheat_harvested") cant do this +minetest.register_alias("farming:wheat_straw", "farming:wheat") +minetest.register_alias("farming:seed_wheat", "farming:wheat_seed") +for lvl = 1, 6, 1 do + minetest.register_entity(":farming:wheat_lvl"..lvl, { + on_activate = function(self, staticdata) + minetest.env:set_node(self.object:getpos(), {name="farming:wheat_1"}) + end + }) +end --- Cotton -farming.register_plant("farming:cotton", { - description = "Cotton seed", - inventory_image = "farming_cotton_seed.png", - steps = 8, - minlight = 13, - maxlight = default.LIGHT_MAX, - fertility = {"grassland", "desert"}, - groups = {flammable = 4}, -}) +-- rye -> wheat +minetest.register_alias("farming:rhy_node", "farming:wheat") +minetest.register_alias("farming:rhy", "farming:wheat_harvested") +minetest.register_alias("farming:rhy_straw", "farming:wheat") +minetest.register_alias("farming:seed_rhy", "farming:wheat_seed") +for lvl = 1, 6, 1 do + minetest.register_entity(":farming:rhy_lvl"..lvl, { + on_activate = function(self, staticdata) + minetest.env:set_node(self.object:getpos(), {name="farming:wheat_1"}) + end + }) +end -minetest.register_alias("farming:string", "farming:cotton") +-- corn -> wheat +minetest.register_alias("farming:corn_node", "farming:wheat") +minetest.register_alias("farming:corn", "farming:wheat_harvested") +minetest.register_alias("farming:corn_straw", "farming:wheat") +minetest.register_alias("farming:seed_corn", "farming:wheat_seed") +for lvl = 1, 6, 1 do + minetest.register_entity(":farming:corn_lvl"..lvl, { + on_activate = function(self, staticdata) + minetest.env:set_node(self.object:getpos(), {name="farming:wheat_1"}) + end + }) +end -minetest.register_craft({ - output = "wool:white", - recipe = { - {"farming:cotton", "farming:cotton"}, - {"farming:cotton", "farming:cotton"}, - } -}) --- Straw -minetest.register_craft({ - output = "farming:straw 3", - recipe = { - {"farming:wheat", "farming:wheat", "farming:wheat"}, - {"farming:wheat", "farming:wheat", "farming:wheat"}, - {"farming:wheat", "farming:wheat", "farming:wheat"}, - } -}) +-- ========= SOIL ========= +dofile(minetest.get_modpath("farming").."/soil.lua") -minetest.register_craft({ - output = "farming:wheat 3", - recipe = { - {"farming:straw"}, - } -}) +-- ========= HOES ========= +dofile(minetest.get_modpath("farming").."/hoes.lua") --- Fuels -minetest.register_craft({ - type = "fuel", - recipe = "farming:straw", - burntime = 3, -}) +-- ========= CORN ========= +dofile(minetest.get_modpath("farming").."/wheat.lua") -minetest.register_craft({ - type = "fuel", - recipe = "farming:wheat", - burntime = 1, -}) +-- ========= COTTON ========= +dofile(minetest.get_modpath("farming").."/cotton.lua") -minetest.register_craft({ - type = "fuel", - recipe = "farming:cotton", - burntime = 1, -}) +-- ========= PUMPKIN ========= +--dofile(minetest.get_modpath("farming").."/pumpkin.lua") -minetest.register_craft({ - type = "fuel", - recipe = "farming:hoe_wood", - burntime = 5, -}) +-- ========= WEED ========= +dofile(minetest.get_modpath("farming").."/weed.lua") + +-- ========= PAPYRUS ========= +dofile(minetest.get_modpath("farming").."/papyrus.lua") + +-- ========= CACTUS ========= +dofile(minetest.get_modpath("farming").."/cactus.lua") + +if minetest.setting_get("log_mods") then + minetest.log("action", "farming loaded") +end diff --git a/mods/farming/papyrus.lua b/mods/farming/papyrus.lua new file mode 100644 index 0000000..d33e072 --- /dev/null +++ b/mods/farming/papyrus.lua @@ -0,0 +1,25 @@ +minetest.register_abm({ + nodenames = {"default:papyrus"}, + interval = 50, + chance = 20, + action = function(pos, node) + pos.y = pos.y-1 + local name = minetest.env:get_node(pos).name + if name == "default:dirt" or name == "default:dirt_with_grass" then + if minetest.env:find_node_near(pos, 3, {"default:water_source", "default:water_flowing"}) == nil then + return + end + pos.y = pos.y+1 + local height = 0 + while minetest.env:get_node(pos).name == "default:papyrus" do + height = height+1 + pos.y = pos.y+1 + end + if height < 4 then + if minetest.env:get_node(pos).name == "air" then + minetest.env:set_node(pos, node) + end + end + end + end +}) diff --git a/mods/farming/pumpkin.lua b/mods/farming/pumpkin.lua new file mode 100644 index 0000000..e622f6f --- /dev/null +++ b/mods/farming/pumpkin.lua @@ -0,0 +1,454 @@ +minetest.register_craftitem("farming:pumpkin_seed", { + description = "Pumpkin Seed", + inventory_image = "farming_pumpkin_seed.png", + on_place = function(itemstack, placer, pointed_thing) + local above = minetest.env:get_node(pointed_thing.above) + if above.name == "air" then + above.name = "farming:pumpkin_1" + minetest.env:set_node(pointed_thing.above, above) + itemstack:take_item(1) + return itemstack + end + end +}) + +minetest.register_node("farming:pumpkin_1", { + paramtype = "light", + sunlight_propagates = true, + drawtype = "nodebox", + drop = "", + tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png"}, + node_box = { + type = "fixed", + fixed = { + {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} + }, + }, + groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("farming:pumpkin_2", { + paramtype = "light", + sunlight_propagates = true, + drawtype = "nodebox", + drop = "", + tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png"}, + node_box = { + type = "fixed", + fixed = { + {-0.35, -0.5, -0.35, 0.35, 0.2, 0.35} + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.35, -0.5, -0.35, 0.35, 0.2, 0.35} + }, + }, + groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("farming:pumpkin", { + description = "Pumpkin", + paramtype2 = "facedir", + tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png"}, + groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2}, + sounds = default.node_sound_wood_defaults(), + + on_punch = function(pos, node, puncher) + local tool = puncher:get_wielded_item():get_name() + if tool and tool == "default:sword_wood" or tool == "default:sword_stone" or tool == "default:sword_steel" then + node.name = "farming:pumpkin_face" + minetest.env:set_node(pos, node) + puncher:get_inventory():add_item("main", ItemStack("farming:pumpkin_seed")) + if math.random(1, 5) == 1 then + puncher:get_inventory():add_item("main", ItemStack("farming:pumpkin_seed")) + end + end + end +}) + +farming:add_plant("farming:pumpkin", {"farming:pumpkin_1", "farming:pumpkin_2"}, 80, 20) + +minetest.register_node("farming:pumpkin_face", { + description = "Pumpkin", + paramtype2 = "facedir", + tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_face.png"}, + groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("farming:pumpkin_face_light", { + description = "Pumpkin", + paramtype2 = "facedir", + light_source = LIGHT_MAX-2, + tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_face_light.png"}, + groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + type = "shapeless", + output = "farming:pumpkin_face_light", + recipe = {"farming:pumpkin_face", "default:torch"} +}) + +-- ========= BIG PUMPKIN ========= +minetest.register_node("farming:big_pumpkin", { + description = "Big Pumpkin", + paramtype2 = "facedir", + tiles = {"farming_pumpkin_big_side.png"}, + selection_box = { + type = "fixed", + fixed = { + {-1, -0.5, -1, 1, 1.5, 1} + } + }, + groups = {choppy=1, oddly_breakable_by_hand=1, flammable=2}, + sounds = default.node_sound_wood_defaults(), + + after_place_node = function(pos, placer) + for dx=-1,1 do + for dy=0,1 do + for dz=-1,1 do + pos.x = pos.x+dx + pos.y = pos.y+dy + pos.z = pos.z+dz + if dx ~= 0 or dy ~= 0 or dz ~= 0 then + if minetest.env:get_node(pos).name ~= "air" then + pos.x = pos.x-dx + pos.y = pos.y-dy + pos.z = pos.z-dz + minetest.env:remove_node(pos) + minetest.after(0.1, function(placer) + local inv = placer:get_inventory() + local index = placer:get_wield_index() + inv:set_stack("main", index, ItemStack("farming:big_pumpkin")) + end, placer) + return + end + end + pos.x = pos.x-dx + pos.y = pos.y-dy + pos.z = pos.z-dz + end + end + end + for dy=0,1 do + pos.y = pos.y+dy + pos.z = pos.z+1 + minetest.env:set_node(pos, {name="farming:big_pumpkin_side", param2=2}) + pos.x = pos.x-1 + minetest.env:set_node(pos, {name="farming:big_pumpkin_corner", param2=2}) + pos.x = pos.x+1 + pos.z = pos.z-2 + minetest.env:set_node(pos, {name="farming:big_pumpkin_side", param2=4}) + pos.x = pos.x+1 + minetest.env:set_node(pos, {name="farming:big_pumpkin_corner", param2=4}) + pos.z = pos.z+1 + minetest.env:set_node(pos, {name="farming:big_pumpkin_side", param2=3}) + pos.z = pos.z+1 + minetest.env:set_node(pos, {name="farming:big_pumpkin_corner", param2=3}) + pos.z = pos.z-1 + pos.x = pos.x-2 + minetest.env:set_node(pos, {name="farming:big_pumpkin_side", param2=1}) + pos.z = pos.z-1 + minetest.env:set_node(pos, {name="farming:big_pumpkin_corner", param2=1}) + pos.z = pos.z+1 + pos.x = pos.x+1 + pos.y = pos.y-dy + end + pos.y = pos.y+1 + minetest.env:set_node(pos, {name="farming:big_pumpkin_top"}) + end, + + after_destruct = function(pos, oldnode) + for dx=-1,1 do + for dy=0,1 do + for dz=-1,1 do + pos.x = pos.x+dx + pos.y = pos.y+dy + pos.z = pos.z+dz + local name = minetest.env:get_node(pos).name + if string.find(name, "farming:big_pumpkin") then + minetest.env:remove_node(pos) + end + pos.x = pos.x-dx + pos.y = pos.y-dy + pos.z = pos.z-dz + end + end + end + end +}) + +minetest.register_node("farming:big_pumpkin_side", { + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + tiles = {"farming_pumpkin_big_top_side.png", "farming_pumpkin_big_side.png"}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0, 0.5, 0.5, 0.5} + } + }, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0} + } + }, + groups = {not_in_creative_inventory=1}, +}) +minetest.register_node("farming:big_pumpkin_corner", { + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + tiles = {"farming_pumpkin_big_top_corner.png", "farming_pumpkin_big_side.png"}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0, 0, 0.5, 0.5} + } + }, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0} + } + }, + groups = {not_in_creative_inventory=1}, +}) + +minetest.register_node("farming:big_pumpkin_top", { + paramtype = "light", + sunlight_propagates = true, + tiles = {"farming_pumpkin_big_top.png"}, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0} + } + }, + groups = {not_in_creative_inventory=1}, +}) + +minetest.register_craft({ + type = "shapeless", + output = "farming:big_pumpkin", + recipe = {"bucket:bucket_water", "farming:pumpkin"}, + replacements = { + {"bucket:bucket_water", "bucket:bucket_empty"} + } +}) + +-- ========= SCARECROW ========= +local box1 = { + {-1, -8, -1, 1, 8, 1}, +} + +local box2 = { + {-1, -8, -1, 1, 8, 1}, + {-12, -8, -1, 12, -7, 1}, + {-5, -2, -5, 5, 8, 5} +} + +for j,list in ipairs(box1) do + for i,int in ipairs(list) do + list[i] = int/16 + end + box1[j] = list +end + +for j,list in ipairs(box2) do + for i,int in ipairs(list) do + list[i] = int/16 + end + box2[j] = list +end + +minetest.register_node("farming:scarecrow", { + description = "Scarecrow", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + tiles = {"farming_scarecrow_top.png", "farming_scarecrow_top.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_front.png"}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = box2 + }, + selection_box = { + type = "fixed", + fixed = { + {-12/16, -1.5, -0.5, 12/16, 0.5, 0.5} + } + }, + groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2}, + + after_place_node = function(pos, placer) + local node = minetest.env:get_node(pos) + local param2 = node.param2 + pos.y = pos.y+1 + if minetest.env:get_node(pos).name ~= "air" then + pos.y = pos.y-1 + minetest.env:remove_node(pos) + minetest.after(0.1, function(placer) + local inv = placer:get_inventory() + local index = placer:get_wield_index() + inv:set_stack("main", index, ItemStack("farming:scarecrow")) + end, placer) + return + end + minetest.env:set_node(pos, node) + pos.y = pos.y-1 + node.name = "farming:scarecrow_bottom" + minetest.env:set_node(pos, node) + end, + + after_destruct = function(pos, oldnode) + pos.y = pos.y-1 + if minetest.env:get_node(pos).name == "farming:scarecrow_bottom" then + minetest.env:remove_node(pos) + end + end +}) + +minetest.register_node("farming:scarecrow_bottom", { + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + tiles = {"default_wood.png"}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = box1 + }, + groups = {not_in_creative_inventory=1}, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0} + } + } +}) + +minetest.register_craft({ + output = "farming:scarecrow", + recipe = { + {"", "farming:pumpkin_face", "",}, + {"default:stick", "default:stick", "default:stick",}, + {"", "default:stick", "",} + } +}) + +minetest.register_node("farming:scarecrow_light", { + description = "Scarecrow", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + light_source = LIGHT_MAX-2, + tiles = {"farming_scarecrow_top.png", "farming_scarecrow_top.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_front_light.png"}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = box2 + }, + selection_box = { + type = "fixed", + fixed = { + {-12/16, -1.5, -0.5, 12/16, 0.5, 0.5} + } + }, + groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2}, + + after_place_node = function(pos, placer) + local node = minetest.env:get_node(pos) + local param2 = node.param2 + pos.y = pos.y+1 + if minetest.env:get_node(pos).name ~= "air" then + pos.y = pos.y-1 + minetest.env:remove_node(pos) + minetest.after(0.1, function(placer) + local inv = placer:get_inventory() + local index = placer:get_wield_index() + inv:set_stack("main", index, ItemStack("farming:scarecrow_light")) + end, placer) + return + end + minetest.env:set_node(pos, node) + pos.y = pos.y-1 + node.name = "farming:scarecrow_bottom" + minetest.env:set_node(pos, node) + end, + + after_destruct = function(pos, oldnode) + pos.y = pos.y-1 + if minetest.env:get_node(pos).name == "farming:scarecrow_bottom" then + minetest.env:remove_node(pos) + end + end +}) + +minetest.register_craft({ + output = "farming:scarecrow_light", + recipe = { + {"", "farming:pumpkin_face_light", "",}, + {"default:stick", "default:stick", "default:stick",}, + {"", "default:stick", "",} + } +}) + +-- ========= FUEL ========= +minetest.register_craft({ + type = "fuel", + recipe = "farming:pumpkin_seed", + burntime = 1 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:pumpkin", + burntime = 5 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:pumpkin_face", + burntime = 5 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:pumpkin_face_light", + burntime = 7 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:big_pumpkin", + burntime = 10 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:scarecrow", + burntime = 5 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:scarecrow_light", + burntime = 5 +}) diff --git a/mods/farming/soil.lua b/mods/farming/soil.lua new file mode 100644 index 0000000..f800335 --- /dev/null +++ b/mods/farming/soil.lua @@ -0,0 +1,45 @@ +minetest.register_node("farming:soil", { + tiles = {"farming_soil.png", "default_dirt.png", "default_dirt.png", "default_dirt.png", "default_dirt.png", "default_dirt.png"}, + drop = "default:dirt", + groups = {crumbly=3, not_in_creative_inventory=1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_grass_footstep", gain=0.4}, + }), +}) + +minetest.register_node("farming:soil_wet", { + tiles = {"farming_soil_wet.png", "farming_soil_wet_side.png", "farming_soil_wet_side.png", "farming_soil_wet_side.png", "farming_soil_wet_side.png", "farming_soil_wet_side.png"}, + drop = "default:dirt", + groups = {crumbly=3, not_in_creative_inventory=1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_grass_footstep", gain=0.4}, + }), +}) + +minetest.register_abm({ + nodenames = {"farming:soil"}, + interval = 15, + chance = 3, + action = function(pos, node) + if minetest.env:find_node_near(pos, 4, {"default:water_source", "default:water_flowing"}) then + node.name = "farming:soil_wet" + minetest.env:set_node(pos, node) + end + end, +}) + +-- ========= EXPERIMENTAL ========= +-- This will turn soil to dirt when walking over it +--[[minetest.register_abm({ + nodenames = {"farming:soil", "farming:soil_wet"}, + interval = 2, + chance = 2, + action = function(pos, node) + pos.y = pos.y+1 + if #(minetest.env:get_objects_inside_radius(pos, 0.8)) > 0 then + pos.y = pos.y-1 + node.name = "default:dirt" + minetest.env:set_node(pos, node) + end + end, +})]] diff --git a/mods/farming/textures/farming_bread.png b/mods/farming/textures/farming_bread.png index 0c25678..b4d73e6 100644 Binary files a/mods/farming/textures/farming_bread.png and b/mods/farming/textures/farming_bread.png differ diff --git a/mods/farming/textures/farming_bread_pumpkin.png b/mods/farming/textures/farming_bread_pumpkin.png new file mode 100644 index 0000000..44db02e Binary files /dev/null and b/mods/farming/textures/farming_bread_pumpkin.png differ diff --git a/mods/farming/textures/farming_cake_mix.png b/mods/farming/textures/farming_cake_mix.png new file mode 100644 index 0000000..c5cf8f0 Binary files /dev/null and b/mods/farming/textures/farming_cake_mix.png differ diff --git a/mods/farming/textures/farming_cake_mix_pumpkin.png b/mods/farming/textures/farming_cake_mix_pumpkin.png new file mode 100644 index 0000000..171e486 Binary files /dev/null and b/mods/farming/textures/farming_cake_mix_pumpkin.png differ diff --git a/mods/farming/textures/farming_cotton.png b/mods/farming/textures/farming_cotton.png index e2bbfd7..c1c8c49 100644 Binary files a/mods/farming/textures/farming_cotton.png and b/mods/farming/textures/farming_cotton.png differ diff --git a/mods/farming/textures/farming_cotton_1.png b/mods/farming/textures/farming_cotton_1.png index 5fc2180..affff03 100644 Binary files a/mods/farming/textures/farming_cotton_1.png and b/mods/farming/textures/farming_cotton_1.png differ diff --git a/mods/farming/textures/farming_cotton_2.png b/mods/farming/textures/farming_cotton_2.png index db4f4a3..2bfdbd1 100644 Binary files a/mods/farming/textures/farming_cotton_2.png and b/mods/farming/textures/farming_cotton_2.png differ diff --git a/mods/farming/textures/farming_cotton_seed.png b/mods/farming/textures/farming_cotton_seed.png index f1d5b8a..f2145dc 100644 Binary files a/mods/farming/textures/farming_cotton_seed.png and b/mods/farming/textures/farming_cotton_seed.png differ diff --git a/mods/farming/textures/farming_flour.png b/mods/farming/textures/farming_flour.png index b1a9783..c9788bd 100644 Binary files a/mods/farming/textures/farming_flour.png and b/mods/farming/textures/farming_flour.png differ diff --git a/mods/farming/textures/farming_hoe_steel.png b/mods/farming/textures/farming_hoe_steel.png new file mode 100644 index 0000000..5352ca2 Binary files /dev/null and b/mods/farming/textures/farming_hoe_steel.png differ diff --git a/mods/farming/textures/farming_hoe_stone.png b/mods/farming/textures/farming_hoe_stone.png new file mode 100644 index 0000000..b2ce172 Binary files /dev/null and b/mods/farming/textures/farming_hoe_stone.png differ diff --git a/mods/farming/textures/farming_hoe_wood.png b/mods/farming/textures/farming_hoe_wood.png new file mode 100644 index 0000000..af7a89e Binary files /dev/null and b/mods/farming/textures/farming_hoe_wood.png differ diff --git a/mods/farming/textures/farming_pumpkin_big_side.png b/mods/farming/textures/farming_pumpkin_big_side.png new file mode 100644 index 0000000..2651380 Binary files /dev/null and b/mods/farming/textures/farming_pumpkin_big_side.png differ diff --git a/mods/farming/textures/farming_pumpkin_big_top.png b/mods/farming/textures/farming_pumpkin_big_top.png new file mode 100644 index 0000000..581accc Binary files /dev/null and b/mods/farming/textures/farming_pumpkin_big_top.png differ diff --git a/mods/farming/textures/farming_pumpkin_big_top_corner.png b/mods/farming/textures/farming_pumpkin_big_top_corner.png new file mode 100644 index 0000000..ab1de28 Binary files /dev/null and b/mods/farming/textures/farming_pumpkin_big_top_corner.png differ diff --git a/mods/farming/textures/farming_pumpkin_big_top_side.png b/mods/farming/textures/farming_pumpkin_big_top_side.png new file mode 100644 index 0000000..e2eb1a7 Binary files /dev/null and b/mods/farming/textures/farming_pumpkin_big_top_side.png differ diff --git a/mods/farming/textures/farming_pumpkin_face.png b/mods/farming/textures/farming_pumpkin_face.png new file mode 100644 index 0000000..90c0f8a Binary files /dev/null and b/mods/farming/textures/farming_pumpkin_face.png differ diff --git a/mods/farming/textures/farming_pumpkin_face_light.png b/mods/farming/textures/farming_pumpkin_face_light.png new file mode 100644 index 0000000..cef4866 Binary files /dev/null and b/mods/farming/textures/farming_pumpkin_face_light.png differ diff --git a/mods/farming/textures/farming_pumpkin_seed.png b/mods/farming/textures/farming_pumpkin_seed.png new file mode 100644 index 0000000..6933bc3 Binary files /dev/null and b/mods/farming/textures/farming_pumpkin_seed.png differ diff --git a/mods/farming/textures/farming_pumpkin_side.png b/mods/farming/textures/farming_pumpkin_side.png new file mode 100644 index 0000000..3a3f9da Binary files /dev/null and b/mods/farming/textures/farming_pumpkin_side.png differ diff --git a/mods/farming/textures/farming_pumpkin_top.png b/mods/farming/textures/farming_pumpkin_top.png new file mode 100644 index 0000000..edef2d9 Binary files /dev/null and b/mods/farming/textures/farming_pumpkin_top.png differ diff --git a/mods/farming/textures/farming_scarecrow_front.png b/mods/farming/textures/farming_scarecrow_front.png new file mode 100644 index 0000000..364738f Binary files /dev/null and b/mods/farming/textures/farming_scarecrow_front.png differ diff --git a/mods/farming/textures/farming_scarecrow_front_light.png b/mods/farming/textures/farming_scarecrow_front_light.png new file mode 100644 index 0000000..b4b3cf2 Binary files /dev/null and b/mods/farming/textures/farming_scarecrow_front_light.png differ diff --git a/mods/farming/textures/farming_scarecrow_side.png b/mods/farming/textures/farming_scarecrow_side.png new file mode 100644 index 0000000..e22e84b Binary files /dev/null and b/mods/farming/textures/farming_scarecrow_side.png differ diff --git a/mods/farming/textures/farming_scarecrow_top.png b/mods/farming/textures/farming_scarecrow_top.png new file mode 100644 index 0000000..3a4addc Binary files /dev/null and b/mods/farming/textures/farming_scarecrow_top.png differ diff --git a/mods/farming/textures/farming_soil.png b/mods/farming/textures/farming_soil.png index 5cd3e68..fb00d9d 100644 Binary files a/mods/farming/textures/farming_soil.png and b/mods/farming/textures/farming_soil.png differ diff --git a/mods/farming/textures/farming_soil_wet.png b/mods/farming/textures/farming_soil_wet.png index 0b4487d..798c8de 100644 Binary files a/mods/farming/textures/farming_soil_wet.png and b/mods/farming/textures/farming_soil_wet.png differ diff --git a/mods/farming/textures/farming_soil_wet_side.png b/mods/farming/textures/farming_soil_wet_side.png index f0b1bd4..d69e08b 100644 Binary files a/mods/farming/textures/farming_soil_wet_side.png and b/mods/farming/textures/farming_soil_wet_side.png differ diff --git a/mods/farming/textures/farming_string.png b/mods/farming/textures/farming_string.png new file mode 100644 index 0000000..7f848bf Binary files /dev/null and b/mods/farming/textures/farming_string.png differ diff --git a/mods/farming/textures/farming_weed.png b/mods/farming/textures/farming_weed.png new file mode 100644 index 0000000..0d18bcf Binary files /dev/null and b/mods/farming/textures/farming_weed.png differ diff --git a/mods/farming/textures/farming_wheat.png b/mods/farming/textures/farming_wheat.png index 1e0ad3b..3d4f323 100644 Binary files a/mods/farming/textures/farming_wheat.png and b/mods/farming/textures/farming_wheat.png differ diff --git a/mods/farming/textures/farming_wheat_1.png b/mods/farming/textures/farming_wheat_1.png index c16ad94..007ecf3 100644 Binary files a/mods/farming/textures/farming_wheat_1.png and b/mods/farming/textures/farming_wheat_1.png differ diff --git a/mods/farming/textures/farming_wheat_2.png b/mods/farming/textures/farming_wheat_2.png index baddb4c..dd6ad4c 100644 Binary files a/mods/farming/textures/farming_wheat_2.png and b/mods/farming/textures/farming_wheat_2.png differ diff --git a/mods/farming/textures/farming_wheat_3.png b/mods/farming/textures/farming_wheat_3.png index 36ebb19..b0b98e9 100644 Binary files a/mods/farming/textures/farming_wheat_3.png and b/mods/farming/textures/farming_wheat_3.png differ diff --git a/mods/farming/textures/farming_wheat_4.png b/mods/farming/textures/farming_wheat_4.png index 735ed77..80b98aa 100644 Binary files a/mods/farming/textures/farming_wheat_4.png and b/mods/farming/textures/farming_wheat_4.png differ diff --git a/mods/farming/textures/farming_wheat_5.png b/mods/farming/textures/farming_wheat_5.png index f40b5f0..1023f0c 100644 Binary files a/mods/farming/textures/farming_wheat_5.png and b/mods/farming/textures/farming_wheat_5.png differ diff --git a/mods/farming/textures/farming_wheat_6.png b/mods/farming/textures/farming_wheat_6.png index e9c78e0..591c138 100644 Binary files a/mods/farming/textures/farming_wheat_6.png and b/mods/farming/textures/farming_wheat_6.png differ diff --git a/mods/farming/textures/farming_wheat_7.png b/mods/farming/textures/farming_wheat_7.png index cc26ca9..98bc60a 100644 Binary files a/mods/farming/textures/farming_wheat_7.png and b/mods/farming/textures/farming_wheat_7.png differ diff --git a/mods/farming/textures/farming_wheat_8.png b/mods/farming/textures/farming_wheat_8.png index d050093..44bc532 100644 Binary files a/mods/farming/textures/farming_wheat_8.png and b/mods/farming/textures/farming_wheat_8.png differ diff --git a/mods/farming/textures/farming_wheat_harvested.png b/mods/farming/textures/farming_wheat_harvested.png new file mode 100644 index 0000000..ec523fd Binary files /dev/null and b/mods/farming/textures/farming_wheat_harvested.png differ diff --git a/mods/farming/textures/farming_wheat_seed.png b/mods/farming/textures/farming_wheat_seed.png index a9031fb..183e982 100644 Binary files a/mods/farming/textures/farming_wheat_seed.png and b/mods/farming/textures/farming_wheat_seed.png differ diff --git a/mods/farming/weed.lua b/mods/farming/weed.lua new file mode 100644 index 0000000..203709d --- /dev/null +++ b/mods/farming/weed.lua @@ -0,0 +1,40 @@ +minetest.register_node("farming:weed", { + description = "Weed", + drawtype = "raillike", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + tiles = {"farming_weed.png"}, + inventory_image = "farming_weed.png", + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.5, 0.5} + }, + }, + groups = {snappy=3, flammable=2, attached_node=1}, + sounds = default.node_sound_leaves_defaults() +}) + +minetest.register_abm({ + nodenames = {"farming:soil_wet", "farming:soil"}, + interval = 50, + chance = 10, + action = function(pos, node) + if minetest.env:find_node_near(pos, 4, {"farming:scarecrow", "farming:scarecrow_light"}) ~= nil then + return + end + pos.y = pos.y+1 + if minetest.env:get_node(pos).name == "air" then + node.name = "farming:weed" + minetest.env:set_node(pos, node) + end + end +}) + +-- ========= FUEL ========= +minetest.register_craft({ + type = "fuel", + recipe = "farming:weed", + burntime = 1 +}) diff --git a/mods/farming/wheat.lua b/mods/farming/wheat.lua new file mode 100644 index 0000000..1e3c442 --- /dev/null +++ b/mods/farming/wheat.lua @@ -0,0 +1,175 @@ +minetest.register_craftitem("farming:wheat_seed", { + description = "Wheat Seeds", + inventory_image = "farming_wheat_seed.png", + on_place = function(itemstack, placer, pointed_thing) + local above = minetest.env:get_node(pointed_thing.above) + if above.name == "air" then + above.name = "farming:wheat_1" + minetest.env:set_node(pointed_thing.above, above) + itemstack:take_item(1) + return itemstack + end + end +}) + +minetest.register_node("farming:wheat_1", { + paramtype = "light", + sunlight_propagates = true, + walkable = false, + drawtype = "raillike", + drop = "", + tiles = {"farming_wheat_seed.png"}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.5, 0.5} + }, + }, + groups = {snappy=3, flammable=2, not_in_creative_inventory=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("farming:wheat_2", { + sunlight_propagates = true, + paramtype = "light", + walkable = false, + drawtype = "nodebox", + drop = "", + tiles = {"farming_wheat_2.png"}, + node_box = { + type = "fixed", + fixed = {{-1.5/5, -2.5/5, -1.5/5, -0.5/5, -0.5/5, -0.5/5},{0.5/5, -2.5/5, 0.5/5, 1.5/5, -0.5/5, 1.5/5},{0.5/5, -2.5/5, -1.5/5, 1.5/5, 0.5/5, -0.5/5},{-1.5/5, -2.5/5, 0.5/5, -0.5/5, 0.5/5, 1.5/5},}, + }, + groups = {snappy=3, flammable=2, not_in_creative_inventory=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("farming:wheat_3", { + sunlight_propagates = true, + paramtype = "light", + walkable = false, + drawtype = "nodebox", + drop = "", + tiles = {"farming_wheat_3.png"}, + node_box = { + type = "fixed", + fixed = {{-1.5/5, -2.5/5, -1.5/5, -0.5/5, 1.5/5, -0.5/5},{0.5/5, -2.5/5, -1.5/5, 1.5/5, 2.5/5, -0.5/5},{0.5/5, -2.5/5, 0.5/5, 1.5/5, 1.5/5, 1.5/5},{-1.5/5, -2.5/5, 0.5/5, -0.5/5, 2.5/5, 1.5/5}}, + }, + groups = {snappy=3, flammable=2, not_in_creative_inventory=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("farming:wheat", { + sunlight_propagates = true, + paramtype = "light", + walkable = false, + drawtype = "nodebox", + tiles = {"farming_wheat.png"}, + drop = { + max_items = 4, + items = { + { items = {'farming:wheat_seed'} }, + { items = {'farming:wheat_seed'}, rarity = 2}, + { items = {'farming:wheat_seed'}, rarity = 5}, + { items = {'farming:wheat_harvested'} } + } + }, + node_box = { + type = "fixed", + fixed = {{-1.5/5, -2.5/5, -1.5/5, -0.5/5, 2.5/5, -0.5/5},{0.5/5, -2.5/5, -1.5/5, 1.5/5, 2.5/5, -0.5/5},{0.5/5, -2.5/5, 0.5/5, 1.5/5, 2.5/5, 1.5/5},{-1.5/5, -2.5/5, 0.5/5, -0.5/5, 2.5/5, 1.5/5},}, + }, + groups = {snappy=3, flammable=2, not_in_creative_inventory=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +farming:add_plant("farming:wheat", {"farming:wheat_1", "farming:wheat_2", "farming:wheat_3"}, 50, 20) + +minetest.register_craftitem("farming:wheat_harvested", { + description = "Harvested Wheat", + inventory_image = "farming_wheat_harvested.png", +}) + +minetest.register_craft({ + output = "farming:flour", + recipe = { + {"farming:wheat_harvested", } + } +}) + +minetest.register_craftitem("farming:flour", { + description = "Flour", + inventory_image = "farming_flour.png", +}) + +minetest.register_craft({ + output = "farming:dough", + type = "shapeless", + recipe = {"farming:flour", "farming:flour", "farming:flour", "farming:flour", "bucket:bucket_water"}, + replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}} +}) + +minetest.register_alias("farming:cake_mix","farming:dough") + +minetest.register_craftitem("farming:dough", { + description = "Bread Dough", + inventory_image = "farming_cake_mix.png", +}) + +minetest.register_craft({ + type = "cooking", + output = "farming:bread", + recipe = "farming:dough", + cooktime = 10 +}) + +minetest.register_craftitem("farming:bread", { + description = "Bread", + inventory_image = "farming_bread.png", + groups = {food=2}, + on_use = minetest.item_eat(10) +}) + +minetest.register_craftitem("farming:pumpkin_bread", { + description = "Pumpkin Bread", + inventory_image = "farming_bread_pumpkin.png", + stack_max = 1, + on_use = minetest.item_eat(20) +}) + +minetest.register_craftitem("farming:pumpkin_cake_mix", { + description = "Pumpkin Cake Mix", + inventory_image = "farming_cake_mix_pumpkin.png", +}) + +minetest.register_craft({ + output = "farming:pumpkin_cake_mix", + type = "shapeless", + recipe = {"farming:cake_mix", "farming:pumpkin"} +}) + +minetest.register_craft({ + type = "cooking", + output = "farming:pumpkin_bread", + recipe = "farming:pumpkin_cake_mix", + cooktime = 10 +}) + +minetest.register_alias("farming:corn_seed", "farming:wheat_seed") +minetest.register_alias("farming:corn_1", "farming:wheat_1") +minetest.register_alias("farming:corn_2", "farming:wheat_2") +minetest.register_alias("farming:corn_3", "farming:wheat_3") +minetest.register_alias("farming:corn", "farming:wheat") +minetest.register_alias("farming:corn_harvested", "farming:wheat_harvested") + +-- ========= FUEL ========= +minetest.register_craft({ + type = "fuel", + recipe = "farming:wheat_seed", + burntime = 1 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:wheat_harvested", + burntime = 2 +}) diff --git a/mods/fences/README.txt b/mods/fences/README.txt new file mode 100644 index 0000000..688cea6 --- /dev/null +++ b/mods/fences/README.txt @@ -0,0 +1,7 @@ +Fences +===================================================================== +Main: BlockMen +Lisc: WTFPL v2 +Text: CC0 + By Tirifto +Link: https://forum.minetest.net/viewtopic.php?f=11&t=5016 diff --git a/mods/fences/README.txt.diff b/mods/fences/README.txt.diff new file mode 100644 index 0000000..c01d938 --- /dev/null +++ b/mods/fences/README.txt.diff @@ -0,0 +1,37 @@ +1,27c1,7 +< Minetest mod "Fences" +< ======================= +< version: 1.0 +< +< License of source code and textures: +< ------------------------------------ +< Written 2013 by BlockMen +< +< This program is free software. It comes without any warranty, to +< the extent permitted by applicable law. You can redistribute it +< and/or modify it under the terms of the Do What The Fuck You Want +< To Public License, Version 2, as published by Sam Hocevar. See +< http://sam.zoy.org/wtfpl/COPYING for more details. +< +< +< +< +< +< --USING the mod-- +< +< This mod "overrides" the recipe for the default fence, so if you want craft a fance, it crafts THIS fence. +< +< If you want replace already placed default fences open the "init.lua" (in this directory) and change +< the first line to "local override_original = true". Then all placed default fences will be replaced with +< this fence. +< +< It is not possible to jump over the Fence or the closed Fencegate. Only exception is when you "sneak" and "jump". +\ No newline at end of file +--- +> Fences +> ===================================================================== +> Main: BlockMen +> Lisc: WTFPL v2 +> Text: CC0 +> By Tirifto +> Link: https://forum.minetest.net/viewtopic.php?f=11&t=5016 diff --git a/mods/fences/depends.txt b/mods/fences/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/fences/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/fences/init.lua b/mods/fences/init.lua new file mode 100644 index 0000000..6e11def --- /dev/null +++ b/mods/fences/init.lua @@ -0,0 +1,698 @@ +local override_original = false --change to "true" if you want original and placed fences replaced + +local function dockable(nodename) + if nodename == "default:wood" or nodename == "default:brick" or nodename == "default:cobble" or nodename == "default:dirt" or nodename == "default:sandstone" or nodename == "default:stone" or string.find(nodename, "fences:fence_wood") or string.find(nodename, "fences:fencegate") then + return true + end +end + + +local function find_dock(pos, second) + if pos == nil then + return false + end + + local h1 = minetest.env:get_node({x=pos.x+1, y=pos.y, z=pos.z}) + local v1 = minetest.env:get_node({x=pos.x-1, y=pos.y, z=pos.z}) + local r1 = minetest.env:get_node({x=pos.x, y=pos.y, z=pos.z+1}) + local l1 = minetest.env:get_node({x=pos.x, y=pos.y, z=pos.z-1}) + local code = 0 + if dockable(l1.name) then + code = code+1 + if second < 2 then + minetest.env:punch_node({x=pos.x, y=pos.y, z=pos.z-1}) + end + end + if dockable(r1.name) then + code = code+2 + if second < 2 then + minetest.env:punch_node({x=pos.x, y=pos.y, z=pos.z+1}) + end + end + if dockable(v1.name) then + code = code+11 + if second < 2 then + minetest.env:punch_node({x=pos.x-1, y=pos.y, z=pos.z}) + end + end + if dockable(h1.name) then + code = code+21 + if second < 2 then + minetest.env:punch_node({x=pos.x+1, y=pos.y, z=pos.z}) + end + end + local me = minetest.env:get_node(pos) + if code > 0 then + local tmp_name = "fences:fence_wood_"..code + --minetest.chat_send_all(tmp_name) + local tmp_node = {name=tmp_name, param1=me.param1, param2=me.param2} + if second > 0 then + local tmp_node = {name=tmp_name, param1=me.param1, param2=me.param2} + minetest.env:set_node(pos, tmp_node) + end + elseif code == 0 then + if second == 2 then + local tmp_node = {name="fences:fence_wood", param1=me.param1, param2=me.param2} + minetest.env:set_node(pos, tmp_node) + end + end + +end + +local function punch(pos, puncher) + if not puncher ~= '' then + find_dock(pos, 2) + elseif not puncher:is_player() then + find_dock(pos, 2) + end +end + + +local p0 = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16} +local p1 = {-2/16, 1/2, -2/16, -2/16, 1/2+8/16, -2/16} +local p2 = {-2/16, 1/2, 2/16, -2/16, 1/2+8/16, 2/16} +local p4 = {2/16, 1/2, -2/16, 2/16, 1/2+8/16, -2/16} +local p5 = {2/16, 1/2, 2/16, 2/16, 1/2+8/16, 2/16} + +local x1 = {-2/16, 1/2-4/16, 1/16, -1/2, 1/2-1/16, -1/16} --oben(quer) -x +local x12 = {-2/16, -1/2+6/16, 1/16, -1/2, -1/2+9/16, -1/16} --unten(quer) -x +local x2 = {2/16, 1/2-4/16, -1/16, 1/2, 1/2-1/16, 1/16} --oben(quer) x +local x22 = {2/16, -1/2+6/16, -1/16, 1/2, -1/2+9/16, 1/16} --unten(quer) x +local z1 = {1/16, 1/2-4/16, -2/16, -1/16, 1/2-1/16, -1/2} --oben(quer) -z +local z12 = {1/16, -1/2+6/16, -2/16, -1/16, -1/2+9/16, -1/2} --unten(quer) -z +local z2 = {-1/16, 1/2-4/16, 2/16, 1/16, 1/2-1/16, 1/2} --oben(quer) z +local z22 = {-1/16, -1/2+6/16, 2/16, 1/16, -1/2+9/16, 1/2} --unten(quer) z + +local bz1 = {1/16, 1/2-1/16, -6/16, 1/16, 1/2+8/16, -6/16} --oben_block(quer) -z 1seite +local bz11 = {-1/16, 1/2-1/16, -6/16, -1/16, 1/2+8/16, -6/16} --oben_block(quer) -z 2seite +local bz2 = {1/16, 1/2-1/16, 5/16, 1/16, 1/2+8/16, 5/16} --oben_block(quer) z 1seite +local bz21 = {-1/16, 1/2-1/16, 5/16, -1/16, 1/2+8/16, 5/16} --oben_block(quer) z 2seite + +local bx1 = {-6/16, 1/2-1/16, 1/16, -6/16, 1/2+8/16, 1/16} --oben_block(quer) -x 1seite +local bx11 = {-6/16, 1/2-1/16, -1/16, -6/16, 1/2+8/16, -1/16} --oben_block(quer) -x 2seite +local bx2 = {5/16, 1/2-1/16, 1/16, 5/16, 1/2+8/16, 1/16} --oben_block(quer) x 1seite +local bx21 = {5/16, 1/2-1/16, -1/16, 5/16, 1/2+8/16, -1/16} --oben_block(quer) x 2seite + + +minetest.register_node("fences:fence_wood", { + description = "Wooden Fence", + tiles = {"default_wood.png"}, + inventory_image = "default_fence.png", + wield_image = "default_fence.png", + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = {p0,p1,p2,p3,p4,p5,} + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_construct = function(pos) + find_dock(pos, 1) + end, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + + + +--different fence types- (1=left,2=right,3=top,4=bottom) + +minetest.register_node("fences:fence_wood_1", { + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + z1,z12, + bz1,bz11, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fence_wood_2", { + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + z2,z22, + bz2,bz21, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fence_wood_3", { --left+right(3) + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + z1,z12,z2,z22, + bz1,bz11,bz2,bz21, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fence_wood_11", { --top + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + x1,x12, + bx1,bx11, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fence_wood_21", { --bottom + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + x2,x22, + bx2,bx21, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + + +minetest.register_node("fences:fence_wood_32", { --top+bottom(32) + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + x1,x12,x2,x22, + bx1,bx11,bx2,bx21, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fence_wood_14", { --left+right(3)+ top(11) =14 + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + z1,z12,z2,z22,x1,x12, + bz1,bz11,bz2,bz21,bx1,bx11, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fence_wood_24", { --left+right(3)+ bottom(21) =24 + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + z1,z12,z2,z22,x2,x22, + bz1,bz11,bz2,bz21,bx2,bx21, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fence_wood_35", { --left+right(3)+top+bottom(32) = 35 + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + x1,x12,x2,x22,z1,z12,z2,z22, + bz1,bz11,bz2,bz21,bx1,bx11,bx2,bx21, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fence_wood_12", { --left(1)+top(11)=12 + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + z1,z12,x1,x12, + bz1,bz11,bx1,bx11, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fence_wood_22", { --left(1)+bottom(21)=22 + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + z1,z12,x2,x22, + bz1,bz11,bx2,bx21, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fence_wood_33", { --left(1)+top+bottom(32)=33 + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + z1,z12,x1,x12,x2,x21, + bz1,bz11,bx1,bx11,bx2,bx21, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fence_wood_34", { --right(2)+top+bottom(32)=34 + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + z2,z22,x1,x12,x2,x22, + bz2,bz21,bx1,bx11,bx2,bx21, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fence_wood_23", { --right(2)+bottom(21)=23 + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + z2,z22,x2,x22, + bz2,bz21,bx2,bx21, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fence_wood_13", { --right(2)+top(11)=13 + tiles = {"default_wood.png"}, + paramtype = "light", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fence_wood', + sunlight_propagates = true, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + p0,p1,p2,p3,p4,p5, + z2,z22,x1,x12, + bz1,bz11,bx1,bx11, + } + }, + selection_box = { + type = "fixed", + fixed = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}, + }, + on_punch = function(pos, puncher) + punch(pos, puncher) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + + + +minetest.register_craft({ + output = 'fences:fence_wood 2', + recipe = { + {'default:stick', 'default:stick', 'default:stick'}, + {'default:stick', 'default:stick', 'default:stick'}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = 'fences:fencegate', + recipe = { + {'default:stick', 'default:wood', 'default:stick'}, + {'default:stick', 'default:wood', 'default:stick'}, + {'', '', ''}, + } +}) + + + + +local meta2 +local state2 = 0 + +local function update_gate(pos, node) + minetest.env:set_node(pos, node) +end + +local function punch_gate(pos, node) + meta2 = minetest.env:get_meta(pos) + state2 = meta2:get_int("state") + local tmp_node2 + if state2 == 1 then + state2 = 0 + minetest.sound_play("door_close", {gain = 0.3, max_hear_distance = 10}) + tmp_node2 = {name="fences:fencegate", param1=node.param1, param2=node.param2} + else + state2 = 1 + minetest.sound_play("door_open", {gain = 0.3, max_hear_distance = 10}) + tmp_node2 = {name="fences:fencegate_open", param1=node.param1, param2=node.param2} + end + update_gate(pos, tmp_node2) + meta2:set_int("state", state2) +end + +minetest.register_node("fences:fencegate_open", { + tiles = {"default_wood.png"}, + inventory_image = "default_fence.png", + wield_image = "default_fence.png", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + walkable = true, + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1,not_in_inventory=1}, + drop = 'fences:fencegate', + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-1/2, -1/2+5/16, -1/16, -1/2+2/16, 1/2, 1/16}, --links abschluss + {1/2-2/16, -1/2+5/16, -1/16, 1/2, 1/2, 1/16}, --rechts abschluss + {-1/2, 1/2-4/16, 1/16, -1/2+2/16, 1/2-1/16, 1/2-2/16}, --oben-links(quer) x + {-1/2, -1/2+6/16, 1/16, -1/2+2/16, -1/2+9/16, 1/2-2/16}, --unten-links(quer) x + {1/2-2/16, 1/2-4/16, 1/16, 1/2, 1/2-1/16, 1/2}, --oben-rechts(quer) x + {1/2-2/16, -1/2+6/16, 1/16, 1/2, -1/2+9/16, 1/2}, --unten-rechts(quer) x + {-1/2, -1/2+6/16, 6/16, -1/2+2/16, 1/2-1/16, 1/2}, --mitte links + {1/2-2/16, 1/2-4/16, 1/2, 1/2, -1/2+9/16, 6/16}, --mitte rechts + } + }, + selection_box = { + type = "fixed", + fixed = { + {-1/2, -1/2+5/16, -1/16, -1/2+2/16, 1/2, 1/2}, --links + {1/2, -1/2+5/16, -1/16, 1/2, 1/2, 1/2-2/16}, --rechts + } + }, + --on_punch = function(pos, node, puncher) + on_rightclick = function(pos, node, clicker) + punch_gate(pos, node) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + +minetest.register_node("fences:fencegate", { + description = "Wooden Fancegate", + tiles = {"default_wood.png"}, + inventory_image = "fences_fencegate.png", + wield_image = "fences_fencegate.png", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + walkable = true, + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fences=1}, + drop = 'fences:fencegate', + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-1/2, -1/2+5/16, -1/16, -1/2+2/16, 1/2, 1/16}, --links abschluss + {1/2-2/16, -1/2+5/16, -1/16, 1/2, 1/2, 1/16}, --rechts abschluss + {-2/16, -1/2+6/16, -1/16, 0, 1/2-1/16, 1/16}, --mitte links + {0, -1/2+6/16, -1/16, 2/16, 1/2-1/16, 1/16}, --mitte rechts + {-2/16, 1/2-4/16, 1/16, -1/2, 1/2-1/16, -1/16}, --oben(quer) -z + {-2/16, -1/2+6/16, 1/16, -1/2, -1/2+9/16, -1/16}, --unten(quer) -z + {2/16, 1/2-4/16, -1/16, 1/2, 1/2-1/16, 1/16}, --oben(quer) z + {2/16, -1/2+6/16, -1/16, 1/2, -1/2+9/16, 1/16}, --unten(quer) z + p1,p2,p3,p4,p5, + bx1,bx11,bx2,bx21, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-1/2, -1/2+5/16, -1/16, 1/2, 1/2, 1/16}, --gate + } + }, + on_construct = function(pos) + me2 = minetest.env:get_node(pos) + meta2 = minetest.env:get_meta(pos) + meta2:set_int("state", 0) + state2 = 0 + find_dock(pos, -1) + end, + on_rightclick = function(pos, node, clicker) + punch_gate(pos, node) + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + find_dock(pos, -1) + end +}) + + +if override_original == true then + minetest.register_abm({ + nodenames = {"default:fence_wood"}, + interval = 1.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local tmp_node3 = {name="fences:fence_wood"} + minetest.env:set_node(pos, tmp_node3) + minetest.env:punch_node(pos) + end + }) +end \ No newline at end of file diff --git a/mods/fences/textures/fences_fencegate.png b/mods/fences/textures/fences_fencegate.png new file mode 100644 index 0000000..accacf7 Binary files /dev/null and b/mods/fences/textures/fences_fencegate.png differ diff --git a/mods/intllib/LICENSE.md b/mods/intllib/LICENSE.md new file mode 100644 index 0000000..9f2b419 --- /dev/null +++ b/mods/intllib/LICENSE.md @@ -0,0 +1,25 @@ + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/mods/intllib/README-es.md b/mods/intllib/README-es.md new file mode 100644 index 0000000..f1f428e --- /dev/null +++ b/mods/intllib/README-es.md @@ -0,0 +1,41 @@ + +# Bilioteca de internacionalización para Minetest + +Por Diego Martínez (kaeza). +Lanzada bajo Unlicense. Véase `LICENSE.md` para más detalles. + +Éste mod es un intento por proveer soporte para internacionalización +de los mods (algo que a Minetest le falta de momento). + +Si tienes alguna duda/comentario, por favor publica en el +[tema del foro][topic]. Por reporte de errores, use el +[bugtracker][bugtracker] en Github. + +## Cómo usar + +Si eres un jugador regular en busca de textos traducidos, simplemente +[instala][installing_mods] éste mod como cualquier otro. + +El mod trata de detectar tu idioma, pero ya que no hay una forma portable de +hacerlo, prueba varias alternativas: + +* `language` setting in `minetest.conf`. +* `LANGUAGE` environment variable. +* `LANG` environment variable. + +En cualquier caso, el resultado final debería ser el +[Código de idioma ISO 639-1][ISO639-1] del idioma deseado. + +### Desarrolladores + +Si desarrollas mods y estás buscando añadir soporte de internacionalización +a tu mod, ve el fichero `doc/developer.md`. + +### Traductores + +Si eres un traductor, ve el fichero `doc/translator.md`. + +[topic]: https://forum.minetest.net/viewtopic.php?id=4929 +[bugtracker]: https://github.com/minetest-mods/intllib/issues +[installing_mods]: https://wiki.minetest.net/Installing_mods/es +[ISO639-1]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes diff --git a/mods/intllib/README-it.md b/mods/intllib/README-it.md new file mode 100644 index 0000000..3b9ba37 --- /dev/null +++ b/mods/intllib/README-it.md @@ -0,0 +1,43 @@ + +# Libreria di internazionalizzazione per Minetest + +Di Diego Martínez (kaeza). +Rilasciata sotto licenza Unlicense. Si veda `LICENSE.md` per i dettagli. + +Questo modulo è un tentativo per fornire il supporto di internazionalizzazione +per i moduli (cosa che attualmente manca a Minetest). + +Se aveste qualunque commento o suggerimento, per piacere scriveteli nella +[discussione sul forum][topic]. Per i rapporti sui bug, usate il +[tracciatore di bug][bugtracker] su Github. + +## Come usarla + +Se siete un* giocatrice/tore che vuole i testi tradotti, +[installate][installing_mods] questo modulo come qualunque altro, +poi abilitatelo tramite l'interfaccia grafica. + +Il modulo tenta di rilevare la vostra lingua, ma dato che al momento non c'è +un metodo portabile per farlo, prova diverse alternative: + +* `language` impostazione in `minetest.conf`. +* `LANGUAGE` variabile d'ambiente. +* `LANG` variabile d'ambiente. +* Se nessuna funziona, usa `en`. + +In ogni caso, il risultato finale dovrebbe essere il +[codice di lingua ISO 639-1][ISO639-1] del linguaggio desiderato. + +### Sviluppatrici/tori di moduli + +Se siete un* sviluppatrice/tore di moduli desideros* di aggiungere il supporto +per l'internazionalizzazione al vostro modulo, leggete `doc/developer-it.md`. + +### Traduttrici/tori + +Se siete un* traduttrice/tore, leggete `doc/translator-it.md`. + +[topic]: https://forum.minetest.net/viewtopic.php?id=4929 +[bugtracker]: https://github.com/minetest-mods/intllib/issues +[installing_mods]: https://wiki.minetest.net/Installing_mods +[ISO639-1]: https://it.wikipedia.org/wiki/ISO_639-1 diff --git a/mods/intllib/README-ms.md b/mods/intllib/README-ms.md new file mode 100644 index 0000000..6b9104b --- /dev/null +++ b/mods/intllib/README-ms.md @@ -0,0 +1,41 @@ + +# Pustaka Pengantarabangsaan untuk Minetest + +Oleh Diego Martínez (kaeza). +Diterbitkan bawah Unlicense. Lihat `LICENSE.md` untuk maklumat lanjut. + +Mods ini ialah suatu usaha untuk menyediakan sokongan pengantarabangsaan +kepada mods (sesuatu yang Minetest tiada ketika ini). + +Jika anda mempunyai sebarang komen/cadangan, sila tulis ke dalam [topik forum][topik]. +Untuk melaporkan pepijat, sila gunakan [penjejak pepijat][pepijat] Github. + +## Bagaimanakah cara untuk menggunakannya? + +Jika anda pemain biasa yang mencari teks terjemahan, hanya [pasangkan][pasang_mods] +mods ini seperti mods lain, kemudian bolehkannya melalui GUI. + +Mods ini cuba untuk mengesan bahasa anda, tetapi oleh kerana tiada +cara mudah alih untuk melakukannya, ia cuba beberapa cara yang lain: + +* Tetapan `language` di dalam fail `minetest.conf`. +* Pembolehubah sekitaran `LANGUAGE`. +* Pembolehubah sekitaran `LANG`. +* Jika semua di atas gagal, ia gunakan `en`. + +Dalam apa jua keadaan, hasil akhirnya sepatutnya menjadi +[Kod Bahasa ISO 639-1][ISO639-1] untuk bahasa yang dikehendaki. + +### Pembangun mods + +Jika anda seorang pembangun mods yang ingin menambah sokongan +pengantarabangsaan kepada mods anda, sila lihat `doc/developer.md`. + +### Penterjemah + +Jika anda seorang penterjemah, sila lihat `doc/translator.md`. + +[topik]: https://forum.minetest.net/viewtopic.php?id=4929 +[pepijat]: https://github.com/minetest-mods/intllib/issues +[pasang_mods]: https://wiki.minetest.net/Installing_Mods/ms +[ISO639-1]: https://ms.wikipedia.org/wiki/Senarai_kod_ISO_639-1 diff --git a/mods/intllib/README-pt_BR.md b/mods/intllib/README-pt_BR.md new file mode 100644 index 0000000..bdb2f3e --- /dev/null +++ b/mods/intllib/README-pt_BR.md @@ -0,0 +1,50 @@ +# Lib de Internacionalização para Minetest + +Por Diego Martínez (kaeza). +Lançado sob Unlicense. Veja `LICENSE.md` para detalhes. + +Este mod é uma tentativa de fornecer suporte de internacionalização para mods +(algo que Minetest atualmente carece). + + +Se você tiver algum comentário/sugestão, favor postar no +[tópico do fórum][topico]. Para reportar bugs, use o +[rastreador de bugs][bugtracker] no GitHub. + + +## Como usar + +Se você é um jogador regular procurando por textos traduzidos, +basta instalar este mod como qualquer outro, e então habilite-lo na GUI. + +O mod tenta detectar o seu idioma, mas como não há atualmente nenhuma +maneira portátil de fazer isso, ele tenta várias alternativas: + +Para usar este mod, basta [instalá-lo][instalando_mods] +e habilita-lo na GUI. + +O modificador tenta detectar o idioma do usuário, mas já que não há atualmente +nenhuma maneira portátil para fazer isso, ele tenta várias alternativas, e usa +o primeiro encontrado: + + * `language` definido em `minetest.conf`. + * Variável de ambiente `LANGUAGE`. + * Variável de ambiente `LANG`. + * Se todos falharem, usa `en` (inglês). + +Em todo caso, o resultado final deve ser um +[Código de Idioma ISO 639-1][ISO639-1] do idioma desejado. + +### Desenvolvedores de mods + +Se você é um desenvolvedor de mod procurando adicionar suporte de +internacionalização ao seu mod, consulte `doc/developer.md`. + +### Tradutores + +Se você é um tradutor, consulte `doc/translator.md`. + +[topico]: https://forum.minetest.net/viewtopic.php?id=4929 +[bugtracker]: https://github.com/minetest-mods/intllib/issues +[instalando_mods]: http://wiki.minetest.net/Installing_Mods/pt-br +[ISO639-1]: https://pt.wikipedia.org/wiki/ISO_639 diff --git a/mods/intllib/README.md b/mods/intllib/README.md new file mode 100644 index 0000000..db33035 --- /dev/null +++ b/mods/intllib/README.md @@ -0,0 +1,5 @@ +Intllib +===================================================================== +Main: kaeza +Lisc: Unlicense +Link: https://github.com/minetest-mods/intllib diff --git a/mods/intllib/README.md.diff b/mods/intllib/README.md.diff new file mode 100644 index 0000000..7bef471 --- /dev/null +++ b/mods/intllib/README.md.diff @@ -0,0 +1,50 @@ +1,43c1,5 +< +< # Internationalization Lib for Minetest +< +< By Diego Martínez (kaeza). +< Released under Unlicense. See `LICENSE.md` for details. +< +< This mod is an attempt at providing internationalization support for mods +< (something Minetest currently lacks). +< +< Should you have any comments/suggestions, please post them in the +< [forum topic][topic]. For bug reports, use the [bug tracker][bugtracker] +< on Github. +< +< ## How to use +< +< If you are a regular player looking for translated texts, just +< [install][installing_mods] this mod like any other one, then enable it +< in the GUI. +< +< The mod tries to detect your language, but since there's currently no +< portable way to do this, it tries several alternatives: +< +< * `language` setting in `minetest.conf`. +< * `LANGUAGE` environment variable. +< * `LANG` environment variable. +< * If all else fails, uses `en`. +< +< In any case, the end result should be the [ISO 639-1 Language Code][ISO639-1] +< of the desired language. +< +< ### Mod developers +< +< If you are a mod developer looking to add internationalization support to +< your mod, see `doc/developer.md`. +< +< ### Translators +< +< If you are a translator, see `doc/translator.md`. +< +< [topic]: https://forum.minetest.net/viewtopic.php?id=4929 +< [bugtracker]: https://github.com/minetest-mods/intllib/issues +< [installing_mods]: https://wiki.minetest.net/Installing_mods +< [ISO639-1]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes +--- +> Intllib +> ===================================================================== +> Main: kaeza +> Lisc: Unlicense +> Link: https://github.com/minetest-mods/intllib diff --git a/mods/intllib/description.txt b/mods/intllib/description.txt new file mode 100644 index 0000000..d2e1abb --- /dev/null +++ b/mods/intllib/description.txt @@ -0,0 +1,3 @@ +Internationalization library. +This mod provides a way to internationalize/localize mods to other languages in an easy way. +See the README file for details. diff --git a/mods/intllib/doc/developer-it.md b/mods/intllib/doc/developer-it.md new file mode 100644 index 0000000..4c660d6 --- /dev/null +++ b/mods/intllib/doc/developer-it.md @@ -0,0 +1,66 @@ + +# Intllib - documentazione per sviluppatrici/tori + +## Abilitare l'internazionalizzazione + +Per abilitare l'internazionalizzazione del vostro modulo, dovete copiare il file +`lib/intllib.lua` nella cartella principale del vostro modulo, poi inserite +questo codice standard nei file che necessitano la traduzione: + + -- Load support for intllib. + local MP = minetest.get_modpath(minetest.get_current_modname()) + local S, NS = dofile(MP.."/intllib.lua") + +Dovrete anche aggiungere la dipendenza facoltativa da intllib per il vostro +modulo, per farlo aggiungete `intllib?` su una riga vuota nel vostro +`depends.txt`. Si noti anche che se intllib non è installata, le funzioni di +acquisizione del testo sono fatte in modo da restituire la stringa di testo +originale. Questo è stato fatto in modo che non dobbiate spargere tonnellate +di `if` (o costrutti simili) per controllare se la libreria è installata. + +Dopo avere messo il codice, dovete marcare le stringhe di testo che necessitano +una traduzione. Per ciascuna stringa traducibile nei vostri codici sorgenti, +usate la funzione `S` (si veda sopra) per restituire la stringa tradotta. +Per esempio: + + minetest.register_node("miomod:mionodo", { + -- Stringa semplice: + description = S("Il mio fantastico nodo"), + -- Stringa con inserti: + description = S("Macchina @1", "Blu"), + -- ... + }) + +La funzione `NS` è l'equivalente di `ngettext`. Dovrebbe essere usata quando la +stringa da tradurre ha forma singolare e plurale. Per esempio: + + -- Il primo `count` è per consentire a `ngettext` di stabilire quale forma + -- usare. Il secondo `count` è per il sostituto effettivo. + + print(NS("Avete un oggetto.", "Avete @1 oggetti.", count, count)) + +## Generare e aggiornare cataloghi + +Questo è il procedimento di base per lavorare con [gettext][gettext] + +Ogni volta che avete nuove stringhe da tradurre, dovreste fare quanto segue: + + cd /percorso/del/modulo + /percorso/degli/strumenti/intllib/xgettext.sh file1.lua file2.lua ... + +Lo script creerà una cartella chiamata `locale` se non esiste già, e genererà +il file `template.pot` (un modello con tutte le stringhe traducibili). Se avete +già delle traduzioni, lo script provvederà al loro aggiornamento con le nuove +stringhe. + +Lo script fornisce alcune opzioni al vero `xgettext` che dovrebbero essere +sufficienti per la maggior parte dei casi. Se lo desiderate potete specificare +altre opzioni: + + xgettext.sh -o file.pot --keyword=blaaaah:4,5 a.lua b.lua ... + +NOTA: C'è anche un file batch di Windows `xgettext.bat` per gli utenti di +Windows, ma dovrete installare separatamente gli strumenti di gettext per la +riga di comando. Si veda la parte superiore del file per la configurazione. + +[gettext]: https://www.gnu.org/software/gettext/ diff --git a/mods/intllib/doc/developer.md b/mods/intllib/doc/developer.md new file mode 100644 index 0000000..551f188 --- /dev/null +++ b/mods/intllib/doc/developer.md @@ -0,0 +1,62 @@ + +# Intllib developer documentation + +## Enabling internationalization + +In order to enable internationalization for your mod, you will need to copy the +file `lib/intllib.lua` into the root directory of your mod, then include this +boilerplate code in files needing localization: + + -- Load support for intllib. + local MP = minetest.get_modpath(minetest.get_current_modname()) + local S, NS = dofile(MP.."/intllib.lua") + +You will also need to optionally depend on intllib, to do so add `intllib?` +to an empty line in your `depends.txt`. Also note that if intllib is not +installed, the getter functions are defined so they return the string +unchanged. This is done so you don't have to sprinkle tons of `if`s (or +similar constructs) to check if the lib is actually installed. + +Once you have the code in place, you need to mark strings that need +translation. For each translatable string in your sources, use the `S` +function (see above) to return the translated string. For example: + + minetest.register_node("mymod:mynode", { + -- Simple string: + description = S("My Fabulous Node"), + -- String with insertions: + description = S("@1 Car", "Blue"), + -- ... + }) + +The `NS` function is the equivalent of `ngettext`. It should be used when the +string to be translated has singular and plural forms. For example: + + -- The first `count` is for `ngettext` to determine which form to use. + -- The second `count` is the actual replacement. + print(NS("You have one item.", "You have @1 items.", count, count)) + +## Generating and updating catalogs + +This is the basic workflow for working with [gettext][gettext] + +Each time you have new strings to be translated, you should do the following: + + cd /path/to/mod + /path/to/intllib/tools/xgettext.sh file1.lua file2.lua ... + +The script will create a directory named `locale` if it doesn't exist yet, +and will generate the file `template.pot` (a template with all the translatable +strings). If you already have translations, the script will proceed to update +all of them with the new strings. + +The script passes some options to the real `xgettext` that should be enough +for most cases. You may specify other options if desired: + + xgettext.sh -o file.pot --keyword=blargh:4,5 a.lua b.lua ... + +NOTE: There's also a Windows batch file `xgettext.bat` for Windows users, +but you will need to install the gettext command line tools separately. See +the top of the file for configuration. + +[gettext]: https://www.gnu.org/software/gettext/ diff --git a/mods/intllib/doc/localefile-it.md b/mods/intllib/doc/localefile-it.md new file mode 100644 index 0000000..47d8718 --- /dev/null +++ b/mods/intllib/doc/localefile-it.md @@ -0,0 +1,43 @@ + +# Formato del file di traduzione + +*Nota: Questo documento spiega il vecchio formato in stile conf/ini. +La nuova interfaccia usa file [gettext][gettext] `.po`. +Si veda [Il formato dei file PO][PO-Files] per ulteriori informazioni.* + +Questo è un esempio per un file di traduzione in Italiano (`it.txt`): + + # Un commento. + # Un altro commento. + Questa riga viene ignorata dato che non ha il segno di uguale. + Hello, World! = Ciao, Mondo! + String with\nnewlines = Stringa con\na capo + String with an \= equals sign = Stringa con un segno di uguaglianza \= + +I file "locale" (o di traduzione) sono file di testo semplice formati da righe +nel formato `testo originale = testo tradotto`. Il file deve stare nella +sottocartella `locale` del modulo, e il suo nome deve essere lo stesso del +[codice di lingua ISO 639-1][ISO639-1] della lingua che volete fornire. + +I file di traduzione dovrebbero usare la codifica UTF-8. + +Le righe che iniziano con un cancelletto sono commenti e vengono ignorate dal +lettore. Si noti che i commenti si estendono solo fino al termine della riga; +non c'è nessun supporto per i commenti multiriga. Le righe senza un segno di +uguale sono anch'esse ignorate. + +I caratteri che sono considerati "speciali" possono essere "escaped" di modo +che siano presi letteralmente. Inoltre esistono molte sequenze di escape che +possono essere utilizzate: + + * Qualsiasi `#`, `=` può essere escaped di modo da essere preso letteralmente. + La sequenza `\#` è utile se il vostro testo sorgente inizia con `#`. + * Le sequenze di escape comuni `\n` e `\t`, significano rispettivamente + newline (a capo) e tabulazione orizzontale. + * La sequenza speciale di escape`\s` rappresenta il carattere di spazio. + È utile principalmente per aggiungere spazi prefissi o suffissi ai testi + originali o tradotti, perché altrimenti quegli spazi verrebbero rimossi. + +[gettext]: https://www.gnu.org/software/gettext +[PO-Files]: https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html +[ISO639-1]: https://it.wikipedia.org/wiki/ISO_639-1 diff --git a/mods/intllib/doc/localefile.md b/mods/intllib/doc/localefile.md new file mode 100644 index 0000000..777e759 --- /dev/null +++ b/mods/intllib/doc/localefile.md @@ -0,0 +1,42 @@ + +# Locale file format + +*Note: This document explains the old conf/ini-like file format. +The new interface uses [gettext][gettext] `.po` files. +See [The Format of PO Files][PO-Files] for more information.* + +Here's an example for a Spanish locale file (`es.txt`): + + # A comment. + # Another comment. + This line is ignored since it has no equals sign. + Hello, World! = Hola, Mundo! + String with\nnewlines = Cadena con\nsaltos de linea + String with an \= equals sign = Cadena con un signo de \= igualdad + +Locale (or translation) files are plain text files consisting of lines of the +form `source text = translated text`. The file must reside in the mod's `locale` +subdirectory, and must be named after the two-letter +[ISO 639-1 Language Code][ISO639-1] of the language you want to support. + +The translation files should use the UTF-8 encoding. + +Lines beginning with a pound sign are comments and are effectively ignored +by the reader. Note that comments only span until the end of the line; +there's no support for multiline comments. Lines without an equals sign are +also ignored. + +Characters that are considered "special" can be "escaped" so they are taken +literally. There are also several escape sequences that can be used: + + * Any of `#`, `=` can be escaped to take them literally. The `\#` + sequence is useful if your source text begins with `#`. + * The common escape sequences `\n` and `\t`, meaning newline and + horizontal tab respectively. + * The special `\s` escape sequence represents the space character. It + is mainly useful to add leading or trailing spaces to source or + translated texts, as these spaces would be removed otherwise. + +[gettext]: https://www.gnu.org/software/gettext +[PO-Files]: https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html +[ISO639-1]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes diff --git a/mods/intllib/doc/translator-it.md b/mods/intllib/doc/translator-it.md new file mode 100644 index 0000000..e078b9a --- /dev/null +++ b/mods/intllib/doc/translator-it.md @@ -0,0 +1,20 @@ + +# Intllib - documentazione per traduttrici/tori + +#### Nuova interfaccia + +Usate i vostri strumenti preferiti per modificare i file `.po`. + +#### Vecchia interfaccia + +Per tradurre nella lingua che desiderate un modulo che supporta intllib, +copiate il file `locale/template.txt` come `locale/LINGUA.txt` (dove `LINGUA` è +il [codice di lingua ISO 639-1][ISO639-1] del vostro linguaggio. + +Aprite il nuovo file nel vostro editor preferito, e traducete ciascuna riga +inserendo il testo tradotto dopo il segno di uguale. + +Si veda `localefile-it.md` per ulteriori informazioni sul formato del file. + +[gettext]: https://www.gnu.org/software/gettext/ +[ISO639-1]: https://it.wikipedia.org/wiki/ISO_639-1 diff --git a/mods/intllib/doc/translator.md b/mods/intllib/doc/translator.md new file mode 100644 index 0000000..3c278e8 --- /dev/null +++ b/mods/intllib/doc/translator.md @@ -0,0 +1,20 @@ + +# Intllib translator documentation + +#### New interface + +Use your favorite tools to edit the `.po` files. + +#### Old interface + +To translate an intllib-supporting mod to your desired language, copy the +`locale/template.txt` file to `locale/LANGUAGE.txt` (where `LANGUAGE` is the +[ISO 639-1 Language Code][ISO639-1] of your language. + +Open up the new file in your favorite editor, and translate each line putting +the translated text after the equals sign. + +See `localefile.md` for more information about the file format. + +[gettext]: https://www.gnu.org/software/gettext/ +[ISO639-1]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes diff --git a/mods/intllib/gettext.lua b/mods/intllib/gettext.lua new file mode 100644 index 0000000..26a2d73 --- /dev/null +++ b/mods/intllib/gettext.lua @@ -0,0 +1,226 @@ + +local strsub, strrep = string.sub, string.rep +local strmatch, strgsub = string.match, string.gsub + +local function trim(str) + return strmatch(str, "^%s*(.-)%s*$") +end + +local escapes = { n="\n", r="\r", t="\t" } + +local function unescape(str) + return (strgsub(str, "(\\+)([nrt]?)", function(bs, c) + local bsl = #bs + local realbs = strrep("\\", bsl/2) + if bsl%2 == 1 then + c = escapes[c] or c + end + return realbs..c + end)) +end + +local function parse_po(str) + local state, msgid, msgid_plural, msgstrind + local texts = { } + local lineno = 0 + local function perror(msg) + return error(msg.." at line "..lineno) + end + for _, line in ipairs(str:split("\n")) do repeat + lineno = lineno + 1 + line = trim(line) + + if line == "" or strmatch(line, "^#") then + state, msgid, msgid_plural = nil, nil, nil + break -- continue + end + + local mid = strmatch(line, "^%s*msgid%s*\"(.*)\"%s*$") + if mid then + if state == "id" then + return perror("unexpected msgid") + end + state, msgid = "id", unescape(mid) + break -- continue + end + + mid = strmatch(line, "^%s*msgid_plural%s*\"(.*)\"%s*$") + if mid then + if state ~= "id" then + return perror("unexpected msgid_plural") + end + state, msgid_plural = "idp", unescape(mid) + break -- continue + end + + local ind, mstr = strmatch(line, + "^%s*msgstr([0-9%[%]]*)%s*\"(.*)\"%s*$") + if ind then + if not msgid then + return perror("missing msgid") + elseif ind == "" then + msgstrind = 0 + elseif strmatch(ind, "%[[0-9]+%]") then + msgstrind = tonumber(strsub(ind, 2, -2)) + else + return perror("malformed msgstr") + end + texts[msgid] = texts[msgid] or { } + if msgid_plural then + texts[msgid_plural] = texts[msgid] + end + texts[msgid][msgstrind] = unescape(mstr) + state = "str" + break -- continue + end + + mstr = strmatch(line, "^%s*\"(.*)\"%s*$") + if mstr then + if state == "id" then + msgid = msgid..unescape(mstr) + break -- continue + elseif state == "idp" then + msgid_plural = msgid_plural..unescape(mstr) + break -- continue + elseif state == "str" then + local text = texts[msgid][msgstrind] + texts[msgid][msgstrind] = text..unescape(mstr) + break -- continue + end + end + + return perror("malformed line") + + -- luacheck: ignore + until true end -- end for + + return texts +end + +local M = { } + +local function warn(msg) + minetest.log("warning", "[intllib] "..msg) +end + +-- hax! +-- This function converts a C expression to an equivalent Lua expression. +-- It handles enough stuff to parse the `Plural-Forms` header correctly. +-- Note that it assumes the C expression is valid to begin with. +local function compile_plural_forms(str) + local plural = strmatch(str, "plural=([^;]+);?$") + local function replace_ternary(s) + local c, t, f = strmatch(s, "^(.-)%?(.-):(.*)") + if c then + return ("__if(" + ..replace_ternary(c) + ..","..replace_ternary(t) + ..","..replace_ternary(f) + ..")") + end + return s + end + plural = replace_ternary(plural) + plural = strgsub(plural, "&&", " and ") + plural = strgsub(plural, "||", " or ") + plural = strgsub(plural, "!=", "~=") + plural = strgsub(plural, "!", " not ") + local f, err = loadstring([[ + local function __if(c, t, f) + if c and c~=0 then return t else return f end + end + local function __f(n) + return (]]..plural..[[) + end + return (__f(...)) + ]]) + if not f then return nil, err end + local env = { } + env._ENV, env._G = env, env + setfenv(f, env) + return function(n) + local v = f(n) + if type(v) == "boolean" then + -- Handle things like a plain `n != 1` + v = v and 1 or 0 + end + return v + end +end + +local function parse_headers(str) + local headers = { } + for _, line in ipairs(str:split("\n")) do + local k, v = strmatch(line, "^([^:]+):%s*(.*)") + if k then + headers[k] = v + end + end + return headers +end + +local function load_catalog(filename) + local f, data, err + + local function bail(msg) + warn(msg..(err and ": " or "")..(err or "")) + return nil + end + + f, err = io.open(filename, "rb") + if not f then + return --bail("failed to open catalog") + end + + data, err = f:read("*a") + + f:close() + + if not data then + return bail("failed to read catalog") + end + + data, err = parse_po(data) + if not data then + return bail("failed to parse catalog") + end + + err = nil + local hdrs = data[""] + if not (hdrs and hdrs[0]) then + return bail("catalog has no headers") + end + + hdrs = parse_headers(hdrs[0]) + + local pf = hdrs["Plural-Forms"] + if not pf then + -- XXX: Is this right? Gettext assumes this if header not present. + pf = "nplurals=2; plural=n != 1" + end + + data.plural_index, err = compile_plural_forms(pf) + if not data.plural_index then + return bail("failed to compile plural forms") + end + + --warn("loaded: "..filename) + + return data +end + +function M.load_catalogs(path) + local langs = intllib.get_detected_languages() + + local cats = { } + for _, lang in ipairs(langs) do + local cat = load_catalog(path.."/"..lang..".po") + if cat then + cats[#cats+1] = cat + end + end + + return cats +end + +return M diff --git a/mods/intllib/init.lua b/mods/intllib/init.lua new file mode 100644 index 0000000..0778a73 --- /dev/null +++ b/mods/intllib/init.lua @@ -0,0 +1,213 @@ + +-- Old multi-load method compatibility +if rawget(_G, "intllib") then return end + +intllib = { + getters = {}, + strings = {}, +} + + +local MP = minetest.get_modpath("intllib") + +dofile(MP.."/lib.lua") + + +local LANG = minetest.settings:get("language") +if not (LANG and (LANG ~= "")) then LANG = os.getenv("LANG") end +if not (LANG and (LANG ~= "")) then LANG = "en" end + + +local INS_CHAR = intllib.INSERTION_CHAR +local insertion_pattern = "("..INS_CHAR.."?)"..INS_CHAR.."(%(?)(%d+)(%)?)" + +local function do_replacements(str, ...) + local args = {...} + -- Outer parens discard extra return values + return (str:gsub(insertion_pattern, function(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return INS_CHAR..open..num..close + end + end)) +end + +local function make_getter(msgstrs) + return function(s, ...) + local str + if msgstrs then + str = msgstrs[s] + end + if not str or str == "" then + str = s + end + if select("#", ...) == 0 then + return str + end + return do_replacements(str, ...) + end +end + + +local function Getter(modname) + modname = modname or minetest.get_current_modname() + if not intllib.getters[modname] then + local msgstr = intllib.get_strings(modname) + intllib.getters[modname] = make_getter(msgstr) + end + return intllib.getters[modname] +end + + +function intllib.Getter(modname) + local info = debug and debug.getinfo and debug.getinfo(2) + local loc = info and info.short_src..":"..info.currentline + minetest.log("deprecated", "intllib.Getter is deprecated." + .." Please use intllib.make_gettext_pair instead." + ..(info and " (called from "..loc..")" or "")) + return Getter(modname) +end + + +local strfind, strsub = string.find, string.sub +local langs + +local function split(str, sep) + local pos, endp = 1, #str+1 + return function() + if (not pos) or pos > endp then return end + local s, e = strfind(str, sep, pos, true) + local part = strsub(str, pos, s and s-1) + pos = e and e + 1 + return part + end +end + +function intllib.get_detected_languages() + if langs then return langs end + + langs = { } + + local function addlang(l) + local sep + langs[#langs+1] = l + sep = strfind(l, ".", 1, true) + if sep then + l = strsub(l, 1, sep-1) + langs[#langs+1] = l + end + sep = strfind(l, "_", 1, true) + if sep then + langs[#langs+1] = strsub(l, 1, sep-1) + end + end + + local v + + v = minetest.settings:get("language") + if v and v~="" then + addlang(v) + end + + v = os.getenv("LANGUAGE") + if v then + for item in split(v, ":") do + langs[#langs+1] = item + end + end + + v = os.getenv("LANG") + if v then + addlang(v) + end + + langs[#langs+1] = "en" + + return langs +end + + +local gettext = dofile(minetest.get_modpath("intllib").."/gettext.lua") + + +local function catgettext(catalogs, msgid) + for _, cat in ipairs(catalogs) do + local msgstr = cat and cat[msgid] + if msgstr and msgstr~="" then + local msg = msgstr[0] + return msg~="" and msg or nil + end + end +end + +local function catngettext(catalogs, msgid, msgid_plural, n) + n = math.floor(n) + for _, cat in ipairs(catalogs) do + local msgstr = cat and cat[msgid] + if msgstr then + local index = cat.plural_index(n) + local msg = msgstr[index] + return msg~="" and msg or nil + end + end + return n==1 and msgid or msgid_plural +end + + +local gettext_getters = { } +function intllib.make_gettext_pair(modname) + modname = modname or minetest.get_current_modname() + if gettext_getters[modname] then + return unpack(gettext_getters[modname]) + end + local localedir = minetest.get_modpath(modname).."/locale" + local catalogs = gettext.load_catalogs(localedir) + local getter = Getter(modname) + local function gettext_func(msgid, ...) + local msgstr = (catgettext(catalogs, msgid) + or getter(msgid)) + return do_replacements(msgstr, ...) + end + local function ngettext_func(msgid, msgid_plural, n, ...) + local msgstr = (catngettext(catalogs, msgid, msgid_plural, n) + or getter(msgid)) + return do_replacements(msgstr, ...) + end + gettext_getters[modname] = { gettext_func, ngettext_func } + return gettext_func, ngettext_func +end + + +local function get_locales(code) + local ll, cc = code:match("^(..)_(..)") + if ll then + return { ll.."_"..cc, ll, ll~="en" and "en" or nil } + else + return { code, code~="en" and "en" or nil } + end +end + + +function intllib.get_strings(modname, langcode) + langcode = langcode or LANG + modname = modname or minetest.get_current_modname() + local msgstr = intllib.strings[modname] + if not msgstr then + local modpath = minetest.get_modpath(modname) + msgstr = { } + for _, l in ipairs(get_locales(langcode)) do + local t = intllib.load_strings(modpath.."/locale/"..l..".txt") or { } + for k, v in pairs(t) do + msgstr[k] = msgstr[k] or v + end + end + intllib.strings[modname] = msgstr + end + return msgstr +end + diff --git a/mods/intllib/intllib.lua b/mods/intllib/intllib.lua new file mode 100644 index 0000000..adb0f88 --- /dev/null +++ b/mods/intllib/intllib.lua @@ -0,0 +1,3 @@ +-- Support for the old multi-load method +dofile(minetest.get_modpath("intllib").."/init.lua") + diff --git a/mods/intllib/intltest/README.md b/mods/intllib/intltest/README.md new file mode 100644 index 0000000..9122d9e --- /dev/null +++ b/mods/intllib/intltest/README.md @@ -0,0 +1,10 @@ + +# Intllib example + +This is a simple mod showing how to use intllib. + +It defines a test `intltest:test` item whose description is translated +according to the user's language. + +Additionally, it demonstrates how to use plural forms by counting the +number of times the item has been used. diff --git a/mods/intllib/intltest/depends.txt b/mods/intllib/intltest/depends.txt new file mode 100644 index 0000000..77e8d97 --- /dev/null +++ b/mods/intllib/intltest/depends.txt @@ -0,0 +1 @@ +intllib? diff --git a/mods/intllib/intltest/init.lua b/mods/intllib/intltest/init.lua new file mode 100644 index 0000000..e855621 --- /dev/null +++ b/mods/intllib/intltest/init.lua @@ -0,0 +1,28 @@ + +-- Load support for intllib. +local MP = minetest.get_modpath(minetest.get_current_modname()) +local S, NS = dofile(MP.."/intllib.lua") + +local use_count = 0 + +minetest.log("action", S("Hello, world!")) + +minetest.register_craftitem("intltest:test", { + -- Example use of replacements. + -- Translators: @1 is color, @2 is object. + description = S("Test: @1 @2", S("Blue"), S("Car")), + + inventory_image = "default_sand.png", + + on_use = function(stack, user, pt) + use_count = use_count + 1 + -- Example use of `ngettext` function. + -- First `use_count` is `n` for ngettext; + -- Second one is actual replacement. + -- Translators: @1 is use count. + local message = NS("Item has been used @1 time.", + "Item has been used @1 times.", + use_count, use_count) + minetest.chat_send_player(user:get_player_name(), message) + end, +}) diff --git a/mods/intllib/intltest/intllib.lua b/mods/intllib/intltest/intllib.lua new file mode 100644 index 0000000..c2eb8dc --- /dev/null +++ b/mods/intllib/intltest/intllib.lua @@ -0,0 +1,3 @@ + +-- This file should be replaced by `intllib/lib/intllib.lua`. +return dofile(minetest.get_modpath("intllib").."/lib/intllib.lua") diff --git a/mods/intllib/intltest/locale/es.po b/mods/intllib/intltest/locale/es.po new file mode 100644 index 0000000..cd51b8f --- /dev/null +++ b/mods/intllib/intltest/locale/es.po @@ -0,0 +1,43 @@ +# I18N Test Mod. +# Copyright (C) 2013-2017 Diego Martínez +# This file is distributed under the same license as the intllib mod. +# Diego Martínez , 2013-2017. +# +msgid "" +msgstr "" +"Project-Id-Version: I18N Test Mod 0.1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-25 20:40-0300\n" +"PO-Revision-Date: 2017-01-23 17:36-0300\n" +"Last-Translator: Diego Martnez \n" +"Language-Team: Spanish\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: init.lua +msgid "Hello, world!" +msgstr "¡Hola, mundo!" + +#. Translators: @1 is color, @2 is object. +#: init.lua +msgid "Blue" +msgstr "Azul" + +#: init.lua +msgid "Car" +msgstr "Carro" + +#. Translators: @1 is color, @2 is object. +#: init.lua +msgid "Test: @1 @2" +msgstr "Prueba: @2 @1" + +#. Translators: @1 is use count. +#: init.lua +msgid "Item has been used @1 time." +msgid_plural "Item has been used @1 times." +msgstr[0] "El objeto ha sido usado @1 vez." +msgstr[1] "El objeto ha sido usado @1 veces." diff --git a/mods/intllib/intltest/locale/template.pot b/mods/intllib/intltest/locale/template.pot new file mode 100644 index 0000000..2090d61 --- /dev/null +++ b/mods/intllib/intltest/locale/template.pot @@ -0,0 +1,44 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-25 20:40-0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: init.lua +msgid "Hello, world!" +msgstr "" + +#. Translators: @1 is color, @2 is object. +#: init.lua +msgid "Blue" +msgstr "" + +#: init.lua +msgid "Car" +msgstr "" + +#. Translators: @1 is color, @2 is object. +#: init.lua +msgid "Test: @1 @2" +msgstr "" + +#. Translators: @1 is use count. +#: init.lua +msgid "Item has been used @1 time." +msgid_plural "Item has been used @1 times." +msgstr[0] "" +msgstr[1] "" diff --git a/mods/intllib/lib.lua b/mods/intllib/lib.lua new file mode 100644 index 0000000..60aebc0 --- /dev/null +++ b/mods/intllib/lib.lua @@ -0,0 +1,67 @@ + +intllib = intllib or {} + +local INS_CHAR = "@" +intllib.INSERTION_CHAR = INS_CHAR + +local escapes = { + ["\\"] = "\\", + ["n"] = "\n", + ["s"] = " ", + ["t"] = "\t", + ["r"] = "\r", + ["f"] = "\f", + [INS_CHAR] = INS_CHAR..INS_CHAR, +} + +local function unescape(str) + local parts = {} + local n = 1 + local function add(s) + parts[n] = s + n = n + 1 + end + + local start = 1 + while true do + local pos = str:find("\\", start, true) + if pos then + add(str:sub(start, pos - 1)) + else + add(str:sub(start)) + break + end + local c = str:sub(pos + 1, pos + 1) + add(escapes[c] or c) + start = pos + 2 + end + return table.concat(parts) +end + +local function find_eq(s) + for slashes, pos in s:gmatch("([\\]*)=()") do + if (slashes:len() % 2) == 0 then + return pos - 1 + end + end +end + +function intllib.load_strings(filename) + local file, err = io.open(filename, "r") + if not file then + return nil, err + end + local strings = {} + for line in file:lines() do + line = line:trim() + if line ~= "" and line:sub(1, 1) ~= "#" then + local pos = find_eq(line) + if pos then + local msgid = unescape(line:sub(1, pos - 1):trim()) + strings[msgid] = unescape(line:sub(pos + 1):trim()) + end + end + end + file:close() + return strings +end diff --git a/mods/intllib/lib/intllib.lua b/mods/intllib/lib/intllib.lua new file mode 100644 index 0000000..6669d72 --- /dev/null +++ b/mods/intllib/lib/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext diff --git a/mods/intllib/mod.conf b/mods/intllib/mod.conf new file mode 100644 index 0000000..4338db7 --- /dev/null +++ b/mods/intllib/mod.conf @@ -0,0 +1,2 @@ + +name = intllib diff --git a/mods/intllib/tools/findtext.lua b/mods/intllib/tools/findtext.lua new file mode 100755 index 0000000..e5f6e88 --- /dev/null +++ b/mods/intllib/tools/findtext.lua @@ -0,0 +1,142 @@ +#! /usr/bin/env lua + +local me = arg[0]:gsub(".*[/\\](.*)$", "%1") + +local function err(fmt, ...) + io.stderr:write(("%s: %s\n"):format(me, fmt:format(...))) + os.exit(1) +end + +local output +local inputs = { } +local lang +local author + +local i = 1 + +local function usage() + print([[ +Usage: ]]..me..[[ [OPTIONS] FILE... + +Extract translatable strings from the given FILE(s). + +Available options: + -h,--help Show this help screen and exit. + -o,--output X Set output file (default: stdout). + -a,--author X Set author. + -l,--lang X Set language name. +]]) + os.exit(0) +end + +while i <= #arg do + local a = arg[i] + if (a == "-h") or (a == "--help") then + usage() + elseif (a == "-o") or (a == "--output") then + i = i + 1 + if i > #arg then + err("missing required argument to `%s'", a) + end + output = arg[i] + elseif (a == "-a") or (a == "--author") then + i = i + 1 + if i > #arg then + err("missing required argument to `%s'", a) + end + author = arg[i] + elseif (a == "-l") or (a == "--lang") then + i = i + 1 + if i > #arg then + err("missing required argument to `%s'", a) + end + lang = arg[i] + elseif a:sub(1, 1) ~= "-" then + table.insert(inputs, a) + else + err("unrecognized option `%s'", a) + end + i = i + 1 +end + +if #inputs == 0 then + err("no input files") +end + +local outfile = io.stdout + +local function printf(fmt, ...) + outfile:write(fmt:format(...)) +end + +if output then + local e + outfile, e = io.open(output, "w") + if not outfile then + err("error opening file for writing: %s", e) + end +end + +if author or lang then + outfile:write("\n") +end + +if lang then + printf("# Language: %s\n", lang) +end + +if author then + printf("# Author: %s\n", author) +end + +if author or lang then + outfile:write("\n") +end + +local escapes = { + ["\n"] = "\\n", + ["="] = "\\=", + ["\\"] = "\\\\", +} + +local function escape(s) + return s:gsub("[\\\n=]", escapes) +end + +local messages = { } + +for _, file in ipairs(inputs) do + local infile, e = io.open(file, "r") + if infile then + for line in infile:lines() do + for s in line:gmatch('S%("([^"]*)"') do + table.insert(messages, s) + end + end + infile:close() + else + io.stderr:write(("%s: WARNING: error opening file: %s\n"):format(me, e)) + end +end + +table.sort(messages) + +local last_msg + +for _, msg in ipairs(messages) do + if msg ~= last_msg then + printf("%s =\n", escape(msg)) + end + last_msg = msg +end + +if output then + outfile:close() +end + +--[[ +TESTS: +S("foo") S("bar") +S("bar") +S("foo") +]] diff --git a/mods/intllib/tools/updatetext.lua b/mods/intllib/tools/updatetext.lua new file mode 100644 index 0000000..5d5734b --- /dev/null +++ b/mods/intllib/tools/updatetext.lua @@ -0,0 +1,131 @@ +#! /usr/bin/env lua + +local basedir = "" +if arg[0]:find("[/\\]") then + basedir = arg[0]:gsub("(.*[/\\]).*$", "%1"):gsub("\\", "/") +end +if basedir == "" then basedir = "./" end + +-- Required by load_strings() +function string.trim(s) -- luacheck: ignore + return s:gsub("^%s*(.-)%s*$", "%1") +end + +dofile(basedir.."/../lib.lua") + +local me = arg[0]:gsub(".*[/\\](.*)$", "%1") + +local function err(fmt, ...) + io.stderr:write(("%s: %s\n"):format(me, fmt:format(...))) + os.exit(1) +end + +local output, outfile, template +local catalogs = { } + +local function usage() + print([[ +Usage: ]]..me..[[ [OPTIONS] TEMPLATE CATALOG... + +Update a catalog with new strings from a template. + +Available options: + -h,--help Show this help screen and exit. + -o,--output X Set output file (default: stdout). + +Messages in the template that are not on the catalog are added to the +catalog at the end. + +This tool also checks messages that are in the catalog but not in the +template, and reports such lines. It's up to the user to remove such +lines, if so desired. +]]) + os.exit(0) +end + +local i = 1 + +while i <= #arg do + local a = arg[i] + if (a == "-h") or (a == "--help") then + usage() + elseif (a == "-o") or (a == "--output") then + i = i + 1 + if i > #arg then + err("missing required argument to `%s'", a) + end + output = arg[i] + elseif a:sub(1, 1) ~= "-" then + if not template then + template = a + else + table.insert(catalogs, a) + end + else + err("unrecognized option `%s'", a) + end + i = i + 1 +end + +if not template then + err("no template specified") +elseif #catalogs == 0 then + err("no catalogs specified") +end + +local f, e = io.open(template, "r") +if not f then + err("error opening template: %s", e) +end + +local escapes = { ["\n"] = "\\n", ["="] = "\\=", ["\\"] = "\\\\", } +local function escape(s) + return s:gsub("[\\\n=]", escapes) +end + +if output then + outfile, e = io.open(output, "w") + if not outfile then + err("error opening file for writing: %s", e) + end +end + +local template_msgs = intllib.load_strings(template) + +for _, file in ipairs(catalogs) do + print("Processing: "..file) + local catalog_msgs = intllib.load_strings(file) + local dirty_lines = { } + if catalog_msgs then + -- Add new entries from template. + for k in pairs(template_msgs) do + if not catalog_msgs[k] then + print("NEW: "..k) + table.insert(dirty_lines, escape(k).." =") + end + end + -- Check for old messages. + for k, v in pairs(catalog_msgs) do + if not template_msgs[k] then + print("OLD: "..k) + table.insert(dirty_lines, "OLD: "..escape(k).." = "..escape(v)) + end + end + if #dirty_lines > 0 then + local outf + outf, e = io.open(file, "a+") + if outf then + outf:write("\n") + for _, line in ipairs(dirty_lines) do + outf:write(line) + outf:write("\n") + end + outf:close() + else + io.stderr:write(("%s: WARNING: cannot write: %s\n"):format(me, e)) + end + end + else + io.stderr:write(("%s: WARNING: could not load catalog\n"):format(me)) + end +end diff --git a/mods/intllib/tools/xgettext.bat b/mods/intllib/tools/xgettext.bat new file mode 100644 index 0000000..18403db --- /dev/null +++ b/mods/intllib/tools/xgettext.bat @@ -0,0 +1,33 @@ +@echo off +setlocal + +set me=%~n0 + +rem # Uncomment the following line if gettext is not in your PATH. +rem # Value must be absolute and end in a backslash. +rem set gtprefix=C:\path\to\gettext\bin\ + +if "%1" == "" ( + echo Usage: %me% FILE... 1>&2 + exit 1 +) + +set xgettext=%gtprefix%xgettext.exe +set msgmerge=%gtprefix%msgmerge.exe + +md locale > nul 2>&1 +echo Generating template... 1>&2 +echo %xgettext% --from-code=UTF-8 -kS -kNS:1,2 -k_ -o locale/template.pot %* +%xgettext% --from-code=UTF-8 -kS -kNS:1,2 -k_ -o locale/template.pot %* +if %ERRORLEVEL% neq 0 goto done + +cd locale + +for %%f in (*.po) do ( + echo Updating %%f... 1>&2 + %msgmerge% --update %%f template.pot +) + +echo DONE! 1>&2 + +:done diff --git a/mods/intllib/tools/xgettext.sh b/mods/intllib/tools/xgettext.sh new file mode 100755 index 0000000..1504f42 --- /dev/null +++ b/mods/intllib/tools/xgettext.sh @@ -0,0 +1,27 @@ +#! /bin/bash + +me=$(basename "${BASH_SOURCE[0]}"); + +if [[ $# -lt 1 ]]; then + echo "Usage: $me FILE..." >&2; + exit 1; +fi + +mkdir -p locale; +echo "Generating template..." >&2; +xgettext --from-code=UTF-8 \ + --keyword=S \ + --keyword=NS:1,2 \ + --keyword=N_ \ + --add-comments='Translators:' \ + --add-location=file \ + -o locale/template.pot \ + "$@" \ + || exit; + +find locale -name '*.po' -type f | while read -r file; do + echo "Updating $file..." >&2; + msgmerge --update "$file" locale/template.pot; +done + +echo "DONE!" >&2; diff --git a/mods/item_drop/README.txt b/mods/item_drop/README.txt new file mode 100644 index 0000000..b3a1c77 --- /dev/null +++ b/mods/item_drop/README.txt @@ -0,0 +1,6 @@ +Item_drop +===================================================================== +Main: PilzAdam +Lisc: WTFPL +Audi: WTFPL +Link: https://github.com/Calinou/carbone-ng diff --git a/mods/item_drop/README.txt.diff b/mods/item_drop/README.txt.diff new file mode 100644 index 0000000..de85314 --- /dev/null +++ b/mods/item_drop/README.txt.diff @@ -0,0 +1,50 @@ +1,42c1,6 +< ===ITEM_DROP MOD for MINETEST-C55=== +< by PilzAdam +< +< Introduction: +< This mod adds Minecraft like drop/pick up of items to Minetest. +< +< How to install: +< Unzip the archive an place it in minetest-base-directory/mods/minetest/ +< if you have a windows client or a linux run-in-place client. If you have +< a linux system-wide instalation place it in ~/.minetest/mods/minetest/. +< If you want to install this mod only in one world create the folder +< worldmods/ in your worlddirectory. +< For further information or help see: +< http://wiki.minetest.com/wiki/Installing_Mods +< +< How to use the mod: +< Just install it an everything works. +< +< For developers: +< You dont have to use get_drops() anymore because of changes in the +< builtin files of minetest. +< +< License: +< Sourcecode: WTFPL (see below) +< Sound: WTFPL (see below) +< +< See also: +< http://minetest.net/ +< +< DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE +< Version 2, December 2004 +< +< Copyright (C) 2004 Sam Hocevar +< +< Everyone is permitted to copy and distribute verbatim or modified +< copies of this license document, and changing it is allowed as long +< as the name is changed. +< +< DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE +< TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +< +< 0. You just DO WHAT THE FUCK YOU WANT TO. +--- +> Item_drop +> ===================================================================== +> Main: PilzAdam +> Lisc: WTFPL +> Audi: WTFPL +> Link: https://github.com/Calinou/carbone-ng diff --git a/mods/item_drop/init.lua b/mods/item_drop/init.lua new file mode 100644 index 0000000..403efd8 --- /dev/null +++ b/mods/item_drop/init.lua @@ -0,0 +1,111 @@ +minetest.register_globalstep(function(dtime) + for _,player in ipairs(minetest.get_connected_players()) do + if player:get_hp() > 0 or not minetest.setting_getbool("enable_damage") then + local pos = player:getpos() + local inv = player:get_inventory() + + for _,object in ipairs(minetest.get_objects_inside_radius(pos, 0.75)) do + if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then + if inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then + inv:add_item("main", ItemStack(object:get_luaentity().itemstring)) + if object:get_luaentity().itemstring ~= "" then + minetest.sound_play("item_drop_pickup", {pos = pos, gain = 0.3, max_hear_distance = 16}) + end + object:get_luaentity().itemstring = "" + object:remove() + end + end + end + + for _,object in ipairs(minetest.get_objects_inside_radius(pos, 0.75)) do + if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then + if object:get_luaentity().collect then + if inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then + local pos1 = pos + pos1.y = pos1.y+0.2 + local pos2 = object:getpos() + local vec = {x=pos1.x-pos2.x, y=pos1.y-pos2.y, z=pos1.z-pos2.z} + vec.x = vec.x*3 + vec.y = vec.y*3 + vec.z = vec.z*3 + object:setvelocity(vec) + object:get_luaentity().physical_state = false + object:get_luaentity().object:set_properties({ + physical = false + }) + + minetest.after(1, function(args) + local lua = object:get_luaentity() + if object == nil or lua == nil or lua.itemstring == nil then + return + end + if inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then + inv:add_item("main", ItemStack(object:get_luaentity().itemstring)) + if object:get_luaentity().itemstring ~= "" then + minetest.sound_play("item_drop_pickup", {pos = pos, gain = 0.3, max_hear_distance = 16}) + end + object:get_luaentity().itemstring = "" + object:remove() + else + object:setvelocity({x = 0,y = 0,z = 0}) + object:get_luaentity().physical_state = true + object:get_luaentity().object:set_properties({ + physical = true + }) + end + end, {player, object}) + + end + end + end + end + end + end +end) + +--[[ +function minetest.handle_node_drops(pos, drops, digger) + local inv + if minetest.setting_getbool("creative_mode") and digger and digger:is_player() then + inv = digger:get_inventory() + end + for _,item in ipairs(drops) do + local count, name + if type(item) == "string" then + count = 1 + name = item + else + count = item:get_count() + name = item:get_name() + end + if not inv or not inv:contains_item("main", ItemStack(name)) then + for i=1,count do + local obj = minetest.add_item(pos, name) + if obj ~= nil then + obj:get_luaentity().collect = true + local x = math.random(1, 5) + if math.random(1,2) == 1 then + x = -x + end + local z = math.random(1, 5) + if math.random(1,2) == 1 then + z = -z + end + obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z}) + + -- FIXME this doesnt work for deactiveted objects + if minetest.setting_get("remove_items") and tonumber(minetest.setting_get("remove_items")) then + minetest.after(tonumber(minetest.setting_get("remove_items")), function(obj) + obj:remove() + end, obj) + end + end + end + end + end +end +--]] + +if minetest.setting_getbool("log_mods") then + minetest.log("action", "Carbone: [item_drop] loaded.") +end diff --git a/mods/item_drop/sounds/item_drop_pickup.1.ogg b/mods/item_drop/sounds/item_drop_pickup.1.ogg new file mode 100644 index 0000000..2ae432d Binary files /dev/null and b/mods/item_drop/sounds/item_drop_pickup.1.ogg differ diff --git a/mods/item_drop/sounds/item_drop_pickup.2.ogg b/mods/item_drop/sounds/item_drop_pickup.2.ogg new file mode 100644 index 0000000..f58bf08 Binary files /dev/null and b/mods/item_drop/sounds/item_drop_pickup.2.ogg differ diff --git a/mods/item_drop/sounds/item_drop_pickup.3.ogg b/mods/item_drop/sounds/item_drop_pickup.3.ogg new file mode 100644 index 0000000..cf57c94 Binary files /dev/null and b/mods/item_drop/sounds/item_drop_pickup.3.ogg differ diff --git a/mods/item_drop/sounds/item_drop_pickup.4.ogg b/mods/item_drop/sounds/item_drop_pickup.4.ogg new file mode 100644 index 0000000..bfe99d9 Binary files /dev/null and b/mods/item_drop/sounds/item_drop_pickup.4.ogg differ diff --git a/mods/junglegrass/depends.txt b/mods/junglegrass/depends.txt new file mode 100644 index 0000000..c8f7251 --- /dev/null +++ b/mods/junglegrass/depends.txt @@ -0,0 +1 @@ +plants_lib diff --git a/mods/junglegrass/init.lua b/mods/junglegrass/init.lua new file mode 100644 index 0000000..b6047e0 --- /dev/null +++ b/mods/junglegrass/init.lua @@ -0,0 +1,151 @@ +-- This file supplies jungle grass for the plantlife modpack +-- Last revision: 2013-01-24 + +local SPAWN_DELAY = 1000 +local SPAWN_CHANCE = 200 +local GROW_DELAY = 500 +local GROW_CHANCE = 30 +local junglegrass_seed_diff = 329 + +local grasses_list = { + {"junglegrass:shortest","junglegrass:short" }, + {"junglegrass:short" ,"junglegrass:medium" }, + {"junglegrass:medium" ,"default:junglegrass" }, + {"default:junglegrass" , nil} +} + +minetest.register_node('junglegrass:medium', { + description = "Jungle Grass (medium height)", + drawtype = 'nodebox', + node_box = { + type = "fixed", + fixed = { + {-0.125, -0.5, -0.125, 0.125, 0.0625, 0.125}, -- NodeBox18 + {0.125, 0.0625, -0.125, 0.375, 0.3125, 0.125}, -- NodeBox19 + {0.25, -0.5, 0.25, 0.5, -0.25, 0.5}, -- NodeBox20 + {-0.5, -0.5, 0.25, -0.25, -0.375, 0.5}, -- NodeBox21 + {0.25, -0.5, -0.5, 0.5, -0.3125, -0.25}, -- NodeBox22 + {-0.5, -0.5, -0.5, -0.25, -0.1875, -0.25}, -- NodeBox23 + } + }, + tile_images = { 'junglegrass.png' }, + inventory_image = 'junglegrass_medium.png', + wield_image = 'junglegrass_medium.png', + sunlight_propagates = true, + paramtype = 'light', + paramtype2 = "facedir", + walkable = false, + groups = { snappy = 3, flammable=2, junglegrass=1, flora=1 }, + sounds = default.node_sound_leaves_defaults(), + drop = 'default:junglegrass', + + selection_box = { + type = "fixed", + fixed = {-0.4, -0.5, -0.4, 0.4, 0.5, 0.4}, + }, + buildable_to = true, +}) + +minetest.register_node('junglegrass:short', { + description = "Jungle Grass (short)", + drawtype = 'nodebox', + node_box = { + type = "fixed", + fixed = { + {-0.125, -0.5, -0.125, 0.125, -0.0625, 0.125}, -- NodeBox18 + {0.125, -0.0625, -0.125, 0.375, 0.1875, 0.125}, -- NodeBox19 + {0.25, -0.5, 0.25, 0.5, -0.3125, 0.5}, -- NodeBox20 + {-0.5, -0.5, 0.25, -0.25, -0.4375, 0.5}, -- NodeBox21 + {0.25, -0.5, -0.5, 0.5, -0.375, -0.25}, -- NodeBox22 + {-0.5, -0.5, -0.5, -0.25, -0.3125, -0.25}, -- NodeBox23 + } + }, + tile_images = { 'junglegrass.png' }, + inventory_image = 'junglegrass_short.png', + wield_image = 'junglegrass_short.png', + sunlight_propagates = true, + paramtype = 'light', + paramtype2 = "facedir", + walkable = false, + groups = { snappy = 3, flammable=2, junglegrass=1, flora=1 }, + sounds = default.node_sound_leaves_defaults(), + drop = 'default:junglegrass', + selection_box = { + type = "fixed", + fixed = {-0.4, -0.5, -0.4, 0.4, 0.3, 0.4}, + }, + buildable_to = true, +}) + +minetest.register_node('junglegrass:shortest', { + description = "Jungle Grass (very short)", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.125, -0.5, -0.125, 0.125, -0.0625, 0.125}, -- NodeBox18 + {0.125, -0.0625, -0.125, 0.375, 0.1875, 0.125}, -- NodeBox19 + } + }, + tile_images = { 'junglegrass.png' }, + inventory_image = 'junglegrass_shortest.png', + wield_image = 'junglegrass_shortest.png', + sunlight_propagates = true, + paramtype = 'light', + paramtype2 = "facedir", + walkable = false, + groups = { snappy = 3, flammable=2, junglegrass=1, flora=1 }, + sounds = default.node_sound_leaves_defaults(), + drop = 'default:junglegrass', + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}, + }, + buildable_to = true, +}) + +plantslib:spawn_on_surfaces({ + spawn_delay = SPAWN_DELAY, + spawn_plants = {"junglegrass:shortest"}, + avoid_radius = 4, + spawn_chance = SPAWN_CHANCE, + spawn_surfaces = {"default:dirt_with_grass", "default:cactus", "default:papyrus"}, + avoid_nodes = {"group:junglegrass", "default:junglegrass", "default:dry_shrub"}, + seed_diff = junglegrass_seed_diff, + light_min = 5 +}) + +plantslib:spawn_on_surfaces({ + spawn_delay = SPAWN_DELAY, + spawn_plants = {"junglegrass:shortest"}, + avoid_radius = 4, + spawn_chance = SPAWN_CHANCE*2, + spawn_surfaces = {"default:sand"}, + avoid_nodes = {"group:junglegrass", "default:junglegrass", "default:dry_shrub"}, + seed_diff = junglegrass_seed_diff, + light_min = 5 +}) + +plantslib:spawn_on_surfaces({ + spawn_delay = SPAWN_DELAY, + spawn_plants = {"junglegrass:shortest"}, + avoid_radius = 4, + spawn_chance = SPAWN_CHANCE*5, + spawn_surfaces = {"default:desert_sand"}, + avoid_nodes = {"group:junglegrass", "default:junglegrass", "default:dry_shrub"}, + seed_diff = junglegrass_seed_diff, + light_min = 5 +}) + +for i in ipairs(grasses_list) do + plantslib:grow_plants({ + grow_delay = GROW_DELAY, + grow_chance = GROW_CHANCE/2, + grow_plant = grasses_list[i][1], + grow_result = grasses_list[i][2], + dry_early_node = "default:desert_sand", + grow_nodes = {"default:dirt_with_grass", "default:sand", "default:desert_sand"} + }) +end + +print("[Junglegrass] Loaded.") diff --git a/mods/junglegrass/junglegrass-changelog.txt b/mods/junglegrass/junglegrass-changelog.txt new file mode 100644 index 0000000..75f708b --- /dev/null +++ b/mods/junglegrass/junglegrass-changelog.txt @@ -0,0 +1,24 @@ +Changelog +--------- + +2012-08-03: Mild rewrite to adapt the mod to use perlin noise while spawning. +Also got rid of the random-numbers-inside-abm stuff, now using the abm's own +'chance' parameter instead. Tuned various settings to try to retain the same +overall density and growth rates as in the previous version. Moved this +changelog into a separate file. + +2012-07-12: moved project to github. + +2012-07-09 (a bit later): tuned the spawn/grow rates a bit more, made the +numbers more sane. Added a radius check to limit the density of the spawned +grasses (they won't grow near each other or near dry shrubs or cactus, though +they still grow on the top of said cacti). + +2012-07-09: Added cactus, sand, and desert sand as spawning surfaces. Reduced +and tuned the spawn rates a bit to try to balance things out. Made that which +spawns on grass, dirt, or sand start out at any size, grow over time, and +eventually die off. Limited desert sand to only the first two sizes (the +smallest size will grow one step, eventually), which will eventually die and +turn into dry shrubs. Only the two smallest sizes can spawn on cactus or +papyrus (and they don't grow or die). Fixed slightly off-center smallest size. +Fixed selection boxes. diff --git a/mods/junglegrass/textures/junglegrass.png b/mods/junglegrass/textures/junglegrass.png new file mode 100644 index 0000000..a8f6971 Binary files /dev/null and b/mods/junglegrass/textures/junglegrass.png differ diff --git a/mods/junglegrass/textures/junglegrass_medium.png b/mods/junglegrass/textures/junglegrass_medium.png new file mode 100644 index 0000000..1e47fe9 Binary files /dev/null and b/mods/junglegrass/textures/junglegrass_medium.png differ diff --git a/mods/junglegrass/textures/junglegrass_short.png b/mods/junglegrass/textures/junglegrass_short.png new file mode 100644 index 0000000..b650e01 Binary files /dev/null and b/mods/junglegrass/textures/junglegrass_short.png differ diff --git a/mods/junglegrass/textures/junglegrass_shortest.png b/mods/junglegrass/textures/junglegrass_shortest.png new file mode 100644 index 0000000..e9557d0 Binary files /dev/null and b/mods/junglegrass/textures/junglegrass_shortest.png differ diff --git a/mods/mobs_animal b/mods/mobs_animal new file mode 160000 index 0000000..41d0594 --- /dev/null +++ b/mods/mobs_animal @@ -0,0 +1 @@ +Subproject commit 41d0594802d3b69943f7c563a09290026c423d78 diff --git a/mods/mobs_dolphin/License.txt b/mods/mobs_dolphin/License.txt new file mode 100644 index 0000000..7edb429 --- /dev/null +++ b/mods/mobs_dolphin/License.txt @@ -0,0 +1,13 @@ +DO WHAT YOU WANT TO PUBLIC LICENSE +or abbreviated DWYWPL + +December 2nd 2015 +License Copyright (C) 2015 Michael Tomaino (PlatinumArts@gmail.com) +www.sandboxgamemaker.com/DWYWPL/ + +DO WHAT YOU WANT TO PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +1. You are allowed to do whatever you want to with what content is using this license. +2. This content is provided 'as-is', without any express or implied warranty. In no event +will the authors be held liable for any damages arising from the use of this content. diff --git a/mods/mobs_dolphin/README.md b/mods/mobs_dolphin/README.md new file mode 100644 index 0000000..17b4b09 --- /dev/null +++ b/mods/mobs_dolphin/README.md @@ -0,0 +1,21 @@ +Minetest Mobs Dolphin (OCD-LGN edition) +======================================= + +This version of Mobs Dolphin for Minetest adds bloodthirsty dolphins to the game. + +Original Minetest forum link: + +![screenshot](http://i64.tinypic.com/33ae261.png) + +## Dependencies +This mod depends on **Mobs-Redo** that can be found here: + +## Installation +To install, just clone this repository into your "mods" directory. + +## Models +Original blender model is included in the `blender` folder. + + +## License +DWYWPL (by crustyserve and Tirifto) diff --git a/mods/mobs_dolphin/depends.txt b/mods/mobs_dolphin/depends.txt new file mode 100644 index 0000000..0707658 --- /dev/null +++ b/mods/mobs_dolphin/depends.txt @@ -0,0 +1,3 @@ +default +mobs +ethereal? diff --git a/mods/mobs_dolphin/init.lua b/mods/mobs_dolphin/init.lua new file mode 100644 index 0000000..9794e0e --- /dev/null +++ b/mods/mobs_dolphin/init.lua @@ -0,0 +1,120 @@ +minetest.register_craft({ + type = "cooking", + output = "mobs:meat", + recipe = "mobs_dolphin:dolphin_set", +}) + +if mobs.mod and mobs.mod == "redo" then + + local l_water_level = minetest.setting_get("water_level") - 1 + + -- Normal dolphin + + mobs:register_mob("mobs_dolphin:dolphin", { + type = "monster", + passive = false, + attack_type = "dogfight", + pathfinding = true, + reach = 3, + damage = 4, + hp_min = 30, + hp_max = 40, + armor = 150, + collisionbox = {-0.75, -0.5, -0.75, 0.75, 0.5, 0.75}, + visual = "mesh", + mesh = "mobs_dolphin.b3d", + textures = { + {"dolphin_blue.png"}, + {"dolphin_white.png"} + }, + sounds = { + random = "dolphin", + }, + drops = { + {name = "mobs:meat_raw", chance = 1, min = 1, max = 1}, + }, + makes_footstep_sound = false, + walk_velocity = 3, + run_velocity = 4, + fly = true, + fly_in = "default:water_source", + fall_speed = 0, + rotate = 0, + view_range = 10, + water_damage = 0, + lava_damage = 10, + light_damage = 0, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 66, + stand_end = 90, + walk_start = 0, + walk_end = 40, + run_start = 40, + run_end = 60, + punch_start = 40, + punch_end = 40, + }, + follow = {"ethereal:fish_raw"}, + on_rightclick = function(self, clicker) + mobs:capture_mob(self, clicker, 80, 100, 0, true, nil) + end + }) + --name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height + mobs:spawn_specific("mobs_dolphin:dolphin", {"default:water_source"}, {"default:water_flowing","default:water_source"}, 5, 20, 30, 100000, 2, -100, l_water_level) + mobs:register_egg("mobs_dolphin:dolphin", "Dolphin", "dolphin_inv.png", 0) + + -- Robot dolphin + + mobs:register_mob("mobs_dolphin:robot_dolphin", { + type = "monster", + passive = false, + attack_type = "dogfight", + pathfinding = true, + reach = 3, + damage = 8, + hp_min = 100, + hp_max = 200, + armor = 300, + collisionbox = {-0.75, -0.5, -0.75, 0.75, 0.5, 0.75}, + visual = "mesh", + mesh = "mobs_dolphin.b3d", + textures = { + {"robot_dolphin.png"} + }, + sounds = { + random = "robot_dolphin" + }, + drops = { + {name = "default:mese_crystal_fragment", chance = 1, min = 1, max = 3} + }, + makes_footstep_sound = false, + walk_velocity = 2, + run_velocity = 12, + fly = true, + fly_in = "default:water_source", + fall_speed = 0, + rotate = 0, + view_range = 12, + water_damage = 0, + lava_damage = 0, + light_damage = 0, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 66, + stand_end = 90, + walk_start = 0, + walk_end = 40, + run_start = 40, + run_end = 60, + punch_start = 40, + punch_end = 40, + } + + }) + --name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height + mobs:spawn_specific("mobs_dolphin:robot_dolphin", {"default:water_source"}, {"default:water_flowing","default:water_source"}, 0, 15, 30, 10000, 2, -1000, -100) + +end diff --git a/mods/mobs_dolphin/models/mobs_dolphin.b3d b/mods/mobs_dolphin/models/mobs_dolphin.b3d new file mode 100644 index 0000000..ce4a098 Binary files /dev/null and b/mods/mobs_dolphin/models/mobs_dolphin.b3d differ diff --git a/mods/mobs_dolphin/sounds/dolphin.ogg b/mods/mobs_dolphin/sounds/dolphin.ogg new file mode 100644 index 0000000..66d1a21 Binary files /dev/null and b/mods/mobs_dolphin/sounds/dolphin.ogg differ diff --git a/mods/mobs_dolphin/sounds/robot_dolphin.ogg b/mods/mobs_dolphin/sounds/robot_dolphin.ogg new file mode 100644 index 0000000..9431cff Binary files /dev/null and b/mods/mobs_dolphin/sounds/robot_dolphin.ogg differ diff --git a/mods/mobs_dolphin/textures/dolphin_blue.png b/mods/mobs_dolphin/textures/dolphin_blue.png new file mode 100644 index 0000000..796d30b Binary files /dev/null and b/mods/mobs_dolphin/textures/dolphin_blue.png differ diff --git a/mods/mobs_dolphin/textures/dolphin_inv.png b/mods/mobs_dolphin/textures/dolphin_inv.png new file mode 100644 index 0000000..39e7abb Binary files /dev/null and b/mods/mobs_dolphin/textures/dolphin_inv.png differ diff --git a/mods/mobs_dolphin/textures/dolphin_white.png b/mods/mobs_dolphin/textures/dolphin_white.png new file mode 100644 index 0000000..12f276f Binary files /dev/null and b/mods/mobs_dolphin/textures/dolphin_white.png differ diff --git a/mods/mobs_dolphin/textures/robot_dolphin.png b/mods/mobs_dolphin/textures/robot_dolphin.png new file mode 100644 index 0000000..6fb7cdd Binary files /dev/null and b/mods/mobs_dolphin/textures/robot_dolphin.png differ diff --git a/mods/mobs_horse b/mods/mobs_horse new file mode 160000 index 0000000..85e9ffc --- /dev/null +++ b/mods/mobs_horse @@ -0,0 +1 @@ +Subproject commit 85e9ffc80aa96d36f326b6871f3baae3ec7886ae diff --git a/mods/mobs_monster b/mods/mobs_monster new file mode 160000 index 0000000..c1799f2 --- /dev/null +++ b/mods/mobs_monster @@ -0,0 +1 @@ +Subproject commit c1799f203cb1b0854df17d95e6a1ff4104559dfd diff --git a/mods/mobs_redo b/mods/mobs_redo new file mode 160000 index 0000000..763fbee --- /dev/null +++ b/mods/mobs_redo @@ -0,0 +1 @@ +Subproject commit 763fbee36d0c917c8b81f64021fa21178b1dd7c1 diff --git a/mods/mobs_shade/depends.txt b/mods/mobs_shade/depends.txt new file mode 100644 index 0000000..cbfbcdb --- /dev/null +++ b/mods/mobs_shade/depends.txt @@ -0,0 +1,2 @@ +default +mobs \ No newline at end of file diff --git a/mods/mobs_shade/init.lua b/mods/mobs_shade/init.lua new file mode 100644 index 0000000..e73dce7 --- /dev/null +++ b/mods/mobs_shade/init.lua @@ -0,0 +1,51 @@ + +-- Ghost/Shade by BlockMen + +mobs:register_mob("mobs_shade:shade", { + type = "monster", + passive = false, + damage = 2, + attack_type = "dogfight", + hp_min = 7, + hp_max = 12, + armor = 130, + collisionbox = {-0.3, -0.5, -0.3, 0.3, 0.75, 0.3}, + visual = "mesh", + mesh = "creatures_mob.x", + textures = { + {"creatures_ghost.png"}, + }, + blood_texture = "tnt_smoke.png", + visual_size = {x=1, y=1}, + makes_footstep_sound = false, + sounds = { + random = "creatures_ghost", + damage = "creatures_ghost_hit", + death = "creatures_ghost_death" + }, + walk_velocity = 2, + run_velocity = 2, + fall_speed = 0, + jump = true, + fly = true, + fly_in = "air", + water_damage = 0, + lava_damage = 0, + light_damage = 2, + view_range = 14, + animation = { + speed_normal = 30, speed_run = 30, + walk_start = 168, walk_end = 187, + + }, +}) + +--mobs:register_spawn("mobs_shade:shade", {"default:dirt_with_grass","default:desert_sand"}, 5, 0, 7000, 1, 31000) +mobs:register_egg("mobs_shade:shade", "Shade", "default_cloud.png", 1) + +minetest.register_on_dieplayer(function (player) + local pos = vector.round(player:getpos()) + + local mob = minetest.add_entity(pos, "mobs_shade:shade") +end) + diff --git a/mods/mobs_shade/licenses/Modified zlib license b/mods/mobs_shade/licenses/Modified zlib license new file mode 100644 index 0000000..bcd647e --- /dev/null +++ b/mods/mobs_shade/licenses/Modified zlib license @@ -0,0 +1,19 @@ +This software is provided 'as-is', without any express or implied warranty. In no +event will the authors be held liable for any damages arising from the use of +this software. + +Permission is granted to anyone to use this software for any purpose, including +commercial applications, and to alter it and redistribute it freely, subject to the +following restrictions: + + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software in a +product, an acknowledgment in the product documentation is required. + +2. Altered source versions must be plainly marked as such, and must not +be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source distribution. + + diff --git a/mods/mobs_shade/models/creatures_mob.x b/mods/mobs_shade/models/creatures_mob.x new file mode 100644 index 0000000..186943f --- /dev/null +++ b/mods/mobs_shade/models/creatures_mob.x @@ -0,0 +1,5524 @@ +xof 0303txt 0032 + +template XSkinMeshHeader { + <3cf169ce-ff7c-44ab-93c0-f78f62d172e2> + WORD nMaxSkinWeightsPerVertex; + WORD nMaxSkinWeightsPerFace; + WORD nBones; +} + +template SkinWeights { + <6f0d123b-bad2-4167-a0d0-80224f25fabb> + STRING transformNodeName; + DWORD nWeights; + array DWORD vertexIndices[nWeights]; + array float weights[nWeights]; + Matrix4x4 matrixOffset; +} + +Frame Root { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000,-0.000000, 1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Frame Armature { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000, 0.000000,-10.000000, 1.000000;; + } + Frame Armature_Body { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000,-1.000000, 0.000000, 0.000000, + -0.000000, 0.000000, 6.750000, 1.000000;; + } + Frame Armature_Arm_Left { + FrameTransformMatrix { + 0.989214,-0.143886,-0.027450, 0.000000, + -0.143940,-0.989586,-0.000000, 0.000000, + -0.027164, 0.003951,-0.999623, 0.000000, + -2.000000, 6.750000, 0.000000, 1.000000;; + } + } // End of Armature_Arm_Left + Frame Armature_Arm_Right { + FrameTransformMatrix { + 0.989214, 0.143886, 0.027450, 0.000000, + 0.143940,-0.989586,-0.000000, 0.000000, + 0.027164, 0.003951,-0.999623, 0.000000, + 2.000000, 6.750000, 0.000000, 1.000000;; + } + } // End of Armature_Arm_Right + Frame Armature_Head { + FrameTransformMatrix { + -1.000000,-0.000000, 0.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + -0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 6.750000, 0.000000, 1.000000;; + } + } // End of Armature_Head + Frame Armature_Leg_Left { + FrameTransformMatrix { + 1.000000, 0.000000,-0.000000, 0.000000, + -0.000000,-1.000000,-0.000000, 0.000000, + -0.000000, 0.000000,-1.000000, 0.000000, + -1.000000, 0.000000,-0.000001, 1.000000;; + } + } // End of Armature_Leg_Left + Frame Armature_Leg_Right { + FrameTransformMatrix { + 1.000000, 0.000000,-0.000000, 0.000000, + -0.000000,-1.000000,-0.000000, 0.000000, + -0.000000, 0.000000,-1.000000, 0.000000, + 1.000000, 0.000000,-0.000001, 1.000000;; + } + } // End of Armature_Leg_Right + } // End of Armature_Body + Frame Player { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Mesh { // Player mesh + 168; + 2.000000;-1.000000;13.500000;, + -2.000000;-1.000000;13.500000;, + -2.000000;-1.000000; 6.750000;, + 2.000000;-1.000000; 6.750000;, + -2.000000;-1.000000;13.500000;, + -2.000000; 1.000000;13.500000;, + -2.000000; 1.000000; 6.750000;, + -2.000000;-1.000000; 6.750000;, + -2.000000; 1.000000;13.500000;, + 2.000000; 1.000000;13.500000;, + 2.000000; 1.000000; 6.750000;, + -2.000000; 1.000000; 6.750000;, + 2.000000; 1.000000; 6.750000;, + 2.000000;-1.000000; 6.750000;, + -2.000000;-1.000000; 6.750000;, + -2.000000; 1.000000; 6.750000;, + -2.000000; 1.000000;13.500000;, + -2.000000;-1.000000;13.500000;, + 2.000000;-1.000000;13.500000;, + 2.000000; 1.000000;13.500000;, + 0.000000; 1.000000; 6.750000;, + 0.000000; 1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 6.750000;, + -2.000000;-1.000000;13.500000;, + -4.000000;-1.000000;13.500000;, + -4.000000;-1.000000; 6.750000;, + -2.000000;-1.000000; 6.750000;, + -2.000000; 1.000000;13.500000;, + -2.000000;-1.000000;13.500000;, + -2.000000;-1.000000; 6.750000;, + -2.000000; 1.000000; 6.750000;, + 0.000000; 1.000000; 0.000000;, + -0.000000;-1.000000; 0.000000;, + -2.000000;-1.000000; 0.000000;, + -2.000000; 1.000000; 0.000000;, + -2.000000;-1.000000; 6.750000;, + -2.000000; 1.000000; 6.750000;, + -2.000000; 1.000000; 0.000000;, + -2.000000;-1.000000; 0.000000;, + 2.000000;-2.000000;17.500000;, + -2.000000;-2.000000;17.500000;, + -2.000000;-2.000000;13.500000;, + 2.000000;-2.000000;13.500000;, + -2.000000;-2.000000;17.500000;, + -2.000000; 2.000000;17.500000;, + -2.000000; 2.000000;13.500000;, + -2.000000;-2.000000;13.500000;, + -2.000000; 2.000000;17.500000;, + 2.000000; 2.000000;17.500000;, + 2.000000; 2.000000;13.500000;, + -2.000000; 2.000000;13.500000;, + 2.000000; 2.000000;13.500000;, + 2.000000;-2.000000;13.500000;, + -2.000000;-2.000000;13.500000;, + -2.000000; 2.000000;13.500000;, + -2.000000; 2.000000;17.500000;, + -2.000000;-2.000000;17.500000;, + 2.000000;-2.000000;17.500000;, + 2.000000; 2.000000;17.500000;, + 0.000000;-1.000000; 6.750000;, + -2.000000;-1.000000; 6.750000;, + -2.000000;-1.000000; 0.000000;, + -0.000000;-1.000000; 0.000000;, + 2.000000; 1.000000; 6.750000;, + 2.000000; 1.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 0.000000; 1.000000; 6.750000;, + -2.000000; 1.000000; 6.750000;, + 0.000000; 1.000000; 6.750000;, + 0.000000; 1.000000; 0.000000;, + -2.000000; 1.000000; 0.000000;, + 2.000000; 1.000000; 6.750000;, + 4.000000; 1.000000; 6.750000;, + 4.000000;-1.000000; 6.750000;, + 2.000000;-1.000000; 6.750000;, + 4.000000; 1.000000;13.500000;, + 2.000000; 1.000000;13.500000;, + 2.000000;-1.000000;13.500000;, + 4.000000;-1.000000;13.500000;, + 0.000000;-1.000000; 6.750000;, + 0.000000;-1.000000; 0.000000;, + 2.000000;-1.000000; 0.000000;, + 2.000000;-1.000000; 6.750000;, + 0.000000; 1.000000; 6.750000;, + 0.000000;-1.000000; 6.750000;, + -0.000000;-1.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 2.000000;-1.000000; 6.750000;, + 2.000000;-1.000000; 0.000000;, + 2.000000; 1.000000; 0.000000;, + 2.000000; 1.000000; 6.750000;, + 2.000000;-1.000000;13.500000;, + 2.000000;-1.000000; 6.750000;, + 2.000000; 1.000000; 6.750000;, + 2.000000; 1.000000;13.500000;, + 2.000000;-2.000000;17.500000;, + 2.000000;-2.000000;13.500000;, + 2.000000; 2.000000;13.500000;, + 2.000000; 2.000000;17.500000;, + -2.000000; 1.000000; 6.750000;, + -2.000000;-1.000000; 6.750000;, + 0.000000;-1.000000; 6.750000;, + 0.000000; 1.000000; 6.750000;, + -4.000000; 1.000000;13.500000;, + -2.000000; 1.000000;13.500000;, + -2.000000; 1.000000; 6.750000;, + -4.000000; 1.000000; 6.750000;, + -4.000000;-1.000000;13.500000;, + -4.000000; 1.000000;13.500000;, + -4.000000; 1.000000; 6.750000;, + -4.000000;-1.000000; 6.750000;, + 4.000000;-1.000000;13.500000;, + 4.000000;-1.000000; 6.750000;, + 4.000000; 1.000000; 6.750000;, + 4.000000; 1.000000;13.500000;, + -4.000000; 1.000000;13.500000;, + -4.000000;-1.000000;13.500000;, + -2.000000;-1.000000;13.500000;, + -2.000000; 1.000000;13.500000;, + 4.000000; 1.000000;13.500000;, + 4.000000; 1.000000; 6.750000;, + 2.000000; 1.000000; 6.750000;, + 2.000000; 1.000000;13.500000;, + 0.000000; 1.000000; 0.000000;, + 2.000000; 1.000000; 0.000000;, + 2.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 2.000000; 1.000000;13.500000;, + 2.000000; 1.000000; 6.750000;, + 2.000000;-1.000000; 6.750000;, + 2.000000;-1.000000;13.500000;, + -2.000000; 1.000000; 6.750000;, + -2.000000;-1.000000; 6.750000;, + -4.000000;-1.000000; 6.750000;, + -4.000000; 1.000000; 6.750000;, + 2.000000;-1.000000;13.500000;, + 2.000000;-1.000000; 6.750000;, + 4.000000;-1.000000; 6.750000;, + 4.000000;-1.000000;13.500000;, + 2.000000; 1.000000; 6.750000;, + 0.000000; 1.000000; 6.750000;, + 0.000000;-1.000000; 6.750000;, + 2.000000;-1.000000; 6.750000;, + 2.200000;-2.200000;17.700001;, + -2.200000;-2.200000;17.700001;, + -2.200000;-2.200000;13.300000;, + 2.200000;-2.200000;13.300000;, + -2.200000;-2.200000;17.700001;, + -2.200000; 2.200000;17.700001;, + -2.200000; 2.200000;13.300000;, + -2.200000;-2.200000;13.300000;, + -2.200000; 2.200000;17.700001;, + 2.200000; 2.200000;17.700001;, + 2.200000; 2.200000;13.300000;, + -2.200000; 2.200000;13.300000;, + 2.200000; 2.200000;13.300000;, + 2.200000;-2.200000;13.300000;, + -2.200000;-2.200000;13.300000;, + -2.200000; 2.200000;13.300000;, + -2.200000; 2.200000;17.700001;, + -2.200000;-2.200000;17.700001;, + 2.200000;-2.200000;17.700001;, + 2.200000; 2.200000;17.700001;, + 2.200000;-2.200000;17.700001;, + 2.200000;-2.200000;13.300000;, + 2.200000; 2.200000;13.300000;, + 2.200000; 2.200000;17.700001;; + 42; + 4;3,2,1,0;, + 4;7,6,5,4;, + 4;11,10,9,8;, + 4;15,14,13,12;, + 4;19,18,17,16;, + 4;23,22,21,20;, + 4;27,26,25,24;, + 4;31,30,29,28;, + 4;35,34,33,32;, + 4;39,38,37,36;, + 4;43,42,41,40;, + 4;47,46,45,44;, + 4;51,50,49,48;, + 4;55,54,53,52;, + 4;59,58,57,56;, + 4;63,62,61,60;, + 4;67,66,65,64;, + 4;71,70,69,68;, + 4;75,74,73,72;, + 4;79,78,77,76;, + 4;83,82,81,80;, + 4;87,86,85,84;, + 4;91,90,89,88;, + 4;95,94,93,92;, + 4;99,98,97,96;, + 4;103,102,101,100;, + 4;107,106,105,104;, + 4;111,110,109,108;, + 4;115,114,113,112;, + 4;119,118,117,116;, + 4;123,122,121,120;, + 4;127,126,125,124;, + 4;131,130,129,128;, + 4;135,134,133,132;, + 4;139,138,137,136;, + 4;143,142,141,140;, + 4;147,146,145,144;, + 4;151,150,149,148;, + 4;155,154,153,152;, + 4;159,158,157,156;, + 4;163,162,161,160;, + 4;167,166,165,164;; + MeshTextureCoords { // Player UV coordinates + 168; + 0.625000; 0.625000;, + 0.500000; 0.625000;, + 0.500000; 1.000000;, + 0.625000; 1.000000;, + 0.500000; 0.625000;, + 0.437500; 0.625000;, + 0.437500; 1.000000;, + 0.500000; 1.000000;, + 0.437500; 0.625000;, + 0.312500; 0.625000;, + 0.312500; 1.000000;, + 0.437500; 1.000000;, + 0.562500; 0.625000;, + 0.562500; 0.500000;, + 0.437500; 0.500000;, + 0.437500; 0.625000;, + 0.437500; 0.625000;, + 0.437500; 0.500000;, + 0.312500; 0.500000;, + 0.312500; 0.625000;, + 0.187500; 0.625000;, + 0.187500; 1.000000;, + 0.125000; 1.000000;, + 0.125000; 0.625000;, + 0.812500; 0.625000;, + 0.875000; 0.625000;, + 0.875000; 1.000000;, + 0.812500; 1.000000;, + 0.750000; 0.625000;, + 0.812500; 0.625000;, + 0.812500; 1.000000;, + 0.750000; 1.000000;, + 0.187500; 0.625000;, + 0.187500; 0.500000;, + 0.125000; 0.500000;, + 0.125000; 0.625000;, + 0.000000; 0.625000;, + 0.062500; 0.625000;, + 0.062500; 1.000000;, + 0.000000; 1.000000;, + 0.500000; 0.250000;, + 0.375000; 0.250000;, + 0.375000; 0.500000;, + 0.500000; 0.500000;, + 0.375000; 0.250000;, + 0.250000; 0.250000;, + 0.250000; 0.500000;, + 0.375000; 0.500000;, + 0.250000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.500000;, + 0.250000; 0.500000;, + 0.375000; 0.250000;, + 0.375000; 0.000000;, + 0.250000; 0.000000;, + 0.250000; 0.250000;, + 0.250000; 0.250000;, + 0.250000; 0.000000;, + 0.125000; 0.000000;, + 0.125000; 0.250000;, + 0.250000; 0.625000;, + 0.187500; 0.625000;, + 0.187500; 1.000000;, + 0.250000; 1.000000;, + 0.125000; 0.625000;, + 0.125000; 1.000000;, + 0.062500; 1.000000;, + 0.062500; 0.625000;, + 0.125000; 0.625000;, + 0.062500; 0.625000;, + 0.062500; 1.000000;, + 0.125000; 1.000000;, + 0.750000; 0.625000;, + 0.812500; 0.625000;, + 0.812500; 0.500000;, + 0.750000; 0.500000;, + 0.687500; 0.625000;, + 0.750000; 0.625000;, + 0.750000; 0.500000;, + 0.687500; 0.500000;, + 0.250000; 0.625000;, + 0.250000; 1.000000;, + 0.187500; 1.000000;, + 0.187500; 0.625000;, + 0.187500; 0.625000;, + 0.125000; 0.625000;, + 0.125000; 1.000000;, + 0.187500; 1.000000;, + 0.000000; 0.625000;, + 0.000000; 1.000000;, + 0.062500; 1.000000;, + 0.062500; 0.625000;, + 0.250000; 0.625000;, + 0.250000; 1.000000;, + 0.312500; 1.000000;, + 0.312500; 0.625000;, + 0.000000; 0.250000;, + 0.000000; 0.500000;, + 0.125000; 0.500000;, + 0.125000; 0.250000;, + 0.125000; 0.625000;, + 0.125000; 0.500000;, + 0.062500; 0.500000;, + 0.062500; 0.625000;, + 0.687500; 0.625000;, + 0.750000; 0.625000;, + 0.750000; 1.000000;, + 0.687500; 1.000000;, + 0.687500; 0.625000;, + 0.625000; 0.625000;, + 0.625000; 1.000000;, + 0.687500; 1.000000;, + 0.687500; 0.625000;, + 0.687500; 1.000000;, + 0.625000; 1.000000;, + 0.625000; 0.625000;, + 0.687500; 0.625000;, + 0.687500; 0.500000;, + 0.750000; 0.500000;, + 0.750000; 0.625000;, + 0.687500; 0.625000;, + 0.687500; 1.000000;, + 0.750000; 1.000000;, + 0.750000; 0.625000;, + 0.187500; 0.625000;, + 0.125000; 0.625000;, + 0.125000; 0.500000;, + 0.187500; 0.500000;, + 0.750000; 0.625000;, + 0.750000; 1.000000;, + 0.812500; 1.000000;, + 0.812500; 0.625000;, + 0.750000; 0.625000;, + 0.750000; 0.500000;, + 0.812500; 0.500000;, + 0.812500; 0.625000;, + 0.812500; 0.625000;, + 0.812500; 1.000000;, + 0.875000; 1.000000;, + 0.875000; 0.625000;, + 0.125000; 0.625000;, + 0.062500; 0.625000;, + 0.062500; 0.500000;, + 0.125000; 0.500000;, + 1.000000; 0.250000;, + 0.875000; 0.250000;, + 0.875000; 0.500000;, + 1.000000; 0.500000;, + 0.875000; 0.250000;, + 0.750000; 0.250000;, + 0.750000; 0.500000;, + 0.875000; 0.500000;, + 0.750000; 0.250000;, + 0.625000; 0.250000;, + 0.625000; 0.500000;, + 0.750000; 0.500000;, + 0.875000; 0.250000;, + 0.875000; 0.000000;, + 0.750000; 0.000000;, + 0.750000; 0.250000;, + 0.750000; 0.250000;, + 0.750000; 0.000000;, + 0.625000; 0.000000;, + 0.625000; 0.250000;, + 0.500000; 0.250000;, + 0.500000; 0.500000;, + 0.625000; 0.500000;, + 0.625000; 0.250000;; + } // End of Player UV coordinates + XSkinMeshHeader { + 1; + 3; + 6; + } + SkinWeights { + "Armature_Leg_Right"; + 24; + 20, + 21, + 22, + 23, + 64, + 65, + 66, + 67, + 80, + 81, + 82, + 83, + 88, + 89, + 90, + 91, + 124, + 125, + 126, + 127, + 140, + 141, + 142, + 143; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 1.000000,-0.000000,-0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + -0.000000,-1.000000, 0.000000, 0.000000, + -1.000000, 6.750001,-0.000001, 1.000000;; + } // End of Armature_Leg_Right skin weights + SkinWeights { + "Armature_Body"; + 24; + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 92, + 93, + 94, + 95; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000,-6.750000,-0.000001, 1.000000;; + } // End of Armature_Body skin weights + SkinWeights { + "Armature_Arm_Right"; + 24; + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 112, + 113, + 114, + 115, + 120, + 121, + 122, + 123, + 128, + 129, + 130, + 131, + 136, + 137, + 138, + 139; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.989214, 0.143940, 0.027164, 0.000000, + -0.027450,-0.000000, 0.999623, 0.000000, + 0.143886,-0.989587, 0.003951, 0.000000, + -3.920884,13.071540,-0.107668, 1.000000;; + } // End of Armature_Arm_Right skin weights + SkinWeights { + "Armature_Leg_Left"; + 24; + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 60, + 61, + 62, + 63, + 68, + 69, + 70, + 71, + 84, + 85, + 86, + 87, + 100, + 101, + 102, + 103; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 1.000000,-0.000000,-0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + -0.000000,-1.000000, 0.000000, 0.000000, + 1.000000, 6.750001,-0.000001, 1.000000;; + } // End of Armature_Leg_Left skin weights + SkinWeights { + "Armature_Arm_Left"; + 24; + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 116, + 117, + 118, + 119, + 132, + 133, + 134, + 135; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.989214,-0.143940,-0.027164, 0.000000, + 0.027450,-0.000000, 0.999623, 0.000000, + -0.143886,-0.989587, 0.003951, 0.000000, + 3.920884,13.071540,-0.107668, 1.000000;; + } // End of Armature_Arm_Left skin weights + SkinWeights { + "Armature_Head"; + 48; + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 96, + 97, + 98, + 99, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + -1.000000, 0.000000,-0.000000, 0.000000, + -0.000000,-0.000000, 1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + -0.000000,-13.500000,-0.000002, 1.000000;; + } // End of Armature_Head skin weights + } // End of Player mesh + } // End of Player + } // End of Armature +} // End of Root +AnimationSet ArmatureAction { + Animation { + {Armature} + AnimationKey { // Rotation + 0; + 189; + 0;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 1;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 2;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 3;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 4;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 5;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 6;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 7;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 8;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 9;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 10;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 11;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 12;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 13;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 14;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 15;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 16;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 17;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 18;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 19;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 20;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 21;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 22;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 23;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 24;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 25;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 26;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 27;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 28;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 29;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 30;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 31;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 32;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 33;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 34;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 35;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 36;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 37;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 38;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 39;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 40;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 41;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 42;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 43;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 44;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 45;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 46;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 47;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 48;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 49;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 50;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 51;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 52;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 53;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 54;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 55;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 56;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 57;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 58;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 59;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 60;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 61;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 62;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 63;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 64;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 65;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 66;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 67;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 68;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 69;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 70;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 71;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 72;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 73;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 74;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 75;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 76;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 77;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 78;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 79;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 80;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 81;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 82;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 83;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 84;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 85;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 86;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 87;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 88;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 89;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 90;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 91;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 92;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 93;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 94;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 95;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 96;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 97;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 98;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 99;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 100;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 101;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 102;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 103;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 104;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 105;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 106;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 107;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 108;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 109;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 110;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 111;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 112;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 113;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 114;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 115;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 116;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 117;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 118;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 119;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 120;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 121;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 122;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 123;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 124;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 125;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 126;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 127;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 128;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 129;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 130;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 131;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 132;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 133;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 134;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 135;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 136;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 137;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 138;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 139;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 140;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 141;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 142;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 143;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 144;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 145;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 146;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 147;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 148;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 149;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 150;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 151;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 152;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 153;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 154;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 155;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 156;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 157;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 158;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 159;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 160;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 161;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 162;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 163;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 164;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 165;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 166;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 167;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 168;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 169;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 170;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 171;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 172;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 173;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 174;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 175;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 176;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 177;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 178;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 179;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 180;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 181;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 182;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 183;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 184;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 185;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 186;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 187;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 188;4;-1.000000, 0.000000, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 189; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 189; + 0;3; 0.000000, 0.000000,-10.000000;;, + 1;3; 0.000000, 0.000000,-10.000000;;, + 2;3; 0.000000, 0.000000,-10.000000;;, + 3;3; 0.000000, 0.000000,-10.000000;;, + 4;3; 0.000000, 0.000000,-10.000000;;, + 5;3; 0.000000, 0.000000,-10.000000;;, + 6;3; 0.000000, 0.000000,-10.000000;;, + 7;3; 0.000000, 0.000000,-10.000000;;, + 8;3; 0.000000, 0.000000,-10.000000;;, + 9;3; 0.000000, 0.000000,-10.000000;;, + 10;3; 0.000000, 0.000000,-10.000000;;, + 11;3; 0.000000, 0.000000,-10.000000;;, + 12;3; 0.000000, 0.000000,-10.000000;;, + 13;3; 0.000000, 0.000000,-10.000000;;, + 14;3; 0.000000, 0.000000,-10.000000;;, + 15;3; 0.000000, 0.000000,-10.000000;;, + 16;3; 0.000000, 0.000000,-10.000000;;, + 17;3; 0.000000, 0.000000,-10.000000;;, + 18;3; 0.000000, 0.000000,-10.000000;;, + 19;3; 0.000000, 0.000000,-10.000000;;, + 20;3; 0.000000, 0.000000,-10.000000;;, + 21;3; 0.000000, 0.000000,-10.000000;;, + 22;3; 0.000000, 0.000000,-10.000000;;, + 23;3; 0.000000, 0.000000,-10.000000;;, + 24;3; 0.000000, 0.000000,-10.000000;;, + 25;3; 0.000000, 0.000000,-10.000000;;, + 26;3; 0.000000, 0.000000,-10.000000;;, + 27;3; 0.000000, 0.000000,-10.000000;;, + 28;3; 0.000000, 0.000000,-10.000000;;, + 29;3; 0.000000, 0.000000,-10.000000;;, + 30;3; 0.000000, 0.000000,-10.000000;;, + 31;3; 0.000000, 0.000000,-10.000000;;, + 32;3; 0.000000, 0.000000,-10.000000;;, + 33;3; 0.000000, 0.000000,-10.000000;;, + 34;3; 0.000000, 0.000000,-10.000000;;, + 35;3; 0.000000, 0.000000,-10.000000;;, + 36;3; 0.000000, 0.000000,-10.000000;;, + 37;3; 0.000000, 0.000000,-10.000000;;, + 38;3; 0.000000, 0.000000,-10.000000;;, + 39;3; 0.000000, 0.000000,-10.000000;;, + 40;3; 0.000000, 0.000000,-10.000000;;, + 41;3; 0.000000, 0.000000,-10.000000;;, + 42;3; 0.000000, 0.000000,-10.000000;;, + 43;3; 0.000000, 0.000000,-10.000000;;, + 44;3; 0.000000, 0.000000,-10.000000;;, + 45;3; 0.000000, 0.000000,-10.000000;;, + 46;3; 0.000000, 0.000000,-10.000000;;, + 47;3; 0.000000, 0.000000,-10.000000;;, + 48;3; 0.000000, 0.000000,-10.000000;;, + 49;3; 0.000000, 0.000000,-10.000000;;, + 50;3; 0.000000, 0.000000,-10.000000;;, + 51;3; 0.000000, 0.000000,-10.000000;;, + 52;3; 0.000000, 0.000000,-10.000000;;, + 53;3; 0.000000, 0.000000,-10.000000;;, + 54;3; 0.000000, 0.000000,-10.000000;;, + 55;3; 0.000000, 0.000000,-10.000000;;, + 56;3; 0.000000, 0.000000,-10.000000;;, + 57;3; 0.000000, 0.000000,-10.000000;;, + 58;3; 0.000000, 0.000000,-10.000000;;, + 59;3; 0.000000, 0.000000,-10.000000;;, + 60;3; 0.000000, 0.000000,-10.000000;;, + 61;3; 0.000000, 0.000000,-10.000000;;, + 62;3; 0.000000, 0.000000,-10.000000;;, + 63;3; 0.000000, 0.000000,-10.000000;;, + 64;3; 0.000000, 0.000000,-10.000000;;, + 65;3; 0.000000, 0.000000,-10.000000;;, + 66;3; 0.000000, 0.000000,-10.000000;;, + 67;3; 0.000000, 0.000000,-10.000000;;, + 68;3; 0.000000, 0.000000,-10.000000;;, + 69;3; 0.000000, 0.000000,-10.000000;;, + 70;3; 0.000000, 0.000000,-10.000000;;, + 71;3; 0.000000, 0.000000,-10.000000;;, + 72;3; 0.000000, 0.000000,-10.000000;;, + 73;3; 0.000000, 0.000000,-10.000000;;, + 74;3; 0.000000, 0.000000,-10.000000;;, + 75;3; 0.000000, 0.000000,-10.000000;;, + 76;3; 0.000000, 0.000000,-10.000000;;, + 77;3; 0.000000, 0.000000,-10.000000;;, + 78;3; 0.000000, 0.000000,-10.000000;;, + 79;3; 0.000000, 0.000000,-10.000000;;, + 80;3; 0.000000, 0.000000,-10.000000;;, + 81;3; 0.000000, 0.000000,-10.000000;;, + 82;3; 0.000000, 0.000000,-10.000000;;, + 83;3; 0.000000, 0.000000,-10.000000;;, + 84;3; 0.000000, 0.000000,-10.000000;;, + 85;3; 0.000000, 0.000000,-10.000000;;, + 86;3; 0.000000, 0.000000,-10.000000;;, + 87;3; 0.000000, 0.000000,-10.000000;;, + 88;3; 0.000000, 0.000000,-10.000000;;, + 89;3; 0.000000, 0.000000,-10.000000;;, + 90;3; 0.000000, 0.000000,-10.000000;;, + 91;3; 0.000000, 0.000000,-10.000000;;, + 92;3; 0.000000, 0.000000,-10.000000;;, + 93;3; 0.000000, 0.000000,-10.000000;;, + 94;3; 0.000000, 0.000000,-10.000000;;, + 95;3; 0.000000, 0.000000,-10.000000;;, + 96;3; 0.000000, 0.000000,-10.000000;;, + 97;3; 0.000000, 0.000000,-10.000000;;, + 98;3; 0.000000, 0.000000,-10.000000;;, + 99;3; 0.000000, 0.000000,-10.000000;;, + 100;3; 0.000000, 0.000000,-10.000000;;, + 101;3; 0.000000, 0.000000,-10.000000;;, + 102;3; 0.000000, 0.000000,-10.000000;;, + 103;3; 0.000000, 0.000000,-10.000000;;, + 104;3; 0.000000, 0.000000,-10.000000;;, + 105;3; 0.000000, 0.000000,-10.000000;;, + 106;3; 0.000000, 0.000000,-10.000000;;, + 107;3; 0.000000, 0.000000,-10.000000;;, + 108;3; 0.000000, 0.000000,-10.000000;;, + 109;3; 0.000000, 0.000000,-10.000000;;, + 110;3; 0.000000, 0.000000,-10.000000;;, + 111;3; 0.000000, 0.000000,-10.000000;;, + 112;3; 0.000000, 0.000000,-10.000000;;, + 113;3; 0.000000, 0.000000,-10.000000;;, + 114;3; 0.000000, 0.000000,-10.000000;;, + 115;3; 0.000000, 0.000000,-10.000000;;, + 116;3; 0.000000, 0.000000,-10.000000;;, + 117;3; 0.000000, 0.000000,-10.000000;;, + 118;3; 0.000000, 0.000000,-10.000000;;, + 119;3; 0.000000, 0.000000,-10.000000;;, + 120;3; 0.000000, 0.000000,-10.000000;;, + 121;3; 0.000000, 0.000000,-10.000000;;, + 122;3; 0.000000, 0.000000,-10.000000;;, + 123;3; 0.000000, 0.000000,-10.000000;;, + 124;3; 0.000000, 0.000000,-10.000000;;, + 125;3; 0.000000, 0.000000,-10.000000;;, + 126;3; 0.000000, 0.000000,-10.000000;;, + 127;3; 0.000000, 0.000000,-10.000000;;, + 128;3; 0.000000, 0.000000,-10.000000;;, + 129;3; 0.000000, 0.000000,-10.000000;;, + 130;3; 0.000000, 0.000000,-10.000000;;, + 131;3; 0.000000, 0.000000,-10.000000;;, + 132;3; 0.000000, 0.000000,-10.000000;;, + 133;3; 0.000000, 0.000000,-10.000000;;, + 134;3; 0.000000, 0.000000,-10.000000;;, + 135;3; 0.000000, 0.000000,-10.000000;;, + 136;3; 0.000000, 0.000000,-10.000000;;, + 137;3; 0.000000, 0.000000,-10.000000;;, + 138;3; 0.000000, 0.000000,-10.000000;;, + 139;3; 0.000000, 0.000000,-10.000000;;, + 140;3; 0.000000, 0.000000,-10.000000;;, + 141;3; 0.000000, 0.000000,-10.000000;;, + 142;3; 0.000000, 0.000000,-10.000000;;, + 143;3; 0.000000, 0.000000,-10.000000;;, + 144;3; 0.000000, 0.000000,-10.000000;;, + 145;3; 0.000000, 0.000000,-10.000000;;, + 146;3; 0.000000, 0.000000,-10.000000;;, + 147;3; 0.000000, 0.000000,-10.000000;;, + 148;3; 0.000000, 0.000000,-10.000000;;, + 149;3; 0.000000, 0.000000,-10.000000;;, + 150;3; 0.000000, 0.000000,-10.000000;;, + 151;3; 0.000000, 0.000000,-10.000000;;, + 152;3; 0.000000, 0.000000,-10.000000;;, + 153;3; 0.000000, 0.000000,-10.000000;;, + 154;3; 0.000000, 0.000000,-10.000000;;, + 155;3; 0.000000, 0.000000,-10.000000;;, + 156;3; 0.000000, 0.000000,-10.000000;;, + 157;3; 0.000000, 0.000000,-10.000000;;, + 158;3; 0.000000, 0.000000,-10.000000;;, + 159;3; 0.000000, 0.000000,-10.000000;;, + 160;3; 0.000000, 0.000000,-10.000000;;, + 161;3; 0.000000, 0.000000,-10.000000;;, + 162;3; 0.000000, 0.000000,-10.000000;;, + 163;3; 0.000000, 0.000000,-10.000000;;, + 164;3; 0.000000, 0.000000,-10.000000;;, + 165;3; 0.000000, 0.000000,-10.000000;;, + 166;3; 0.000000, 0.000000,-10.000000;;, + 167;3; 0.000000, 0.000000,-10.000000;;, + 168;3; 0.000000, 0.000000,-10.000000;;, + 169;3; 0.000000, 0.000000,-10.000000;;, + 170;3; 0.000000, 0.000000,-10.000000;;, + 171;3; 0.000000, 0.000000,-10.000000;;, + 172;3; 0.000000, 0.000000,-10.000000;;, + 173;3; 0.000000, 0.000000,-10.000000;;, + 174;3; 0.000000, 0.000000,-10.000000;;, + 175;3; 0.000000, 0.000000,-10.000000;;, + 176;3; 0.000000, 0.000000,-10.000000;;, + 177;3; 0.000000, 0.000000,-10.000000;;, + 178;3; 0.000000, 0.000000,-10.000000;;, + 179;3; 0.000000, 0.000000,-10.000000;;, + 180;3; 0.000000, 0.000000,-10.000000;;, + 181;3; 0.000000, 0.000000,-10.000000;;, + 182;3; 0.000000, 0.000000,-10.000000;;, + 183;3; 0.000000, 0.000000,-10.000000;;, + 184;3; 0.000000, 0.000000,-10.000000;;, + 185;3; 0.000000, 0.000000,-10.000000;;, + 186;3; 0.000000, 0.000000,-10.000000;;, + 187;3; 0.000000, 0.000000,-10.000000;;, + 188;3; 0.000000, 0.000000,-10.000000;;; + } + } + Animation { + {Armature_Body} + AnimationKey { // Rotation + 0; + 189; + 0;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 1;4;-0.706933, 0.707273, 0.000000, 0.000000;;, + 2;4;-0.706408, 0.707776, 0.000000, 0.000000;;, + 3;4;-0.705530, 0.708616, 0.000000, 0.000000;;, + 4;4;-0.704305, 0.709789, 0.000000, 0.000000;;, + 5;4;-0.702749, 0.711279, 0.000000, 0.000000;;, + 6;4;-0.700886, 0.713062, 0.000000, 0.000000;;, + 7;4;-0.698758, 0.715099, 0.000000, 0.000000;;, + 8;4;-0.696414, 0.717343, 0.000000, 0.000000;;, + 9;4;-0.693920, 0.719730, 0.000000, 0.000000;;, + 10;4;-0.691348, 0.722192, 0.000000, 0.000000;;, + 11;4;-0.688777, 0.724654, 0.000000, 0.000000;;, + 12;4;-0.686283, 0.727042, 0.000000, 0.000000;;, + 13;4;-0.683939, 0.729285, 0.000000, 0.000000;;, + 14;4;-0.681811, 0.731323, 0.000000, 0.000000;;, + 15;4;-0.679949, 0.733105, 0.000000, 0.000000;;, + 16;4;-0.678392, 0.734596, 0.000000, 0.000000;;, + 17;4;-0.677167, 0.735768, 0.000000, 0.000000;;, + 18;4;-0.676289, 0.736609, 0.000000, 0.000000;;, + 19;4;-0.675764, 0.737111, 0.000000, 0.000000;;, + 20;4;-0.675590, 0.737277, 0.000000, 0.000000;;, + 21;4;-0.675764, 0.737111, 0.000000, 0.000000;;, + 22;4;-0.676289, 0.736609, 0.000000, 0.000000;;, + 23;4;-0.677167, 0.735768, 0.000000, 0.000000;;, + 24;4;-0.678392, 0.734596, 0.000000, 0.000000;;, + 25;4;-0.679949, 0.733105, 0.000000, 0.000000;;, + 26;4;-0.681811, 0.731323, 0.000000, 0.000000;;, + 27;4;-0.683939, 0.729285, 0.000000, 0.000000;;, + 28;4;-0.686283, 0.727042, 0.000000, 0.000000;;, + 29;4;-0.688777, 0.724654, 0.000000, 0.000000;;, + 30;4;-0.691349, 0.722192, 0.000000, 0.000000;;, + 31;4;-0.693920, 0.719730, 0.000000, 0.000000;;, + 32;4;-0.696415, 0.717343, 0.000000, 0.000000;;, + 33;4;-0.698758, 0.715099, 0.000000, 0.000000;;, + 34;4;-0.700886, 0.713062, 0.000000, 0.000000;;, + 35;4;-0.702749, 0.711279, 0.000000, 0.000000;;, + 36;4;-0.704305, 0.709789, 0.000000, 0.000000;;, + 37;4;-0.705530, 0.708616, 0.000000, 0.000000;;, + 38;4;-0.706408, 0.707776, 0.000000, 0.000000;;, + 39;4;-0.706933, 0.707273, 0.000000, 0.000000;;, + 40;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 41;4;-0.706933, 0.707273, 0.000000, 0.000000;;, + 42;4;-0.706408, 0.707776, 0.000000, 0.000000;;, + 43;4;-0.705530, 0.708616, 0.000000, 0.000000;;, + 44;4;-0.704305, 0.709789, 0.000000, 0.000000;;, + 45;4;-0.702749, 0.711279, 0.000000, 0.000000;;, + 46;4;-0.700886, 0.713062, 0.000000, 0.000000;;, + 47;4;-0.698758, 0.715099, 0.000000, 0.000000;;, + 48;4;-0.696415, 0.717343, 0.000000, 0.000000;;, + 49;4;-0.693920, 0.719730, 0.000000, 0.000000;;, + 50;4;-0.691348, 0.722192, 0.000000, 0.000000;;, + 51;4;-0.688777, 0.724654, 0.000000, 0.000000;;, + 52;4;-0.686283, 0.727042, 0.000000, 0.000000;;, + 53;4;-0.683939, 0.729285, 0.000000, 0.000000;;, + 54;4;-0.681811, 0.731323, 0.000000, 0.000000;;, + 55;4;-0.679949, 0.733105, 0.000000, 0.000000;;, + 56;4;-0.678392, 0.734596, 0.000000, 0.000000;;, + 57;4;-0.677167, 0.735768, 0.000000, 0.000000;;, + 58;4;-0.676289, 0.736609, 0.000000, 0.000000;;, + 59;4;-0.675764, 0.737111, 0.000000, 0.000000;;, + 60;4;-0.675590, 0.737277, 0.000000, 0.000000;;, + 61;4;-0.675754, 0.737121, 0.000000, 0.000000;;, + 62;4;-0.676212, 0.736682, 0.000000, 0.000000;;, + 63;4;-0.676927, 0.735998, 0.000000, 0.000000;;, + 64;4;-0.677865, 0.735100, 0.000000, 0.000000;;, + 65;4;-0.679001, 0.734013, 0.000000, 0.000000;;, + 66;4;-0.680312, 0.732757, 0.000000, 0.000000;;, + 67;4;-0.681779, 0.731353, 0.000000, 0.000000;;, + 68;4;-0.683387, 0.729813, 0.000000, 0.000000;;, + 69;4;-0.685120, 0.728154, 0.000000, 0.000000;;, + 70;4;-0.686966, 0.726388, 0.000000, 0.000000;;, + 71;4;-0.688910, 0.724526, 0.000000, 0.000000;;, + 72;4;-0.690941, 0.722582, 0.000000, 0.000000;;, + 73;4;-0.693046, 0.720567, 0.000000, 0.000000;;, + 74;4;-0.695210, 0.718495, 0.000000, 0.000000;;, + 75;4;-0.697417, 0.716383, 0.000000, 0.000000;;, + 76;4;-0.699643, 0.714252, 0.000000, 0.000000;;, + 77;4;-0.701856, 0.712133, 0.000000, 0.000000;;, + 78;4;-0.703995, 0.710086, 0.000000, 0.000000;;, + 79;4;-0.705928, 0.708235, 0.000000, 0.000000;;, + 80;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 81;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 82;4;-0.705928, 0.708235, 0.000000, 0.000000;;, + 83;4;-0.703995, 0.710086, 0.000000, 0.000000;;, + 84;4;-0.701856, 0.712133, 0.000000, 0.000000;;, + 85;4;-0.699643, 0.714252, 0.000000, 0.000000;;, + 86;4;-0.697417, 0.716383, 0.000000, 0.000000;;, + 87;4;-0.695210, 0.718495, 0.000000, 0.000000;;, + 88;4;-0.693046, 0.720567, 0.000000, 0.000000;;, + 89;4;-0.690941, 0.722582, 0.000000, 0.000000;;, + 90;4;-0.688910, 0.724526, 0.000000, 0.000000;;, + 91;4;-0.686966, 0.726388, 0.000000, 0.000000;;, + 92;4;-0.685120, 0.728154, 0.000000, 0.000000;;, + 93;4;-0.683387, 0.729813, 0.000000, 0.000000;;, + 94;4;-0.681779, 0.731353, 0.000000, 0.000000;;, + 95;4;-0.680312, 0.732758, 0.000000, 0.000000;;, + 96;4;-0.679001, 0.734013, 0.000000, 0.000000;;, + 97;4;-0.677865, 0.735100, 0.000000, 0.000000;;, + 98;4;-0.676927, 0.735998, 0.000000, 0.000000;;, + 99;4;-0.676212, 0.736682, 0.000000, 0.000000;;, + 100;4;-0.675754, 0.737121, 0.000000, 0.000000;;, + 101;4;-0.675590, 0.737277, 0.000000, 0.000000;;, + 102;4;-0.675764, 0.737111, 0.000000, 0.000000;;, + 103;4;-0.676289, 0.736609, 0.000000, 0.000000;;, + 104;4;-0.677167, 0.735768, 0.000000, 0.000000;;, + 105;4;-0.678392, 0.734596, 0.000000, 0.000000;;, + 106;4;-0.679949, 0.733105, 0.000000, 0.000000;;, + 107;4;-0.681811, 0.731323, 0.000000, 0.000000;;, + 108;4;-0.683939, 0.729285, 0.000000, 0.000000;;, + 109;4;-0.686283, 0.727042, 0.000000, 0.000000;;, + 110;4;-0.688777, 0.724654, 0.000000, 0.000000;;, + 111;4;-0.691348, 0.722192, 0.000000, 0.000000;;, + 112;4;-0.693920, 0.719730, 0.000000, 0.000000;;, + 113;4;-0.696415, 0.717343, 0.000000, 0.000000;;, + 114;4;-0.698758, 0.715099, 0.000000, 0.000000;;, + 115;4;-0.700886, 0.713062, 0.000000, 0.000000;;, + 116;4;-0.702749, 0.711279, 0.000000, 0.000000;;, + 117;4;-0.704305, 0.709789, 0.000000, 0.000000;;, + 118;4;-0.705530, 0.708616, 0.000000, 0.000000;;, + 119;4;-0.706408, 0.707776, 0.000000, 0.000000;;, + 120;4;-0.706933, 0.707273, 0.000000, 0.000000;;, + 121;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 122;4;-0.706933, 0.707273, 0.000000, 0.000000;;, + 123;4;-0.706408, 0.707776, 0.000000, 0.000000;;, + 124;4;-0.705530, 0.708616, 0.000000, 0.000000;;, + 125;4;-0.704305, 0.709789, 0.000000, 0.000000;;, + 126;4;-0.702749, 0.711279, 0.000000, 0.000000;;, + 127;4;-0.700886, 0.713062, 0.000000, 0.000000;;, + 128;4;-0.698758, 0.715099, 0.000000, 0.000000;;, + 129;4;-0.696415, 0.717343, 0.000000, 0.000000;;, + 130;4;-0.693920, 0.719730, 0.000000, 0.000000;;, + 131;4;-0.691348, 0.722192, 0.000000, 0.000000;;, + 132;4;-0.688777, 0.724654, 0.000000, 0.000000;;, + 133;4;-0.686283, 0.727042, 0.000000, 0.000000;;, + 134;4;-0.683939, 0.729285, 0.000000, 0.000000;;, + 135;4;-0.681811, 0.731323, 0.000000, 0.000000;;, + 136;4;-0.679949, 0.733105, 0.000000, 0.000000;;, + 137;4;-0.678392, 0.734596, 0.000000, 0.000000;;, + 138;4;-0.677167, 0.735768, 0.000000, 0.000000;;, + 139;4;-0.676289, 0.736609, 0.000000, 0.000000;;, + 140;4;-0.675764, 0.737111, 0.000000, 0.000000;;, + 141;4;-0.675590, 0.737277, 0.000000, 0.000000;;, + 142;4;-0.675754, 0.737121, 0.000000, 0.000000;;, + 143;4;-0.676211, 0.736683, 0.000000, 0.000000;;, + 144;4;-0.676923, 0.736001, 0.000000, 0.000000;;, + 145;4;-0.677857, 0.735107, 0.000000, 0.000000;;, + 146;4;-0.678987, 0.734026, 0.000000, 0.000000;;, + 147;4;-0.680291, 0.732778, 0.000000, 0.000000;;, + 148;4;-0.681750, 0.731381, 0.000000, 0.000000;;, + 149;4;-0.683349, 0.729852, 0.000000, 0.000000;;, + 150;4;-0.685071, 0.728203, 0.000000, 0.000000;;, + 151;4;-0.686905, 0.726448, 0.000000, 0.000000;;, + 152;4;-0.688838, 0.724598, 0.000000, 0.000000;;, + 153;4;-0.690858, 0.722664, 0.000000, 0.000000;;, + 154;4;-0.692953, 0.720659, 0.000000, 0.000000;;, + 155;4;-0.695109, 0.718596, 0.000000, 0.000000;;, + 156;4;-0.697310, 0.716489, 0.000000, 0.000000;;, + 157;4;-0.699536, 0.714358, 0.000000, 0.000000;;, + 158;4;-0.701753, 0.712235, 0.000000, 0.000000;;, + 159;4;-0.703909, 0.710171, 0.000000, 0.000000;;, + 160;4;-0.705875, 0.708288, 0.000000, 0.000000;;, + 161;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 162;4;-0.000000, 1.000000, 0.000000, 0.000000;;, + 163;4;-0.000000, 1.000000, 0.000000, 0.000000;;, + 164;4;-0.000000, 1.000000, 0.000000, 0.000000;;, + 165;4;-0.000000, 1.000000, 0.000000, 0.000000;;, + 166;4;-0.000000, 1.000000, 0.000000, 0.000000;;, + 167;4;-0.000000, 1.000000, 0.000000, 0.000000;;, + 168;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 169;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 170;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 171;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 172;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 173;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 174;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 175;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 176;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 177;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 178;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 179;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 180;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 181;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 182;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 183;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 184;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 185;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 186;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 187;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 188;4;-0.707107, 0.707107, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 189; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 189; + 0;3;-0.000000, 0.000000, 6.750000;;, + 1;3;-0.000000, 0.000000, 6.750000;;, + 2;3;-0.000000, 0.000000, 6.750000;;, + 3;3;-0.000000, 0.000000, 6.750000;;, + 4;3;-0.000000, 0.000000, 6.750000;;, + 5;3;-0.000000, 0.000000, 6.750000;;, + 6;3;-0.000000, 0.000000, 6.750000;;, + 7;3;-0.000000, 0.000000, 6.750000;;, + 8;3;-0.000000, 0.000000, 6.750000;;, + 9;3;-0.000000, 0.000000, 6.750000;;, + 10;3;-0.000000, 0.000000, 6.750000;;, + 11;3;-0.000000, 0.000000, 6.750000;;, + 12;3;-0.000000, 0.000000, 6.750000;;, + 13;3;-0.000000, 0.000000, 6.750000;;, + 14;3;-0.000000, 0.000000, 6.750000;;, + 15;3;-0.000000, 0.000000, 6.750000;;, + 16;3;-0.000000, 0.000000, 6.750000;;, + 17;3;-0.000000, 0.000000, 6.750000;;, + 18;3;-0.000000, 0.000000, 6.750000;;, + 19;3;-0.000000, 0.000000, 6.750000;;, + 20;3;-0.000000, 0.000000, 6.750000;;, + 21;3;-0.000000, 0.000000, 6.750000;;, + 22;3;-0.000000, 0.000000, 6.750000;;, + 23;3;-0.000000, 0.000000, 6.750000;;, + 24;3;-0.000000, 0.000000, 6.750000;;, + 25;3;-0.000000, 0.000000, 6.750000;;, + 26;3;-0.000000, 0.000000, 6.750000;;, + 27;3;-0.000000, 0.000000, 6.750000;;, + 28;3;-0.000000, 0.000000, 6.750000;;, + 29;3;-0.000000, 0.000000, 6.750000;;, + 30;3;-0.000000, 0.000000, 6.750000;;, + 31;3;-0.000000, 0.000000, 6.750000;;, + 32;3;-0.000000, 0.000000, 6.750000;;, + 33;3;-0.000000, 0.000000, 6.750000;;, + 34;3;-0.000000, 0.000000, 6.750000;;, + 35;3;-0.000000, 0.000000, 6.750000;;, + 36;3;-0.000000, 0.000000, 6.750000;;, + 37;3;-0.000000, 0.000000, 6.750000;;, + 38;3;-0.000000, 0.000000, 6.750000;;, + 39;3;-0.000000, 0.000000, 6.750000;;, + 40;3;-0.000000, 0.000000, 6.750000;;, + 41;3;-0.000000, 0.000000, 6.750000;;, + 42;3;-0.000000, 0.000000, 6.750000;;, + 43;3;-0.000000, 0.000000, 6.750000;;, + 44;3;-0.000000, 0.000000, 6.750000;;, + 45;3;-0.000000, 0.000000, 6.750000;;, + 46;3;-0.000000, 0.000000, 6.750000;;, + 47;3;-0.000000, 0.000000, 6.750000;;, + 48;3;-0.000000, 0.000000, 6.750000;;, + 49;3;-0.000000, 0.000000, 6.750000;;, + 50;3;-0.000000, 0.000000, 6.750000;;, + 51;3;-0.000000, 0.000000, 6.750000;;, + 52;3;-0.000000, 0.000000, 6.750000;;, + 53;3;-0.000000, 0.000000, 6.750000;;, + 54;3;-0.000000, 0.000000, 6.750000;;, + 55;3;-0.000000, 0.000000, 6.750000;;, + 56;3;-0.000000, 0.000000, 6.750000;;, + 57;3;-0.000000, 0.000000, 6.750000;;, + 58;3;-0.000000, 0.000000, 6.750000;;, + 59;3;-0.000000, 0.000000, 6.750000;;, + 60;3;-0.000000, 0.000000, 6.750000;;, + 61;3;-0.000000, 0.000000, 6.750000;;, + 62;3;-0.000000, 0.000000, 6.750000;;, + 63;3;-0.000000, 0.000000, 6.750000;;, + 64;3;-0.000000, 0.000000, 6.750000;;, + 65;3;-0.000000, 0.000000, 6.750000;;, + 66;3;-0.000000, 0.000000, 6.750000;;, + 67;3;-0.000000, 0.000000, 6.750000;;, + 68;3;-0.000000, 0.000000, 6.750000;;, + 69;3;-0.000000, 0.000000, 6.750000;;, + 70;3;-0.000000, 0.000000, 6.750000;;, + 71;3;-0.000000, 0.000000, 6.750000;;, + 72;3;-0.000000, 0.000000, 6.750000;;, + 73;3;-0.000000, 0.000000, 6.750000;;, + 74;3;-0.000000, 0.000000, 6.750000;;, + 75;3;-0.000000, 0.000000, 6.750000;;, + 76;3;-0.000000, 0.000000, 6.750000;;, + 77;3;-0.000000, 0.000000, 6.750000;;, + 78;3;-0.000000, 0.000000, 6.750000;;, + 79;3;-0.000000, 0.000000, 6.750000;;, + 80;3;-0.000000, 0.000000, 6.750000;;, + 81;3;-0.000000, 0.000000, 1.000000;;, + 82;3;-0.000000, 0.000000, 1.000000;;, + 83;3;-0.000000, 0.000000, 1.000000;;, + 84;3;-0.000000, 0.000000, 1.000000;;, + 85;3;-0.000000, 0.000000, 1.000000;;, + 86;3;-0.000000, 0.000000, 1.000000;;, + 87;3;-0.000000, 0.000000, 1.000000;;, + 88;3;-0.000000, 0.000000, 1.000000;;, + 89;3;-0.000000, 0.000000, 1.000000;;, + 90;3;-0.000000, 0.000000, 1.000000;;, + 91;3;-0.000000, 0.000000, 1.000000;;, + 92;3;-0.000000, 0.000000, 1.000000;;, + 93;3;-0.000000, 0.000000, 1.000000;;, + 94;3;-0.000000, 0.000000, 1.000000;;, + 95;3;-0.000000, 0.000000, 1.000000;;, + 96;3;-0.000000, 0.000000, 1.000000;;, + 97;3;-0.000000, 0.000000, 1.000000;;, + 98;3;-0.000000, 0.000000, 1.000000;;, + 99;3;-0.000000, 0.000000, 1.000000;;, + 100;3;-0.000000, 0.000000, 1.000000;;, + 101;3;-0.000000, 0.000000, 1.000000;;, + 102;3;-0.000000, 0.000000, 1.000000;;, + 103;3;-0.000000, 0.000000, 1.000000;;, + 104;3;-0.000000, 0.000000, 1.000000;;, + 105;3;-0.000000, 0.000000, 1.000000;;, + 106;3;-0.000000, 0.000000, 1.000000;;, + 107;3;-0.000000, 0.000000, 1.000000;;, + 108;3;-0.000000, 0.000000, 1.000000;;, + 109;3;-0.000000, 0.000000, 1.000000;;, + 110;3;-0.000000, 0.000000, 1.000000;;, + 111;3;-0.000000, 0.000000, 1.000000;;, + 112;3;-0.000000, 0.000000, 1.000000;;, + 113;3;-0.000000, 0.000000, 1.000000;;, + 114;3;-0.000000, 0.000000, 1.000000;;, + 115;3;-0.000000, 0.000000, 1.000000;;, + 116;3;-0.000000, 0.000000, 1.000000;;, + 117;3;-0.000000, 0.000000, 1.000000;;, + 118;3;-0.000000, 0.000000, 1.000000;;, + 119;3;-0.000000, 0.000000, 1.000000;;, + 120;3;-0.000000, 0.000000, 1.000000;;, + 121;3;-0.000000, 0.000000, 1.000000;;, + 122;3;-0.000000, 0.000000, 1.000000;;, + 123;3;-0.000000, 0.000000, 1.000000;;, + 124;3;-0.000000, 0.000000, 1.000000;;, + 125;3;-0.000000, 0.000000, 1.000000;;, + 126;3;-0.000000, 0.000000, 1.000000;;, + 127;3;-0.000000, 0.000000, 1.000000;;, + 128;3;-0.000000, 0.000000, 1.000000;;, + 129;3;-0.000000, 0.000000, 1.000000;;, + 130;3;-0.000000, 0.000000, 1.000000;;, + 131;3;-0.000000, 0.000000, 1.000000;;, + 132;3;-0.000000, 0.000000, 1.000000;;, + 133;3;-0.000000, 0.000000, 1.000000;;, + 134;3;-0.000000, 0.000000, 1.000000;;, + 135;3;-0.000000, 0.000000, 1.000000;;, + 136;3;-0.000000, 0.000000, 1.000000;;, + 137;3;-0.000000, 0.000000, 1.000000;;, + 138;3;-0.000000, 0.000000, 1.000000;;, + 139;3;-0.000000, 0.000000, 1.000000;;, + 140;3;-0.000000, 0.000000, 1.000000;;, + 141;3;-0.000000, 0.000000, 1.000000;;, + 142;3;-0.000000, 0.000000, 1.000000;;, + 143;3;-0.000000, 0.000000, 1.000000;;, + 144;3;-0.000000, 0.000000, 1.000000;;, + 145;3;-0.000000, 0.000000, 1.000000;;, + 146;3;-0.000000, 0.000000, 1.000000;;, + 147;3;-0.000000, 0.000000, 1.000000;;, + 148;3;-0.000000, 0.000000, 1.000000;;, + 149;3;-0.000000, 0.000000, 1.000000;;, + 150;3;-0.000000, 0.000000, 1.000000;;, + 151;3;-0.000000, 0.000000, 1.000000;;, + 152;3;-0.000000, 0.000000, 1.000000;;, + 153;3;-0.000000, 0.000000, 1.000000;;, + 154;3;-0.000000, 0.000000, 1.000000;;, + 155;3;-0.000000, 0.000000, 1.000000;;, + 156;3;-0.000000, 0.000000, 1.000000;;, + 157;3;-0.000000, 0.000000, 1.000000;;, + 158;3;-0.000000, 0.000000, 1.000000;;, + 159;3;-0.000000, 0.000000, 1.000000;;, + 160;3;-0.000000, 0.000000, 1.000000;;, + 161;3;-0.000000, 0.000000, 1.000000;;, + 162;3;-0.000000, 2.000001, 1.000000;;, + 163;3;-0.000000, 2.000001, 1.000000;;, + 164;3;-0.000000, 2.000001, 1.000000;;, + 165;3;-0.000000, 2.000001, 1.000000;;, + 166;3;-0.000000, 2.000001, 1.000000;;, + 167;3;-0.000000, 2.000001, 1.000000;;, + 168;3;-0.000000, 0.000000, 6.750000;;, + 169;3;-0.000000, 0.000000, 6.750000;;, + 170;3;-0.000000, 0.000000, 6.750000;;, + 171;3;-0.000000, 0.000000, 6.750000;;, + 172;3;-0.000000, 0.000000, 6.750000;;, + 173;3;-0.000000, 0.000000, 6.750000;;, + 174;3;-0.000000, 0.000000, 6.750000;;, + 175;3;-0.000000, 0.000000, 6.750000;;, + 176;3;-0.000000, 0.000000, 6.750000;;, + 177;3;-0.000000, 0.000000, 6.750000;;, + 178;3;-0.000000, 0.000000, 6.750000;;, + 179;3;-0.000000, 0.000000, 6.750000;;, + 180;3;-0.000000, 0.000000, 6.750000;;, + 181;3;-0.000000, 0.000000, 6.750000;;, + 182;3;-0.000000, 0.000000, 6.750000;;, + 183;3;-0.000000, 0.000000, 6.750000;;, + 184;3;-0.000000, 0.000000, 6.750000;;, + 185;3;-0.000000, 0.000000, 6.750000;;, + 186;3;-0.000000, 0.000000, 6.750000;;, + 187;3;-0.000000, 0.000000, 6.750000;;, + 188;3;-0.000000, 0.000000, 6.750000;;; + } + } + Animation { + {Armature_Head} + AnimationKey { // Rotation + 0; + 189; + 0;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 1;4;-0.000120,-0.000005, 0.999993,-0.000240;;, + 2;4;-0.000483,-0.000021, 0.999974,-0.000967;;, + 3;4;-0.001090,-0.000048, 0.999941,-0.002181;;, + 4;4;-0.001937,-0.000085, 0.999894,-0.003876;;, + 5;4;-0.003014,-0.000132, 0.999835,-0.006030;;, + 6;4;-0.004301,-0.000188, 0.999765,-0.008607;;, + 7;4;-0.005773,-0.000252, 0.999685,-0.011553;;, + 8;4;-0.007394,-0.000323, 0.999596,-0.014795;;, + 9;4;-0.009118,-0.000398, 0.999502,-0.018246;;, + 10;4;-0.010897,-0.000476, 0.999405,-0.021804;;, + 11;4;-0.012675,-0.000553, 0.999308,-0.025363;;, + 12;4;-0.014400,-0.000629, 0.999214,-0.028814;;, + 13;4;-0.016021,-0.000699, 0.999126,-0.032056;;, + 14;4;-0.017493,-0.000764, 0.999045,-0.035002;;, + 15;4;-0.018780,-0.000820, 0.998975,-0.037578;;, + 16;4;-0.019857,-0.000867, 0.998916,-0.039733;;, + 17;4;-0.020704,-0.000904, 0.998870,-0.041427;;, + 18;4;-0.021311,-0.000930, 0.998837,-0.042642;;, + 19;4;-0.021674,-0.000946, 0.998817,-0.043369;;, + 20;4;-0.021794,-0.000952, 0.998811,-0.043609;;, + 21;4;-0.021720,-0.000948, 0.998817,-0.043369;;, + 22;4;-0.021494,-0.000938, 0.998837,-0.042642;;, + 23;4;-0.021108,-0.000922, 0.998870,-0.041427;;, + 24;4;-0.020560,-0.000898, 0.998916,-0.039733;;, + 25;4;-0.019848,-0.000867, 0.998975,-0.037578;;, + 26;4;-0.018975,-0.000828, 0.999045,-0.035002;;, + 27;4;-0.017947,-0.000784, 0.999126,-0.032056;;, + 28;4;-0.016778,-0.000733, 0.999214,-0.028814;;, + 29;4;-0.015484,-0.000676, 0.999308,-0.025363;;, + 30;4;-0.014088,-0.000615, 0.999405,-0.021804;;, + 31;4;-0.012616,-0.000551, 0.999502,-0.018246;;, + 32;4;-0.011095,-0.000484, 0.999597,-0.014795;;, + 33;4;-0.009555,-0.000417, 0.999685,-0.011553;;, + 34;4;-0.008021,-0.000350, 0.999765,-0.008607;;, + 35;4;-0.006517,-0.000285, 0.999835,-0.006030;;, + 36;4;-0.005062,-0.000221, 0.999894,-0.003876;;, + 37;4;-0.003674,-0.000160, 0.999941,-0.002181;;, + 38;4;-0.002362,-0.000103, 0.999974,-0.000967;;, + 39;4;-0.001136,-0.000050, 0.999994,-0.000240;;, + 40;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 41;4; 0.001136, 0.000050, 0.999993,-0.000240;;, + 42;4; 0.002362, 0.000103, 0.999974,-0.000967;;, + 43;4; 0.003674, 0.000160, 0.999941,-0.002181;;, + 44;4; 0.005062, 0.000221, 0.999894,-0.003876;;, + 45;4; 0.006517, 0.000285, 0.999835,-0.006030;;, + 46;4; 0.008021, 0.000350, 0.999765,-0.008607;;, + 47;4; 0.009555, 0.000417, 0.999685,-0.011553;;, + 48;4; 0.011095, 0.000484, 0.999596,-0.014795;;, + 49;4; 0.012616, 0.000551, 0.999502,-0.018246;;, + 50;4; 0.014088, 0.000615, 0.999405,-0.021804;;, + 51;4; 0.015484, 0.000676, 0.999308,-0.025363;;, + 52;4; 0.016778, 0.000733, 0.999214,-0.028814;;, + 53;4; 0.017947, 0.000784, 0.999126,-0.032056;;, + 54;4; 0.018975, 0.000828, 0.999045,-0.035002;;, + 55;4; 0.019848, 0.000867, 0.998975,-0.037578;;, + 56;4; 0.020560, 0.000898, 0.998916,-0.039733;;, + 57;4; 0.021108, 0.000922, 0.998870,-0.041427;;, + 58;4; 0.021494, 0.000938, 0.998837,-0.042642;;, + 59;4; 0.021720, 0.000948, 0.998817,-0.043369;;, + 60;4; 0.021794, 0.000952, 0.998811,-0.043609;;, + 61;4; 0.021681, 0.000947, 0.998817,-0.043383;;, + 62;4; 0.021364, 0.000933, 0.998834,-0.042748;;, + 63;4; 0.020870, 0.000911, 0.998861,-0.041759;;, + 64;4; 0.020221, 0.000883, 0.998896,-0.040461;;, + 65;4; 0.019436, 0.000849, 0.998939,-0.038890;;, + 66;4; 0.018529, 0.000809, 0.998989,-0.037076;;, + 67;4; 0.017514, 0.000765, 0.999044,-0.035045;;, + 68;4; 0.016402, 0.000716, 0.999105,-0.032820;;, + 69;4; 0.015204, 0.000664, 0.999170,-0.030422;;, + 70;4; 0.013928, 0.000608, 0.999240,-0.027869;;, + 71;4; 0.012583, 0.000549, 0.999313,-0.025178;;, + 72;4; 0.011179, 0.000488, 0.999390,-0.022368;;, + 73;4; 0.009723, 0.000425, 0.999469,-0.019456;;, + 74;4; 0.008227, 0.000359, 0.999551,-0.016461;;, + 75;4; 0.006701, 0.000293, 0.999634,-0.013408;;, + 76;4; 0.005161, 0.000225, 0.999718,-0.010327;;, + 77;4; 0.003631, 0.000159, 0.999802,-0.007266;;, + 78;4; 0.002152, 0.000094, 0.999883,-0.004305;;, + 79;4; 0.000815, 0.000036, 0.999956,-0.001631;;, + 80;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 81;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 82;4;-0.000815,-0.000036, 0.999956,-0.001631;;, + 83;4;-0.002152,-0.000094, 0.999883,-0.004305;;, + 84;4;-0.003631,-0.000159, 0.999802,-0.007266;;, + 85;4;-0.005161,-0.000225, 0.999718,-0.010327;;, + 86;4;-0.006701,-0.000293, 0.999634,-0.013408;;, + 87;4;-0.008226,-0.000359, 0.999551,-0.016461;;, + 88;4;-0.009723,-0.000425, 0.999469,-0.019456;;, + 89;4;-0.011179,-0.000488, 0.999390,-0.022368;;, + 90;4;-0.012583,-0.000549, 0.999313,-0.025178;;, + 91;4;-0.013928,-0.000608, 0.999240,-0.027869;;, + 92;4;-0.015204,-0.000664, 0.999170,-0.030422;;, + 93;4;-0.016402,-0.000716, 0.999105,-0.032820;;, + 94;4;-0.017514,-0.000765, 0.999044,-0.035045;;, + 95;4;-0.018529,-0.000809, 0.998989,-0.037076;;, + 96;4;-0.019436,-0.000849, 0.998939,-0.038890;;, + 97;4;-0.020221,-0.000883, 0.998896,-0.040461;;, + 98;4;-0.020870,-0.000911, 0.998861,-0.041759;;, + 99;4;-0.021364,-0.000933, 0.998834,-0.042748;;, + 100;4;-0.021681,-0.000947, 0.998817,-0.043383;;, + 101;4;-0.021794,-0.000952, 0.998811,-0.043609;;, + 102;4;-0.021720,-0.000948, 0.998817,-0.043369;;, + 103;4;-0.021494,-0.000938, 0.998837,-0.042642;;, + 104;4;-0.021108,-0.000922, 0.998870,-0.041427;;, + 105;4;-0.020560,-0.000898, 0.998916,-0.039733;;, + 106;4;-0.019848,-0.000867, 0.998975,-0.037578;;, + 107;4;-0.018975,-0.000828, 0.999045,-0.035002;;, + 108;4;-0.017947,-0.000784, 0.999126,-0.032056;;, + 109;4;-0.016778,-0.000733, 0.999214,-0.028814;;, + 110;4;-0.015484,-0.000676, 0.999308,-0.025363;;, + 111;4;-0.014088,-0.000615, 0.999405,-0.021804;;, + 112;4;-0.012616,-0.000551, 0.999502,-0.018246;;, + 113;4;-0.011095,-0.000484, 0.999597,-0.014795;;, + 114;4;-0.009555,-0.000417, 0.999685,-0.011553;;, + 115;4;-0.008021,-0.000350, 0.999765,-0.008607;;, + 116;4;-0.006517,-0.000285, 0.999835,-0.006030;;, + 117;4;-0.005062,-0.000221, 0.999894,-0.003876;;, + 118;4;-0.003674,-0.000160, 0.999941,-0.002181;;, + 119;4;-0.002362,-0.000103, 0.999974,-0.000967;;, + 120;4;-0.001136,-0.000050, 0.999994,-0.000240;;, + 121;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 122;4; 0.001136, 0.000050, 0.999993,-0.000240;;, + 123;4; 0.002362, 0.000103, 0.999974,-0.000967;;, + 124;4; 0.003674, 0.000160, 0.999941,-0.002181;;, + 125;4; 0.005062, 0.000221, 0.999894,-0.003876;;, + 126;4; 0.006517, 0.000285, 0.999835,-0.006030;;, + 127;4; 0.008021, 0.000350, 0.999765,-0.008607;;, + 128;4; 0.009555, 0.000417, 0.999685,-0.011553;;, + 129;4; 0.011095, 0.000484, 0.999596,-0.014795;;, + 130;4; 0.012616, 0.000551, 0.999502,-0.018246;;, + 131;4; 0.014088, 0.000615, 0.999405,-0.021804;;, + 132;4; 0.015484, 0.000676, 0.999308,-0.025363;;, + 133;4; 0.016778, 0.000733, 0.999214,-0.028814;;, + 134;4; 0.017947, 0.000784, 0.999126,-0.032056;;, + 135;4; 0.018975, 0.000828, 0.999045,-0.035002;;, + 136;4; 0.019848, 0.000867, 0.998975,-0.037578;;, + 137;4; 0.020560, 0.000898, 0.998916,-0.039733;;, + 138;4; 0.021109, 0.000922, 0.998870,-0.041427;;, + 139;4; 0.021494, 0.000938, 0.998837,-0.042642;;, + 140;4; 0.021720, 0.000948, 0.998817,-0.043369;;, + 141;4; 0.021794, 0.000952, 0.998811,-0.043609;;, + 142;4; 0.021681, 0.000947, 0.998817,-0.043383;;, + 143;4; 0.021364, 0.000933, 0.998834,-0.042748;;, + 144;4; 0.020870, 0.000911, 0.998861,-0.041759;;, + 145;4; 0.020221, 0.000883, 0.998896,-0.040461;;, + 146;4; 0.019436, 0.000849, 0.998939,-0.038890;;, + 147;4; 0.018529, 0.000809, 0.998989,-0.037076;;, + 148;4; 0.017514, 0.000765, 0.999044,-0.035045;;, + 149;4; 0.016402, 0.000716, 0.999105,-0.032820;;, + 150;4; 0.015204, 0.000664, 0.999170,-0.030422;;, + 151;4; 0.013928, 0.000608, 0.999240,-0.027869;;, + 152;4; 0.012583, 0.000549, 0.999313,-0.025178;;, + 153;4; 0.011179, 0.000488, 0.999390,-0.022368;;, + 154;4; 0.009723, 0.000425, 0.999469,-0.019456;;, + 155;4; 0.008227, 0.000359, 0.999551,-0.016461;;, + 156;4; 0.006701, 0.000293, 0.999634,-0.013408;;, + 157;4; 0.005161, 0.000225, 0.999718,-0.010327;;, + 158;4; 0.003631, 0.000159, 0.999802,-0.007266;;, + 159;4; 0.002152, 0.000094, 0.999883,-0.004305;;, + 160;4; 0.000815, 0.000036, 0.999956,-0.001631;;, + 161;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 162;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 163;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 164;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 165;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 166;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 167;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 168;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 169;4; 0.003877,-0.000000, 0.999915, 0.000000;;, + 170;4; 0.014799,-0.000000, 0.999677, 0.000000;;, + 171;4; 0.028821,-0.000000, 0.999371, 0.000000;;, + 172;4; 0.039742,-0.000000, 0.999133, 0.000000;;, + 173;4; 0.043619, 0.000000, 0.999048, 0.000000;;, + 174;4; 0.041150, 0.000000, 0.999133, 0.000000;;, + 175;4; 0.033580,-0.000000, 0.999371, 0.000000;;, + 176;4; 0.022207,-0.000000, 0.999677, 0.000000;;, + 177;4; 0.010132,-0.000000, 0.999915, 0.000000;;, + 178;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 179;4;-0.010132, 0.000000, 0.999915, 0.000000;;, + 180;4;-0.022206, 0.000000, 0.999677, 0.000000;;, + 181;4;-0.033580, 0.000000, 0.999371, 0.000000;;, + 182;4;-0.041150,-0.000000, 0.999133, 0.000000;;, + 183;4;-0.043619, 0.000000, 0.999048, 0.000000;;, + 184;4;-0.039742, 0.000000, 0.999133, 0.000000;;, + 185;4;-0.028821, 0.000000, 0.999371, 0.000000;;, + 186;4;-0.014798, 0.000000, 0.999677, 0.000000;;, + 187;4;-0.003877, 0.000000, 0.999915, 0.000000;;, + 188;4; 0.000000, 0.000000, 1.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 189; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 189; + 0;3; 0.000000, 6.750000, 0.000000;;, + 1;3;-0.000000, 6.750000, 0.000000;;, + 2;3; 0.000000, 6.750000, 0.000000;;, + 3;3; 0.000000, 6.750000, 0.000000;;, + 4;3; 0.000000, 6.750000, 0.000000;;, + 5;3; 0.000000, 6.750000, 0.000000;;, + 6;3; 0.000000, 6.750000, 0.000000;;, + 7;3; 0.000000, 6.750000,-0.000000;;, + 8;3; 0.000000, 6.750000,-0.000000;;, + 9;3; 0.000000, 6.750000, 0.000000;;, + 10;3; 0.000000, 6.750000,-0.000000;;, + 11;3; 0.000000, 6.750000, 0.000000;;, + 12;3; 0.000000, 6.750000, 0.000000;;, + 13;3; 0.000000, 6.750000, 0.000000;;, + 14;3; 0.000000, 6.750000,-0.000000;;, + 15;3; 0.000000, 6.750000,-0.000000;;, + 16;3; 0.000000, 6.750000, 0.000000;;, + 17;3;-0.000000, 6.750001,-0.000000;;, + 18;3; 0.000000, 6.750000, 0.000000;;, + 19;3; 0.000000, 6.750000, 0.000000;;, + 20;3; 0.000000, 6.750000, 0.000000;;, + 21;3; 0.000000, 6.750000, 0.000000;;, + 22;3; 0.000000, 6.750000, 0.000000;;, + 23;3;-0.000000, 6.750001,-0.000000;;, + 24;3; 0.000000, 6.750000, 0.000000;;, + 25;3; 0.000000, 6.750000, 0.000000;;, + 26;3; 0.000000, 6.750000,-0.000000;;, + 27;3; 0.000000, 6.750000, 0.000000;;, + 28;3; 0.000000, 6.750000, 0.000000;;, + 29;3; 0.000000, 6.750000, 0.000000;;, + 30;3; 0.000000, 6.750000, 0.000000;;, + 31;3; 0.000000, 6.750000, 0.000000;;, + 32;3; 0.000000, 6.750000,-0.000000;;, + 33;3; 0.000000, 6.750000,-0.000000;;, + 34;3; 0.000000, 6.750000, 0.000000;;, + 35;3; 0.000000, 6.750000, 0.000000;;, + 36;3; 0.000000, 6.750000,-0.000000;;, + 37;3; 0.000000, 6.750000, 0.000000;;, + 38;3; 0.000000, 6.750000, 0.000000;;, + 39;3;-0.000000, 6.750000, 0.000000;;, + 40;3; 0.000000, 6.750000, 0.000000;;, + 41;3;-0.000000, 6.750000, 0.000000;;, + 42;3; 0.000000, 6.750000, 0.000000;;, + 43;3; 0.000000, 6.750000, 0.000000;;, + 44;3; 0.000000, 6.750000, 0.000000;;, + 45;3; 0.000000, 6.750000, 0.000000;;, + 46;3; 0.000000, 6.750000,-0.000000;;, + 47;3; 0.000000, 6.750000, 0.000000;;, + 48;3; 0.000000, 6.750000, 0.000000;;, + 49;3; 0.000000, 6.750000, 0.000000;;, + 50;3; 0.000000, 6.750000,-0.000000;;, + 51;3; 0.000000, 6.750000, 0.000000;;, + 52;3; 0.000000, 6.750000, 0.000000;;, + 53;3; 0.000000, 6.750000, 0.000000;;, + 54;3; 0.000000, 6.750000, 0.000000;;, + 55;3; 0.000000, 6.750000,-0.000000;;, + 56;3; 0.000000, 6.750000, 0.000000;;, + 57;3;-0.000000, 6.750001,-0.000000;;, + 58;3; 0.000000, 6.750000, 0.000000;;, + 59;3; 0.000000, 6.750000, 0.000000;;, + 60;3; 0.000000, 6.750000, 0.000000;;, + 61;3; 0.000000, 6.750000, 0.000000;;, + 62;3; 0.000000, 6.750000, 0.000000;;, + 63;3; 0.000000, 6.750000,-0.000000;;, + 64;3; 0.000000, 6.750000, 0.000000;;, + 65;3; 0.000000, 6.750000, 0.000000;;, + 66;3; 0.000000, 6.750000, 0.000000;;, + 67;3; 0.000000, 6.750000, 0.000000;;, + 68;3; 0.000000, 6.750000, 0.000000;;, + 69;3; 0.000000, 6.750000,-0.000000;;, + 70;3; 0.000000, 6.750000,-0.000000;;, + 71;3; 0.000000, 6.750000,-0.000000;;, + 72;3; 0.000000, 6.750000,-0.000000;;, + 73;3; 0.000000, 6.749999, 0.000000;;, + 74;3; 0.000000, 6.750000, 0.000000;;, + 75;3; 0.000000, 6.750000, 0.000000;;, + 76;3;-0.000000, 6.750000,-0.000000;;, + 77;3; 0.000000, 6.750000, 0.000000;;, + 78;3; 0.000000, 6.750000,-0.000000;;, + 79;3; 0.000000, 6.750000, 0.000000;;, + 80;3; 0.000000, 6.750000, 0.000000;;, + 81;3; 0.000000, 6.750000,-0.000000;;, + 82;3; 0.000000, 6.750000, 0.000000;;, + 83;3; 0.000000, 6.750000,-0.000000;;, + 84;3; 0.000000, 6.750000, 0.000000;;, + 85;3;-0.000000, 6.750000,-0.000000;;, + 86;3; 0.000000, 6.750000, 0.000000;;, + 87;3; 0.000000, 6.750000,-0.000000;;, + 88;3; 0.000000, 6.750000, 0.000000;;, + 89;3; 0.000000, 6.750000,-0.000000;;, + 90;3; 0.000000, 6.750000,-0.000000;;, + 91;3; 0.000000, 6.750000, 0.000000;;, + 92;3; 0.000000, 6.750000,-0.000000;;, + 93;3; 0.000000, 6.750000,-0.000000;;, + 94;3; 0.000000, 6.750000,-0.000000;;, + 95;3; 0.000000, 6.750000, 0.000000;;, + 96;3; 0.000000, 6.750000,-0.000000;;, + 97;3; 0.000000, 6.750000, 0.000000;;, + 98;3; 0.000000, 6.750000, 0.000000;;, + 99;3; 0.000000, 6.750000,-0.000000;;, + 100;3; 0.000000, 6.750000, 0.000000;;, + 101;3; 0.000000, 6.750000, 0.000000;;, + 102;3; 0.000000, 6.750000,-0.000000;;, + 103;3; 0.000000, 6.750000, 0.000000;;, + 104;3;-0.000000, 6.750000, 0.000000;;, + 105;3; 0.000000, 6.750000, 0.000000;;, + 106;3; 0.000000, 6.750000, 0.000000;;, + 107;3; 0.000000, 6.750000,-0.000000;;, + 108;3; 0.000000, 6.750000, 0.000000;;, + 109;3; 0.000000, 6.750000, 0.000000;;, + 110;3; 0.000000, 6.750000,-0.000000;;, + 111;3; 0.000000, 6.750000,-0.000000;;, + 112;3; 0.000000, 6.750000,-0.000000;;, + 113;3; 0.000000, 6.750000,-0.000000;;, + 114;3; 0.000000, 6.750000, 0.000000;;, + 115;3; 0.000000, 6.750000, 0.000000;;, + 116;3; 0.000000, 6.750000, 0.000000;;, + 117;3; 0.000000, 6.750000,-0.000000;;, + 118;3; 0.000000, 6.750000,-0.000000;;, + 119;3; 0.000000, 6.750000,-0.000000;;, + 120;3;-0.000000, 6.750000, 0.000000;;, + 121;3; 0.000000, 6.750000,-0.000000;;, + 122;3;-0.000000, 6.750000,-0.000000;;, + 123;3; 0.000000, 6.750000,-0.000000;;, + 124;3; 0.000000, 6.750000, 0.000000;;, + 125;3; 0.000000, 6.750000,-0.000000;;, + 126;3; 0.000000, 6.750000, 0.000000;;, + 127;3; 0.000000, 6.750000,-0.000000;;, + 128;3; 0.000000, 6.750000, 0.000000;;, + 129;3; 0.000000, 6.750000,-0.000000;;, + 130;3; 0.000000, 6.750000,-0.000000;;, + 131;3; 0.000000, 6.750000,-0.000000;;, + 132;3; 0.000000, 6.750000,-0.000000;;, + 133;3; 0.000000, 6.750000, 0.000000;;, + 134;3; 0.000000, 6.750000,-0.000000;;, + 135;3; 0.000000, 6.750000, 0.000000;;, + 136;3; 0.000000, 6.750000, 0.000000;;, + 137;3; 0.000000, 6.750000, 0.000000;;, + 138;3;-0.000000, 6.750000, 0.000000;;, + 139;3; 0.000000, 6.750000,-0.000000;;, + 140;3; 0.000000, 6.750000,-0.000000;;, + 141;3; 0.000000, 6.750000, 0.000000;;, + 142;3; 0.000000, 6.750000, 0.000000;;, + 143;3; 0.000000, 6.750000,-0.000000;;, + 144;3; 0.000000, 6.750000, 0.000000;;, + 145;3; 0.000000, 6.750000, 0.000000;;, + 146;3; 0.000000, 6.750000, 0.000000;;, + 147;3; 0.000000, 6.750000,-0.000000;;, + 148;3; 0.000000, 6.750000, 0.000000;;, + 149;3; 0.000000, 6.750000, 0.000000;;, + 150;3; 0.000000, 6.750000,-0.000000;;, + 151;3; 0.000000, 6.750000,-0.000000;;, + 152;3; 0.000000, 6.750000,-0.000000;;, + 153;3; 0.000000, 6.750000,-0.000000;;, + 154;3; 0.000000, 6.750000,-0.000000;;, + 155;3; 0.000000, 6.750000,-0.000000;;, + 156;3; 0.000000, 6.750000,-0.000000;;, + 157;3;-0.000000, 6.750000, 0.000000;;, + 158;3; 0.000000, 6.750000, 0.000000;;, + 159;3; 0.000000, 6.750000,-0.000000;;, + 160;3; 0.000000, 6.750000, 0.000000;;, + 161;3; 0.000000, 6.750000,-0.000000;;, + 162;3; 0.000000, 6.750000, 0.000000;;, + 163;3; 0.000000, 6.750000, 0.000000;;, + 164;3; 0.000000, 6.750000, 0.000000;;, + 165;3; 0.000000, 6.750000, 0.000000;;, + 166;3; 0.000000, 6.750000, 0.000000;;, + 167;3; 0.000000, 6.750000, 0.000000;;, + 168;3; 0.000000, 6.750000, 0.000000;;, + 169;3; 0.000000, 6.750000, 0.000000;;, + 170;3; 0.000000, 6.750000, 0.000000;;, + 171;3; 0.000000, 6.750000, 0.000000;;, + 172;3; 0.000000, 6.750000, 0.000000;;, + 173;3; 0.000000, 6.750000, 0.000000;;, + 174;3; 0.000000, 6.750000, 0.000000;;, + 175;3; 0.000000, 6.750000, 0.000000;;, + 176;3; 0.000000, 6.750000, 0.000000;;, + 177;3; 0.000000, 6.750000, 0.000000;;, + 178;3; 0.000000, 6.750000, 0.000000;;, + 179;3; 0.000000, 6.750000, 0.000000;;, + 180;3; 0.000000, 6.750000, 0.000000;;, + 181;3; 0.000000, 6.750000, 0.000000;;, + 182;3; 0.000000, 6.750000, 0.000000;;, + 183;3; 0.000000, 6.750000, 0.000000;;, + 184;3; 0.000000, 6.750000, 0.000000;;, + 185;3; 0.000000, 6.750000, 0.000000;;, + 186;3; 0.000000, 6.750000, 0.000000;;, + 187;3; 0.000000, 6.750000, 0.000000;;, + 188;3; 0.000000, 6.750000, 0.000000;;; + } + } + Animation { + {Armature_Arm_Left} + AnimationKey { // Rotation + 0; + 189; + 0;4; 0.648448, 0.757709,-0.045973,-0.057269;;, + 1;4; 0.648161, 0.757936,-0.045920,-0.057331;;, + 2;4; 0.647294, 0.758622,-0.045761,-0.057521;;, + 3;4; 0.645844, 0.759770,-0.045495,-0.057837;;, + 4;4; 0.643821, 0.761372,-0.045124,-0.058279;;, + 5;4; 0.641250, 0.763407,-0.044653,-0.058841;;, + 6;4; 0.638175, 0.765842,-0.044088,-0.059513;;, + 7;4; 0.634660, 0.768625,-0.043443,-0.060281;;, + 8;4; 0.630790, 0.771689,-0.042734,-0.061126;;, + 9;4; 0.626671, 0.774950,-0.041978,-0.062026;;, + 10;4; 0.622424, 0.778313,-0.041199,-0.062953;;, + 11;4; 0.618177, 0.781676,-0.040419,-0.063881;;, + 12;4; 0.614058, 0.784937,-0.039664,-0.064781;;, + 13;4; 0.610189, 0.788000,-0.038954,-0.065626;;, + 14;4; 0.606673, 0.790784,-0.038309,-0.066394;;, + 15;4; 0.603598, 0.793218,-0.037745,-0.067066;;, + 16;4; 0.601027, 0.795254,-0.037273,-0.067628;;, + 17;4; 0.599004, 0.796856,-0.036902,-0.068069;;, + 18;4; 0.597555, 0.798003,-0.036636,-0.068386;;, + 19;4; 0.596688, 0.798690,-0.036477,-0.068576;;, + 20;4; 0.596401, 0.798917,-0.036424,-0.068638;;, + 21;4; 0.596760, 0.798627,-0.036471,-0.068580;;, + 22;4; 0.597846, 0.797750,-0.036614,-0.068404;;, + 23;4; 0.599661, 0.796284,-0.036852,-0.068109;;, + 24;4; 0.602194, 0.794238,-0.037184,-0.067698;;, + 25;4; 0.605413, 0.791638,-0.037606,-0.067176;;, + 26;4; 0.609264, 0.788527,-0.038110,-0.066551;;, + 27;4; 0.613666, 0.784972,-0.038687,-0.065837;;, + 28;4; 0.618511, 0.781058,-0.039322,-0.065050;;, + 29;4; 0.623668, 0.776892,-0.039998,-0.064213;;, + 30;4; 0.628987, 0.772597,-0.040695,-0.063350;;, + 31;4; 0.634305, 0.768301,-0.041393,-0.062487;;, + 32;4; 0.639462, 0.764135,-0.042069,-0.061650;;, + 33;4; 0.644308, 0.760222,-0.042704,-0.060864;;, + 34;4; 0.648710, 0.756666,-0.043281,-0.060150;;, + 35;4; 0.652560, 0.753556,-0.043785,-0.059525;;, + 36;4; 0.655780, 0.750956,-0.044207,-0.059002;;, + 37;4; 0.658313, 0.748910,-0.044539,-0.058591;;, + 38;4; 0.660128, 0.747444,-0.044777,-0.058297;;, + 39;4; 0.661214, 0.746567,-0.044920,-0.058121;;, + 40;4; 0.661573, 0.746277,-0.044967,-0.058062;;, + 41;4; 0.661328, 0.746479,-0.044910,-0.058126;;, + 42;4; 0.660587, 0.747091,-0.044737,-0.058317;;, + 43;4; 0.659348, 0.748115,-0.044449,-0.058638;;, + 44;4; 0.657620, 0.749544,-0.044046,-0.059085;;, + 45;4; 0.655424, 0.751359,-0.043535,-0.059653;;, + 46;4; 0.652797, 0.753531,-0.042924,-0.060333;;, + 47;4; 0.649794, 0.756013,-0.042224,-0.061110;;, + 48;4; 0.646488, 0.758746,-0.041455,-0.061966;;, + 49;4; 0.642969, 0.761655,-0.040636,-0.062876;;, + 50;4; 0.639341, 0.764654,-0.039791,-0.063815;;, + 51;4; 0.635713, 0.767653,-0.038946,-0.064754;;, + 52;4; 0.632194, 0.770562,-0.038127,-0.065665;;, + 53;4; 0.628889, 0.773294,-0.037357,-0.066520;;, + 54;4; 0.625885, 0.775777,-0.036658,-0.067297;;, + 55;4; 0.623258, 0.777949,-0.036047,-0.067977;;, + 56;4; 0.621062, 0.779764,-0.035535,-0.068545;;, + 57;4; 0.619334, 0.781193,-0.035133,-0.068993;;, + 58;4; 0.618095, 0.782216,-0.034845,-0.069313;;, + 59;4; 0.617355, 0.782829,-0.034672,-0.069505;;, + 60;4; 0.617110, 0.783031,-0.034615,-0.069568;;, + 61;4; 0.617174, 0.782991,-0.034614,-0.069562;;, + 62;4; 0.617353, 0.782876,-0.034615,-0.069541;;, + 63;4; 0.617631, 0.782698,-0.034624,-0.069502;;, + 64;4; 0.617995, 0.782463,-0.034645,-0.069440;;, + 65;4; 0.618435, 0.782178,-0.034685,-0.069353;;, + 66;4; 0.618940, 0.781848,-0.034749,-0.069236;;, + 67;4; 0.619505, 0.781478,-0.034841,-0.069085;;, + 68;4; 0.620120, 0.781070,-0.034969,-0.068894;;, + 69;4; 0.620781, 0.780629,-0.035139,-0.068658;;, + 70;4; 0.621482, 0.780157,-0.035359,-0.068369;;, + 71;4; 0.622217, 0.779656,-0.035640,-0.068019;;, + 72;4; 0.622979, 0.779130,-0.035993,-0.067597;;, + 73;4; 0.623764, 0.778580,-0.036434,-0.067088;;, + 74;4; 0.624563, 0.778009,-0.036984,-0.066473;;, + 75;4; 0.625368, 0.777419,-0.037673,-0.065726;;, + 76;4; 0.626168, 0.776813,-0.038544,-0.064805;;, + 77;4; 0.626943, 0.776195,-0.039669,-0.063644;;, + 78;4; 0.627662, 0.775573,-0.041178,-0.062123;;, + 79;4; 0.628249, 0.774961,-0.043370,-0.059964;;, + 80;4; 0.628391, 0.774424,-0.047456,-0.056046;;, + 81;4; 0.000990, 0.997299,-0.072151,-0.013690;;, + 82;4;-0.011967, 0.997270,-0.071970,-0.015145;;, + 83;4;-0.018796, 0.997206,-0.071870,-0.016486;;, + 84;4;-0.023483, 0.997134,-0.071799,-0.017763;;, + 85;4;-0.026976, 0.997057,-0.071745,-0.018986;;, + 86;4;-0.029682, 0.996980,-0.071701,-0.020158;;, + 87;4;-0.031824, 0.996902,-0.071665,-0.021280;;, + 88;4;-0.033538, 0.996826,-0.071634,-0.022353;;, + 89;4;-0.034915, 0.996751,-0.071609,-0.023375;;, + 90;4;-0.036019, 0.996679,-0.071588,-0.024345;;, + 91;4;-0.036900, 0.996610,-0.071570,-0.025261;;, + 92;4;-0.037594, 0.996544,-0.071555,-0.026120;;, + 93;4;-0.038132, 0.996482,-0.071542,-0.026918;;, + 94;4;-0.038539, 0.996425,-0.071531,-0.027653;;, + 95;4;-0.038836, 0.996372,-0.071523,-0.028317;;, + 96;4;-0.039042, 0.996325,-0.071516,-0.028907;;, + 97;4;-0.039174, 0.996284,-0.071511,-0.029414;;, + 98;4;-0.039248, 0.996250,-0.071507,-0.029831;;, + 99;4;-0.039280, 0.996225,-0.071504,-0.030146;;, + 100;4;-0.039287, 0.996208,-0.071503,-0.030348;;, + 101;4;-0.039284, 0.996202,-0.071502,-0.030419;;, + 102;4;-0.039062, 0.996208,-0.071506,-0.030327;;, + 103;4;-0.038392, 0.996227,-0.071517,-0.030048;;, + 104;4;-0.037270, 0.996257,-0.071535,-0.029583;;, + 105;4;-0.035704, 0.996300,-0.071560,-0.028932;;, + 106;4;-0.033715, 0.996354,-0.071592,-0.028106;;, + 107;4;-0.031335, 0.996419,-0.071630,-0.027118;;, + 108;4;-0.028615, 0.996493,-0.071674,-0.025988;;, + 109;4;-0.025621, 0.996574,-0.071723,-0.024744;;, + 110;4;-0.022434, 0.996661,-0.071774,-0.023420;;, + 111;4;-0.019147, 0.996751,-0.071827,-0.022055;;, + 112;4;-0.015860, 0.996840,-0.071880,-0.020690;;, + 113;4;-0.012673, 0.996927,-0.071931,-0.019366;;, + 114;4;-0.009679, 0.997009,-0.071979,-0.018122;;, + 115;4;-0.006959, 0.997083,-0.072023,-0.016992;;, + 116;4;-0.004579, 0.997148,-0.072062,-0.016004;;, + 117;4;-0.002590, 0.997202,-0.072094,-0.015177;;, + 118;4;-0.001024, 0.997244,-0.072119,-0.014527;;, + 119;4; 0.000098, 0.997275,-0.072137,-0.014061;;, + 120;4; 0.000769, 0.997293,-0.072148,-0.013782;;, + 121;4; 0.000990, 0.997299,-0.072151,-0.013690;;, + 122;4; 0.000769, 0.997293,-0.072148,-0.013782;;, + 123;4; 0.000098, 0.997275,-0.072137,-0.014061;;, + 124;4;-0.001024, 0.997244,-0.072119,-0.014527;;, + 125;4;-0.002590, 0.997202,-0.072094,-0.015177;;, + 126;4;-0.004579, 0.997148,-0.072062,-0.016004;;, + 127;4;-0.006959, 0.997083,-0.072023,-0.016992;;, + 128;4;-0.009679, 0.997009,-0.071979,-0.018122;;, + 129;4;-0.012673, 0.996927,-0.071931,-0.019366;;, + 130;4;-0.015860, 0.996840,-0.071880,-0.020690;;, + 131;4;-0.019147, 0.996751,-0.071827,-0.022055;;, + 132;4;-0.022434, 0.996661,-0.071774,-0.023420;;, + 133;4;-0.025621, 0.996574,-0.071723,-0.024744;;, + 134;4;-0.028615, 0.996493,-0.071674,-0.025988;;, + 135;4;-0.031335, 0.996419,-0.071630,-0.027118;;, + 136;4;-0.033715, 0.996354,-0.071592,-0.028106;;, + 137;4;-0.035704, 0.996300,-0.071560,-0.028932;;, + 138;4;-0.037270, 0.996257,-0.071535,-0.029583;;, + 139;4;-0.038392, 0.996227,-0.071517,-0.030048;;, + 140;4;-0.039062, 0.996208,-0.071506,-0.030327;;, + 141;4;-0.039284, 0.996202,-0.071502,-0.030419;;, + 142;4;-0.039115, 0.996208,-0.071505,-0.030336;;, + 143;4;-0.038639, 0.996224,-0.071513,-0.030100;;, + 144;4;-0.037892, 0.996249,-0.071526,-0.029733;;, + 145;4;-0.036906, 0.996282,-0.071542,-0.029250;;, + 146;4;-0.035703, 0.996322,-0.071562,-0.028665;;, + 147;4;-0.034305, 0.996368,-0.071585,-0.027989;;, + 148;4;-0.032728, 0.996419,-0.071611,-0.027232;;, + 149;4;-0.030984, 0.996475,-0.071640,-0.026401;;, + 150;4;-0.029084, 0.996536,-0.071671,-0.025504;;, + 151;4;-0.027040, 0.996601,-0.071705,-0.024547;;, + 152;4;-0.024856, 0.996669,-0.071741,-0.023537;;, + 153;4;-0.022540, 0.996740,-0.071779,-0.022479;;, + 154;4;-0.020096, 0.996813,-0.071819,-0.021379;;, + 155;4;-0.017525, 0.996888,-0.071861,-0.020245;;, + 156;4;-0.014829, 0.996965,-0.071905,-0.019082;;, + 157;4;-0.012005, 0.997043,-0.071950,-0.017902;;, + 158;4;-0.009047, 0.997120,-0.071997,-0.016718;;, + 159;4;-0.005937, 0.997194,-0.072047,-0.015555;;, + 160;4;-0.002640, 0.997260,-0.072098,-0.014470;;, + 161;4; 0.000990, 0.997299,-0.072151,-0.013690;;, + 162;4; 0.003930, 0.958043,-0.286296,-0.013151;;, + 163;4; 0.003930, 0.958043,-0.286296,-0.013151;;, + 164;4; 0.003930, 0.958043,-0.286296,-0.013151;;, + 165;4; 0.003930, 0.958043,-0.286296,-0.013151;;, + 166;4; 0.003930, 0.958043,-0.286296,-0.013151;;, + 167;4; 0.003930, 0.958043,-0.286296,-0.013151;;, + 168;4; 0.648448, 0.757709,-0.045973,-0.057269;;, + 169;4; 0.654493, 0.752186,-0.040667,-0.064731;;, + 170;4; 0.658020, 0.748822,-0.037013,-0.069986;;, + 171;4; 0.659629, 0.747251,-0.035126,-0.072743;;, + 172;4; 0.660600, 0.746345,-0.034493,-0.073596;;, + 173;4; 0.662067, 0.745032,-0.034351,-0.073580;;, + 174;4; 0.664030, 0.743414,-0.034783,-0.072577;;, + 175;4; 0.665879, 0.742098,-0.036358,-0.069861;;, + 176;4; 0.667289, 0.741198,-0.038892,-0.065911;;, + 177;4; 0.668012, 0.740701,-0.041785,-0.061811;;, + 178;4; 0.668060, 0.740475,-0.044458,-0.058453;;, + 179;4; 0.667246, 0.740936,-0.047522,-0.055224;;, + 180;4; 0.665271, 0.742616,-0.051527,-0.051513;;, + 181;4; 0.662480, 0.745165,-0.055526,-0.048126;;, + 182;4; 0.659627, 0.747806,-0.058315,-0.045969;;, + 183;4; 0.657320, 0.749902,-0.059309,-0.045384;;, + 184;4; 0.655964, 0.751255,-0.058163,-0.046490;;, + 185;4; 0.655437, 0.752065,-0.054765,-0.049326;;, + 186;4; 0.654752, 0.752963,-0.050391,-0.052966;;, + 187;4; 0.652660, 0.754722,-0.047040,-0.055932;;, + 188;4; 0.648448, 0.757709,-0.045973,-0.057269;;; + } + AnimationKey { // Scale + 1; + 189; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 189; + 0;3;-2.000000, 6.750000, 0.000000;;, + 1;3;-2.000000, 6.750000, 0.000000;;, + 2;3;-2.000000, 6.750000, 0.000000;;, + 3;3;-2.000000, 6.750000, 0.000000;;, + 4;3;-2.000000, 6.750000, 0.000000;;, + 5;3;-2.000000, 6.750000, 0.000000;;, + 6;3;-2.000000, 6.750000, 0.000000;;, + 7;3;-2.000000, 6.750000,-0.000000;;, + 8;3;-2.000000, 6.750000,-0.000000;;, + 9;3;-2.000000, 6.750000, 0.000000;;, + 10;3;-2.000000, 6.750000,-0.000000;;, + 11;3;-2.000000, 6.750000, 0.000000;;, + 12;3;-2.000000, 6.750000, 0.000000;;, + 13;3;-2.000000, 6.750000, 0.000000;;, + 14;3;-2.000000, 6.750000,-0.000000;;, + 15;3;-2.000000, 6.750000,-0.000000;;, + 16;3;-2.000000, 6.750000, 0.000000;;, + 17;3;-2.000000, 6.750001,-0.000000;;, + 18;3;-2.000000, 6.750000, 0.000000;;, + 19;3;-2.000000, 6.750000, 0.000000;;, + 20;3;-2.000000, 6.750000, 0.000000;;, + 21;3;-2.000000, 6.750000, 0.000000;;, + 22;3;-2.000000, 6.750000, 0.000000;;, + 23;3;-2.000000, 6.750001,-0.000000;;, + 24;3;-2.000000, 6.750000, 0.000000;;, + 25;3;-2.000000, 6.750000, 0.000000;;, + 26;3;-2.000000, 6.750000,-0.000000;;, + 27;3;-2.000000, 6.750000, 0.000000;;, + 28;3;-2.000000, 6.750000, 0.000000;;, + 29;3;-2.000000, 6.750000, 0.000000;;, + 30;3;-2.000000, 6.750000, 0.000000;;, + 31;3;-2.000000, 6.750000, 0.000000;;, + 32;3;-2.000000, 6.750000,-0.000000;;, + 33;3;-2.000000, 6.750000,-0.000000;;, + 34;3;-2.000000, 6.750000, 0.000000;;, + 35;3;-2.000000, 6.750000, 0.000000;;, + 36;3;-2.000000, 6.750000,-0.000000;;, + 37;3;-2.000000, 6.750000, 0.000000;;, + 38;3;-2.000000, 6.750000, 0.000000;;, + 39;3;-2.000000, 6.750000, 0.000000;;, + 40;3;-2.000000, 6.750000, 0.000000;;, + 41;3;-2.000000, 6.750000, 0.000000;;, + 42;3;-2.000000, 6.750000, 0.000000;;, + 43;3;-2.000000, 6.750000, 0.000000;;, + 44;3;-2.000000, 6.750000, 0.000000;;, + 45;3;-2.000000, 6.750000, 0.000000;;, + 46;3;-2.000000, 6.750000,-0.000000;;, + 47;3;-2.000000, 6.750000, 0.000000;;, + 48;3;-2.000000, 6.750000, 0.000000;;, + 49;3;-2.000000, 6.750000, 0.000000;;, + 50;3;-2.000000, 6.750000,-0.000000;;, + 51;3;-2.000000, 6.750000, 0.000000;;, + 52;3;-2.000000, 6.750000, 0.000000;;, + 53;3;-2.000000, 6.750000, 0.000000;;, + 54;3;-2.000000, 6.750000, 0.000000;;, + 55;3;-2.000000, 6.750000,-0.000000;;, + 56;3;-2.000000, 6.750000, 0.000000;;, + 57;3;-2.000000, 6.750001,-0.000000;;, + 58;3;-2.000000, 6.750000, 0.000000;;, + 59;3;-2.000000, 6.750000, 0.000000;;, + 60;3;-2.000000, 6.750000, 0.000000;;, + 61;3;-2.000000, 6.750000, 0.000000;;, + 62;3;-2.000000, 6.750000, 0.000000;;, + 63;3;-2.000000, 6.750000,-0.000000;;, + 64;3;-2.000000, 6.750000, 0.000000;;, + 65;3;-2.000000, 6.750000, 0.000000;;, + 66;3;-2.000000, 6.750000, 0.000000;;, + 67;3;-2.000000, 6.750000, 0.000000;;, + 68;3;-2.000000, 6.750000, 0.000000;;, + 69;3;-2.000000, 6.750000,-0.000000;;, + 70;3;-2.000000, 6.750000,-0.000000;;, + 71;3;-2.000000, 6.750000,-0.000000;;, + 72;3;-2.000000, 6.750000,-0.000000;;, + 73;3;-2.000000, 6.749999, 0.000000;;, + 74;3;-2.000000, 6.750000, 0.000000;;, + 75;3;-2.000000, 6.750000, 0.000000;;, + 76;3;-2.000000, 6.750000,-0.000000;;, + 77;3;-2.000000, 6.750000, 0.000000;;, + 78;3;-2.000000, 6.750000,-0.000000;;, + 79;3;-2.000000, 6.750000, 0.000000;;, + 80;3;-2.000000, 6.750000, 0.000000;;, + 81;3;-2.000000, 6.750000,-0.000000;;, + 82;3;-2.000000, 6.750000, 0.000000;;, + 83;3;-2.000000, 6.750000,-0.000000;;, + 84;3;-2.000000, 6.750000, 0.000000;;, + 85;3;-2.000000, 6.750000,-0.000000;;, + 86;3;-2.000000, 6.750000, 0.000000;;, + 87;3;-2.000000, 6.750000,-0.000000;;, + 88;3;-2.000000, 6.750000, 0.000000;;, + 89;3;-2.000000, 6.750000,-0.000000;;, + 90;3;-2.000000, 6.750000,-0.000000;;, + 91;3;-2.000000, 6.750000, 0.000000;;, + 92;3;-2.000000, 6.750000,-0.000000;;, + 93;3;-2.000000, 6.750000,-0.000000;;, + 94;3;-2.000000, 6.750000,-0.000000;;, + 95;3;-2.000000, 6.750000, 0.000000;;, + 96;3;-2.000000, 6.750000,-0.000000;;, + 97;3;-2.000000, 6.750000, 0.000000;;, + 98;3;-2.000000, 6.750000, 0.000000;;, + 99;3;-2.000000, 6.750000,-0.000000;;, + 100;3;-2.000000, 6.750000, 0.000000;;, + 101;3;-2.000000, 6.750000, 0.000000;;, + 102;3;-2.000000, 6.750000,-0.000000;;, + 103;3;-2.000000, 6.750000, 0.000000;;, + 104;3;-2.000000, 6.750000, 0.000000;;, + 105;3;-2.000000, 6.750000, 0.000000;;, + 106;3;-2.000000, 6.750000, 0.000000;;, + 107;3;-2.000000, 6.750000,-0.000000;;, + 108;3;-2.000000, 6.750000, 0.000000;;, + 109;3;-2.000000, 6.750000, 0.000000;;, + 110;3;-2.000000, 6.750000,-0.000000;;, + 111;3;-2.000000, 6.750000,-0.000000;;, + 112;3;-2.000000, 6.750000,-0.000000;;, + 113;3;-2.000000, 6.750000,-0.000000;;, + 114;3;-2.000000, 6.750000, 0.000000;;, + 115;3;-2.000000, 6.750000, 0.000000;;, + 116;3;-2.000000, 6.750000, 0.000000;;, + 117;3;-2.000000, 6.750000,-0.000000;;, + 118;3;-2.000000, 6.750000,-0.000000;;, + 119;3;-2.000000, 6.750000,-0.000000;;, + 120;3;-2.000000, 6.750000, 0.000000;;, + 121;3;-2.000000, 6.750000,-0.000000;;, + 122;3;-2.000000, 6.750000,-0.000000;;, + 123;3;-2.000000, 6.750000,-0.000000;;, + 124;3;-2.000000, 6.750000, 0.000000;;, + 125;3;-2.000000, 6.750000,-0.000000;;, + 126;3;-2.000000, 6.750000, 0.000000;;, + 127;3;-2.000000, 6.750000,-0.000000;;, + 128;3;-2.000000, 6.750000, 0.000000;;, + 129;3;-2.000000, 6.750000,-0.000000;;, + 130;3;-2.000000, 6.750000,-0.000000;;, + 131;3;-2.000000, 6.750000,-0.000000;;, + 132;3;-2.000000, 6.750000,-0.000000;;, + 133;3;-2.000000, 6.750000, 0.000000;;, + 134;3;-2.000000, 6.750000,-0.000000;;, + 135;3;-2.000000, 6.750000, 0.000000;;, + 136;3;-2.000000, 6.750000, 0.000000;;, + 137;3;-2.000000, 6.750000, 0.000000;;, + 138;3;-2.000000, 6.750000, 0.000000;;, + 139;3;-2.000000, 6.750000,-0.000000;;, + 140;3;-2.000000, 6.750000,-0.000000;;, + 141;3;-2.000000, 6.750000, 0.000000;;, + 142;3;-2.000000, 6.750000, 0.000000;;, + 143;3;-2.000000, 6.750000,-0.000000;;, + 144;3;-2.000000, 6.750000, 0.000000;;, + 145;3;-2.000000, 6.750000, 0.000000;;, + 146;3;-2.000000, 6.750000, 0.000000;;, + 147;3;-2.000000, 6.750000,-0.000000;;, + 148;3;-2.000000, 6.750000, 0.000000;;, + 149;3;-2.000000, 6.750000, 0.000000;;, + 150;3;-2.000000, 6.750000,-0.000000;;, + 151;3;-2.000000, 6.750000,-0.000000;;, + 152;3;-2.000000, 6.750000,-0.000000;;, + 153;3;-2.000000, 6.750000,-0.000000;;, + 154;3;-2.000000, 6.750000,-0.000000;;, + 155;3;-2.000000, 6.750000,-0.000000;;, + 156;3;-2.000000, 6.750000,-0.000000;;, + 157;3;-2.000000, 6.750000, 0.000000;;, + 158;3;-2.000000, 6.750000, 0.000000;;, + 159;3;-2.000000, 6.750000,-0.000000;;, + 160;3;-2.000000, 6.750000, 0.000000;;, + 161;3;-2.000000, 6.750000,-0.000000;;, + 162;3;-2.000000, 6.750000, 0.000000;;, + 163;3;-2.000000, 6.750000, 0.000000;;, + 164;3;-2.000000, 6.750000, 0.000000;;, + 165;3;-2.000000, 6.750000, 0.000000;;, + 166;3;-2.000000, 6.750000, 0.000000;;, + 167;3;-2.000000, 6.750000, 0.000000;;, + 168;3;-2.000000, 6.750000, 0.000000;;, + 169;3;-2.000000, 6.750000, 0.000000;;, + 170;3;-2.000000, 6.750000, 0.000000;;, + 171;3;-2.000000, 6.750000, 0.000000;;, + 172;3;-2.000000, 6.750000, 0.000000;;, + 173;3;-2.000000, 6.750000, 0.000000;;, + 174;3;-2.000000, 6.750000, 0.000000;;, + 175;3;-2.000000, 6.750000, 0.000000;;, + 176;3;-2.000000, 6.750000, 0.000000;;, + 177;3;-2.000000, 6.750000, 0.000000;;, + 178;3;-2.000000, 6.750000, 0.000000;;, + 179;3;-2.000000, 6.750000, 0.000000;;, + 180;3;-2.000000, 6.750000, 0.000000;;, + 181;3;-2.000000, 6.750000, 0.000000;;, + 182;3;-2.000000, 6.750000, 0.000000;;, + 183;3;-2.000000, 6.750000, 0.000000;;, + 184;3;-2.000000, 6.750000, 0.000000;;, + 185;3;-2.000000, 6.750000, 0.000000;;, + 186;3;-2.000000, 6.750000, 0.000000;;, + 187;3;-2.000000, 6.750000, 0.000000;;, + 188;3;-2.000000, 6.750000, 0.000000;;; + } + } + Animation { + {Armature_Arm_Right} + AnimationKey { // Rotation + 0; + 189; + 0;4; 0.648448, 0.757709, 0.045973, 0.057269;;, + 1;4; 0.648161, 0.757936, 0.045920, 0.057331;;, + 2;4; 0.647294, 0.758622, 0.045761, 0.057521;;, + 3;4; 0.645844, 0.759770, 0.045495, 0.057837;;, + 4;4; 0.643821, 0.761372, 0.045124, 0.058279;;, + 5;4; 0.641250, 0.763407, 0.044653, 0.058841;;, + 6;4; 0.638175, 0.765842, 0.044088, 0.059513;;, + 7;4; 0.634660, 0.768625, 0.043443, 0.060281;;, + 8;4; 0.630790, 0.771689, 0.042734, 0.061126;;, + 9;4; 0.626671, 0.774950, 0.041978, 0.062026;;, + 10;4; 0.622424, 0.778313, 0.041199, 0.062953;;, + 11;4; 0.618177, 0.781676, 0.040419, 0.063881;;, + 12;4; 0.614058, 0.784937, 0.039664, 0.064781;;, + 13;4; 0.610189, 0.788000, 0.038954, 0.065626;;, + 14;4; 0.606673, 0.790784, 0.038309, 0.066394;;, + 15;4; 0.603598, 0.793218, 0.037745, 0.067066;;, + 16;4; 0.601027, 0.795254, 0.037273, 0.067628;;, + 17;4; 0.599004, 0.796856, 0.036902, 0.068069;;, + 18;4; 0.597555, 0.798003, 0.036636, 0.068386;;, + 19;4; 0.596688, 0.798690, 0.036477, 0.068576;;, + 20;4; 0.596401, 0.798917, 0.036424, 0.068638;;, + 21;4; 0.596760, 0.798627, 0.036471, 0.068580;;, + 22;4; 0.597846, 0.797750, 0.036614, 0.068404;;, + 23;4; 0.599661, 0.796284, 0.036852, 0.068109;;, + 24;4; 0.602194, 0.794238, 0.037184, 0.067698;;, + 25;4; 0.605413, 0.791638, 0.037606, 0.067176;;, + 26;4; 0.609264, 0.788527, 0.038110, 0.066551;;, + 27;4; 0.613666, 0.784972, 0.038687, 0.065837;;, + 28;4; 0.618511, 0.781058, 0.039322, 0.065050;;, + 29;4; 0.623668, 0.776892, 0.039998, 0.064213;;, + 30;4; 0.628987, 0.772597, 0.040695, 0.063350;;, + 31;4; 0.634305, 0.768301, 0.041393, 0.062487;;, + 32;4; 0.639462, 0.764135, 0.042069, 0.061650;;, + 33;4; 0.644308, 0.760222, 0.042704, 0.060864;;, + 34;4; 0.648710, 0.756666, 0.043281, 0.060150;;, + 35;4; 0.652560, 0.753556, 0.043785, 0.059525;;, + 36;4; 0.655780, 0.750956, 0.044207, 0.059002;;, + 37;4; 0.658313, 0.748910, 0.044539, 0.058591;;, + 38;4; 0.660128, 0.747444, 0.044777, 0.058297;;, + 39;4; 0.661214, 0.746567, 0.044920, 0.058121;;, + 40;4; 0.661573, 0.746277, 0.044967, 0.058062;;, + 41;4; 0.661328, 0.746479, 0.044910, 0.058126;;, + 42;4; 0.660587, 0.747091, 0.044737, 0.058317;;, + 43;4; 0.659348, 0.748115, 0.044449, 0.058638;;, + 44;4; 0.657620, 0.749544, 0.044046, 0.059085;;, + 45;4; 0.655424, 0.751359, 0.043535, 0.059653;;, + 46;4; 0.652797, 0.753531, 0.042924, 0.060333;;, + 47;4; 0.649794, 0.756013, 0.042224, 0.061110;;, + 48;4; 0.646488, 0.758746, 0.041455, 0.061966;;, + 49;4; 0.642969, 0.761655, 0.040636, 0.062876;;, + 50;4; 0.639341, 0.764654, 0.039791, 0.063815;;, + 51;4; 0.635713, 0.767653, 0.038946, 0.064754;;, + 52;4; 0.632194, 0.770562, 0.038127, 0.065665;;, + 53;4; 0.628889, 0.773294, 0.037357, 0.066520;;, + 54;4; 0.625885, 0.775777, 0.036658, 0.067297;;, + 55;4; 0.623258, 0.777949, 0.036047, 0.067977;;, + 56;4; 0.621062, 0.779764, 0.035535, 0.068545;;, + 57;4; 0.619334, 0.781193, 0.035133, 0.068993;;, + 58;4; 0.618095, 0.782216, 0.034845, 0.069313;;, + 59;4; 0.617355, 0.782829, 0.034672, 0.069505;;, + 60;4; 0.617110, 0.783031, 0.034615, 0.069568;;, + 61;4; 0.617174, 0.782991, 0.034614, 0.069562;;, + 62;4; 0.617353, 0.782876, 0.034615, 0.069541;;, + 63;4; 0.617631, 0.782698, 0.034624, 0.069502;;, + 64;4; 0.617995, 0.782463, 0.034645, 0.069440;;, + 65;4; 0.618435, 0.782178, 0.034685, 0.069353;;, + 66;4; 0.618940, 0.781848, 0.034749, 0.069236;;, + 67;4; 0.619505, 0.781478, 0.034841, 0.069085;;, + 68;4; 0.620120, 0.781070, 0.034969, 0.068894;;, + 69;4; 0.620781, 0.780629, 0.035139, 0.068658;;, + 70;4; 0.621482, 0.780157, 0.035359, 0.068369;;, + 71;4; 0.622217, 0.779656, 0.035640, 0.068019;;, + 72;4; 0.622979, 0.779130, 0.035993, 0.067597;;, + 73;4; 0.623764, 0.778580, 0.036434, 0.067088;;, + 74;4; 0.624563, 0.778009, 0.036984, 0.066473;;, + 75;4; 0.625368, 0.777419, 0.037673, 0.065726;;, + 76;4; 0.626168, 0.776813, 0.038544, 0.064805;;, + 77;4; 0.626943, 0.776195, 0.039669, 0.063644;;, + 78;4; 0.627662, 0.775573, 0.041178, 0.062123;;, + 79;4; 0.628249, 0.774961, 0.043370, 0.059964;;, + 80;4; 0.628391, 0.774424, 0.047456, 0.056046;;, + 81;4; 0.000990, 0.997299, 0.072151, 0.013690;;, + 82;4;-0.011967, 0.997270, 0.071970, 0.015145;;, + 83;4;-0.018796, 0.997206, 0.071870, 0.016486;;, + 84;4;-0.023483, 0.997134, 0.071799, 0.017763;;, + 85;4;-0.026976, 0.997057, 0.071745, 0.018986;;, + 86;4;-0.029682, 0.996980, 0.071701, 0.020158;;, + 87;4;-0.031824, 0.996902, 0.071665, 0.021280;;, + 88;4;-0.033538, 0.996826, 0.071634, 0.022353;;, + 89;4;-0.034915, 0.996751, 0.071609, 0.023375;;, + 90;4;-0.036019, 0.996679, 0.071588, 0.024345;;, + 91;4;-0.036900, 0.996610, 0.071570, 0.025261;;, + 92;4;-0.037594, 0.996544, 0.071555, 0.026120;;, + 93;4;-0.038132, 0.996482, 0.071542, 0.026918;;, + 94;4;-0.038539, 0.996425, 0.071531, 0.027653;;, + 95;4;-0.038836, 0.996372, 0.071523, 0.028317;;, + 96;4;-0.039042, 0.996325, 0.071516, 0.028907;;, + 97;4;-0.039174, 0.996284, 0.071511, 0.029414;;, + 98;4;-0.039248, 0.996250, 0.071507, 0.029831;;, + 99;4;-0.039280, 0.996225, 0.071504, 0.030146;;, + 100;4;-0.039287, 0.996208, 0.071503, 0.030348;;, + 101;4;-0.039284, 0.996202, 0.071502, 0.030419;;, + 102;4;-0.039062, 0.996208, 0.071506, 0.030327;;, + 103;4;-0.038392, 0.996227, 0.071517, 0.030048;;, + 104;4;-0.037270, 0.996257, 0.071535, 0.029583;;, + 105;4;-0.035704, 0.996300, 0.071560, 0.028932;;, + 106;4;-0.033715, 0.996354, 0.071592, 0.028106;;, + 107;4;-0.031335, 0.996419, 0.071630, 0.027118;;, + 108;4;-0.028615, 0.996493, 0.071674, 0.025988;;, + 109;4;-0.025621, 0.996574, 0.071723, 0.024744;;, + 110;4;-0.022434, 0.996661, 0.071774, 0.023420;;, + 111;4;-0.019147, 0.996751, 0.071827, 0.022055;;, + 112;4;-0.015860, 0.996840, 0.071880, 0.020690;;, + 113;4;-0.012673, 0.996927, 0.071931, 0.019366;;, + 114;4;-0.009679, 0.997009, 0.071979, 0.018122;;, + 115;4;-0.006959, 0.997083, 0.072023, 0.016992;;, + 116;4;-0.004579, 0.997148, 0.072062, 0.016004;;, + 117;4;-0.002590, 0.997202, 0.072094, 0.015177;;, + 118;4;-0.001024, 0.997244, 0.072119, 0.014527;;, + 119;4; 0.000098, 0.997275, 0.072137, 0.014061;;, + 120;4; 0.000769, 0.997293, 0.072148, 0.013782;;, + 121;4; 0.000990, 0.997299, 0.072151, 0.013690;;, + 122;4; 0.000769, 0.997293, 0.072148, 0.013782;;, + 123;4; 0.000098, 0.997275, 0.072137, 0.014061;;, + 124;4;-0.001024, 0.997244, 0.072119, 0.014527;;, + 125;4;-0.002590, 0.997202, 0.072094, 0.015177;;, + 126;4;-0.004579, 0.997148, 0.072062, 0.016004;;, + 127;4;-0.006959, 0.997083, 0.072023, 0.016992;;, + 128;4;-0.009679, 0.997009, 0.071979, 0.018122;;, + 129;4;-0.012673, 0.996927, 0.071931, 0.019366;;, + 130;4;-0.015860, 0.996840, 0.071880, 0.020690;;, + 131;4;-0.019147, 0.996751, 0.071827, 0.022055;;, + 132;4;-0.022434, 0.996661, 0.071774, 0.023420;;, + 133;4;-0.025621, 0.996574, 0.071723, 0.024744;;, + 134;4;-0.028615, 0.996493, 0.071674, 0.025988;;, + 135;4;-0.031335, 0.996419, 0.071630, 0.027118;;, + 136;4;-0.033715, 0.996354, 0.071592, 0.028106;;, + 137;4;-0.035704, 0.996300, 0.071560, 0.028932;;, + 138;4;-0.037270, 0.996257, 0.071535, 0.029583;;, + 139;4;-0.038392, 0.996227, 0.071517, 0.030048;;, + 140;4;-0.039062, 0.996208, 0.071506, 0.030327;;, + 141;4;-0.039284, 0.996202, 0.071502, 0.030419;;, + 142;4;-0.039115, 0.996208, 0.071505, 0.030336;;, + 143;4;-0.038639, 0.996224, 0.071513, 0.030100;;, + 144;4;-0.037892, 0.996249, 0.071526, 0.029733;;, + 145;4;-0.036906, 0.996282, 0.071542, 0.029250;;, + 146;4;-0.035703, 0.996322, 0.071562, 0.028665;;, + 147;4;-0.034305, 0.996368, 0.071585, 0.027989;;, + 148;4;-0.032728, 0.996419, 0.071611, 0.027232;;, + 149;4;-0.030984, 0.996475, 0.071640, 0.026401;;, + 150;4;-0.029084, 0.996536, 0.071671, 0.025504;;, + 151;4;-0.027040, 0.996601, 0.071705, 0.024547;;, + 152;4;-0.024856, 0.996669, 0.071741, 0.023537;;, + 153;4;-0.022540, 0.996740, 0.071779, 0.022479;;, + 154;4;-0.020096, 0.996813, 0.071819, 0.021379;;, + 155;4;-0.017525, 0.996888, 0.071861, 0.020245;;, + 156;4;-0.014829, 0.996965, 0.071905, 0.019082;;, + 157;4;-0.012005, 0.997043, 0.071950, 0.017902;;, + 158;4;-0.009047, 0.997120, 0.071997, 0.016718;;, + 159;4;-0.005937, 0.997194, 0.072047, 0.015555;;, + 160;4;-0.002640, 0.997260, 0.072098, 0.014470;;, + 161;4; 0.000990, 0.997299, 0.072151, 0.013690;;, + 162;4; 0.003930, 0.958043, 0.286296, 0.013151;;, + 163;4; 0.003930, 0.958043, 0.286296, 0.013151;;, + 164;4; 0.003930, 0.958043, 0.286296, 0.013151;;, + 165;4; 0.003930, 0.958043, 0.286296, 0.013151;;, + 166;4; 0.003930, 0.958043, 0.286296, 0.013151;;, + 167;4; 0.003930, 0.958043, 0.286296, 0.013151;;, + 168;4; 0.648448, 0.757709, 0.045973, 0.057269;;, + 169;4; 0.649549, 0.757271, 0.047200, 0.056091;;, + 170;4; 0.649725, 0.756946, 0.050660, 0.053001;;, + 171;4; 0.649483, 0.756671, 0.055081, 0.049073;;, + 172;4; 0.649550, 0.756346, 0.058515, 0.045995;;, + 173;4; 0.650401, 0.755911, 0.059724, 0.044837;;, + 174;4; 0.652287, 0.754678, 0.058785, 0.045494;;, + 175;4; 0.655167, 0.752148, 0.056006, 0.047730;;, + 176;4; 0.658293, 0.749160, 0.051993, 0.051173;;, + 177;4; 0.660622, 0.746956, 0.047989, 0.054888;;, + 178;4; 0.661573, 0.746277, 0.044967, 0.058062;;, + 179;4; 0.660467, 0.747385, 0.042436, 0.061362;;, + 180;4; 0.656915, 0.750262, 0.039819, 0.065439;;, + 181;4; 0.652243, 0.753921, 0.037593, 0.069365;;, + 182;4; 0.648570, 0.756808, 0.036216, 0.072016;;, + 183;4; 0.647260, 0.757932, 0.035794, 0.072889;;, + 184;4; 0.647163, 0.758022, 0.036704, 0.071517;;, + 185;4; 0.646979, 0.757987, 0.039247, 0.067643;;, + 186;4; 0.646980, 0.757869, 0.042510, 0.062649;;, + 187;4; 0.647442, 0.757754, 0.045057, 0.058724;;, + 188;4; 0.648448, 0.757709, 0.045973, 0.057269;;; + } + AnimationKey { // Scale + 1; + 189; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 189; + 0;3; 2.000000, 6.750000, 0.000000;;, + 1;3; 2.000000, 6.750000, 0.000000;;, + 2;3; 2.000000, 6.750000, 0.000000;;, + 3;3; 2.000000, 6.750000, 0.000000;;, + 4;3; 2.000000, 6.750000, 0.000000;;, + 5;3; 2.000000, 6.750000, 0.000000;;, + 6;3; 2.000000, 6.750000, 0.000000;;, + 7;3; 2.000000, 6.750000,-0.000000;;, + 8;3; 2.000000, 6.750000,-0.000000;;, + 9;3; 2.000000, 6.750000, 0.000000;;, + 10;3; 2.000000, 6.750000,-0.000000;;, + 11;3; 2.000000, 6.750000, 0.000000;;, + 12;3; 2.000000, 6.750000, 0.000000;;, + 13;3; 2.000000, 6.750000, 0.000000;;, + 14;3; 2.000000, 6.750000,-0.000000;;, + 15;3; 2.000000, 6.750000,-0.000000;;, + 16;3; 2.000000, 6.750000, 0.000000;;, + 17;3; 2.000000, 6.750001,-0.000000;;, + 18;3; 2.000000, 6.750000, 0.000000;;, + 19;3; 2.000000, 6.750000, 0.000000;;, + 20;3; 2.000000, 6.750000, 0.000000;;, + 21;3; 2.000000, 6.750000, 0.000000;;, + 22;3; 2.000000, 6.750000, 0.000000;;, + 23;3; 2.000000, 6.750001,-0.000000;;, + 24;3; 2.000000, 6.750000, 0.000000;;, + 25;3; 2.000000, 6.750000, 0.000000;;, + 26;3; 2.000000, 6.750000,-0.000000;;, + 27;3; 2.000000, 6.750000, 0.000000;;, + 28;3; 2.000000, 6.750000, 0.000000;;, + 29;3; 2.000000, 6.750000, 0.000000;;, + 30;3; 2.000000, 6.750000, 0.000000;;, + 31;3; 2.000000, 6.750000, 0.000000;;, + 32;3; 2.000000, 6.750000,-0.000000;;, + 33;3; 2.000000, 6.750000,-0.000000;;, + 34;3; 2.000000, 6.750000, 0.000000;;, + 35;3; 2.000000, 6.750000, 0.000000;;, + 36;3; 2.000000, 6.750000,-0.000000;;, + 37;3; 2.000000, 6.750000, 0.000000;;, + 38;3; 2.000000, 6.750000, 0.000000;;, + 39;3; 2.000000, 6.750000, 0.000000;;, + 40;3; 2.000000, 6.750000, 0.000000;;, + 41;3; 2.000000, 6.750000, 0.000000;;, + 42;3; 2.000000, 6.750000, 0.000000;;, + 43;3; 2.000000, 6.750000, 0.000000;;, + 44;3; 2.000000, 6.750000, 0.000000;;, + 45;3; 2.000000, 6.750000, 0.000000;;, + 46;3; 2.000000, 6.750000,-0.000000;;, + 47;3; 2.000000, 6.750000, 0.000000;;, + 48;3; 2.000000, 6.750000, 0.000000;;, + 49;3; 2.000000, 6.750000, 0.000000;;, + 50;3; 2.000000, 6.750000,-0.000000;;, + 51;3; 2.000000, 6.750000, 0.000000;;, + 52;3; 2.000000, 6.750000, 0.000000;;, + 53;3; 2.000000, 6.750000, 0.000000;;, + 54;3; 2.000000, 6.750000, 0.000000;;, + 55;3; 2.000000, 6.750000,-0.000000;;, + 56;3; 2.000000, 6.750000, 0.000000;;, + 57;3; 2.000000, 6.750001,-0.000000;;, + 58;3; 2.000000, 6.750000, 0.000000;;, + 59;3; 2.000000, 6.750000, 0.000000;;, + 60;3; 2.000000, 6.750000, 0.000000;;, + 61;3; 2.000000, 6.750000, 0.000000;;, + 62;3; 2.000000, 6.750000, 0.000000;;, + 63;3; 2.000000, 6.750000,-0.000000;;, + 64;3; 2.000000, 6.750000, 0.000000;;, + 65;3; 2.000000, 6.750000, 0.000000;;, + 66;3; 2.000000, 6.750000, 0.000000;;, + 67;3; 2.000000, 6.750000, 0.000000;;, + 68;3; 2.000000, 6.750000, 0.000000;;, + 69;3; 2.000000, 6.750000,-0.000000;;, + 70;3; 2.000000, 6.750000,-0.000000;;, + 71;3; 2.000000, 6.750000,-0.000000;;, + 72;3; 2.000000, 6.750000,-0.000000;;, + 73;3; 2.000000, 6.749999, 0.000000;;, + 74;3; 2.000000, 6.750000, 0.000000;;, + 75;3; 2.000000, 6.750000, 0.000000;;, + 76;3; 2.000000, 6.750000,-0.000000;;, + 77;3; 2.000000, 6.750000, 0.000000;;, + 78;3; 2.000000, 6.750000,-0.000000;;, + 79;3; 2.000000, 6.750000, 0.000000;;, + 80;3; 2.000000, 6.750000, 0.000000;;, + 81;3; 2.000000, 6.750000,-0.000000;;, + 82;3; 2.000000, 6.750000, 0.000000;;, + 83;3; 2.000000, 6.750000,-0.000000;;, + 84;3; 2.000000, 6.750000, 0.000000;;, + 85;3; 2.000000, 6.750000,-0.000000;;, + 86;3; 2.000000, 6.750000, 0.000000;;, + 87;3; 2.000000, 6.750000,-0.000000;;, + 88;3; 2.000000, 6.750000, 0.000000;;, + 89;3; 2.000000, 6.750000,-0.000000;;, + 90;3; 2.000000, 6.750000,-0.000000;;, + 91;3; 2.000000, 6.750000, 0.000000;;, + 92;3; 2.000000, 6.750000,-0.000000;;, + 93;3; 2.000000, 6.750000,-0.000000;;, + 94;3; 2.000000, 6.750000,-0.000000;;, + 95;3; 2.000000, 6.750000, 0.000000;;, + 96;3; 2.000000, 6.750000,-0.000000;;, + 97;3; 2.000000, 6.750000, 0.000000;;, + 98;3; 2.000000, 6.750000, 0.000000;;, + 99;3; 2.000000, 6.750000,-0.000000;;, + 100;3; 2.000000, 6.750000, 0.000000;;, + 101;3; 2.000000, 6.750000, 0.000000;;, + 102;3; 2.000000, 6.750000,-0.000000;;, + 103;3; 2.000000, 6.750000, 0.000000;;, + 104;3; 2.000000, 6.750000, 0.000000;;, + 105;3; 2.000000, 6.750000, 0.000000;;, + 106;3; 2.000000, 6.750000, 0.000000;;, + 107;3; 2.000000, 6.750000,-0.000000;;, + 108;3; 2.000000, 6.750000, 0.000000;;, + 109;3; 2.000000, 6.750000, 0.000000;;, + 110;3; 2.000000, 6.750000,-0.000000;;, + 111;3; 2.000000, 6.750000,-0.000000;;, + 112;3; 2.000000, 6.750000,-0.000000;;, + 113;3; 2.000000, 6.750000,-0.000000;;, + 114;3; 2.000000, 6.750000, 0.000000;;, + 115;3; 2.000000, 6.750000, 0.000000;;, + 116;3; 2.000000, 6.750000, 0.000000;;, + 117;3; 2.000000, 6.750000,-0.000000;;, + 118;3; 2.000000, 6.750000,-0.000000;;, + 119;3; 2.000000, 6.750000,-0.000000;;, + 120;3; 2.000000, 6.750000, 0.000000;;, + 121;3; 2.000000, 6.750000,-0.000000;;, + 122;3; 2.000000, 6.750000,-0.000000;;, + 123;3; 2.000000, 6.750000,-0.000000;;, + 124;3; 2.000000, 6.750000, 0.000000;;, + 125;3; 2.000000, 6.750000,-0.000000;;, + 126;3; 2.000000, 6.750000, 0.000000;;, + 127;3; 2.000000, 6.750000,-0.000000;;, + 128;3; 2.000000, 6.750000, 0.000000;;, + 129;3; 2.000000, 6.750000,-0.000000;;, + 130;3; 2.000000, 6.750000,-0.000000;;, + 131;3; 2.000000, 6.750000,-0.000000;;, + 132;3; 2.000000, 6.750000,-0.000000;;, + 133;3; 2.000000, 6.750000, 0.000000;;, + 134;3; 2.000000, 6.750000,-0.000000;;, + 135;3; 2.000000, 6.750000, 0.000000;;, + 136;3; 2.000000, 6.750000, 0.000000;;, + 137;3; 2.000000, 6.750000, 0.000000;;, + 138;3; 2.000000, 6.750000, 0.000000;;, + 139;3; 2.000000, 6.750000,-0.000000;;, + 140;3; 2.000000, 6.750000,-0.000000;;, + 141;3; 2.000000, 6.750000, 0.000000;;, + 142;3; 2.000000, 6.750000, 0.000000;;, + 143;3; 2.000000, 6.750000,-0.000000;;, + 144;3; 2.000000, 6.750000, 0.000000;;, + 145;3; 2.000000, 6.750000, 0.000000;;, + 146;3; 2.000000, 6.750000, 0.000000;;, + 147;3; 2.000000, 6.750000,-0.000000;;, + 148;3; 2.000000, 6.750000, 0.000000;;, + 149;3; 2.000000, 6.750000, 0.000000;;, + 150;3; 2.000000, 6.750000,-0.000000;;, + 151;3; 2.000000, 6.750000,-0.000000;;, + 152;3; 2.000000, 6.750000,-0.000000;;, + 153;3; 2.000000, 6.750000,-0.000000;;, + 154;3; 2.000000, 6.750000,-0.000000;;, + 155;3; 2.000000, 6.750000,-0.000000;;, + 156;3; 2.000000, 6.750000,-0.000000;;, + 157;3; 2.000000, 6.750000, 0.000000;;, + 158;3; 2.000000, 6.750000, 0.000000;;, + 159;3; 2.000000, 6.750000,-0.000000;;, + 160;3; 2.000000, 6.750000, 0.000000;;, + 161;3; 2.000000, 6.750000,-0.000000;;, + 162;3; 2.000000, 6.750000, 0.000000;;, + 163;3; 2.000000, 6.750000, 0.000000;;, + 164;3; 2.000000, 6.750000, 0.000000;;, + 165;3; 2.000000, 6.750000, 0.000000;;, + 166;3; 2.000000, 6.750000, 0.000000;;, + 167;3; 2.000000, 6.750000, 0.000000;;, + 168;3; 2.000000, 6.750000, 0.000000;;, + 169;3; 2.000000, 6.750000, 0.000000;;, + 170;3; 2.000000, 6.750000, 0.000000;;, + 171;3; 2.000000, 6.750000, 0.000000;;, + 172;3; 2.000000, 6.750000, 0.000000;;, + 173;3; 2.000000, 6.750000, 0.000000;;, + 174;3; 2.000000, 6.750000, 0.000000;;, + 175;3; 2.000000, 6.750000, 0.000000;;, + 176;3; 2.000000, 6.750000, 0.000000;;, + 177;3; 2.000000, 6.750000, 0.000000;;, + 178;3; 2.000000, 6.750000, 0.000000;;, + 179;3; 2.000000, 6.750000, 0.000000;;, + 180;3; 2.000000, 6.750000, 0.000000;;, + 181;3; 2.000000, 6.750000, 0.000000;;, + 182;3; 2.000000, 6.750000, 0.000000;;, + 183;3; 2.000000, 6.750000, 0.000000;;, + 184;3; 2.000000, 6.750000, 0.000000;;, + 185;3; 2.000000, 6.750000, 0.000000;;, + 186;3; 2.000000, 6.750000, 0.000000;;, + 187;3; 2.000000, 6.750000, 0.000000;;, + 188;3; 2.000000, 6.750000, 0.000000;;; + } + } + Animation { + {Armature_Leg_Right} + AnimationKey { // Rotation + 0; + 189; + 0;4; 0.000000, 1.000000,-0.000000,-0.000000;;, + 1;4;-0.000240, 0.999995,-0.000000,-0.000000;;, + 2;4;-0.000967, 0.999979,-0.000000,-0.000000;;, + 3;4;-0.002182, 0.999952,-0.000000,-0.000000;;, + 4;4;-0.003877, 0.999915,-0.000000,-0.000000;;, + 5;4;-0.006032, 0.999868,-0.000000,-0.000000;;, + 6;4;-0.008609, 0.999812,-0.000000,-0.000000;;, + 7;4;-0.011555, 0.999748,-0.000000,-0.000000;;, + 8;4;-0.014798, 0.999677,-0.000000,-0.000000;;, + 9;4;-0.018250, 0.999602,-0.000000,-0.000000;;, + 10;4;-0.021810, 0.999524,-0.000000,-0.000000;;, + 11;4;-0.025369, 0.999446,-0.000000,-0.000000;;, + 12;4;-0.028821, 0.999371,-0.000000,-0.000000;;, + 13;4;-0.032064, 0.999300,-0.000000,-0.000000;;, + 14;4;-0.035010, 0.999236,-0.000000,-0.000000;;, + 15;4;-0.037587, 0.999180,-0.000000,-0.000000;;, + 16;4;-0.039742, 0.999133,-0.000000,-0.000000;;, + 17;4;-0.041437, 0.999096,-0.000000,-0.000000;;, + 18;4;-0.042652, 0.999069,-0.000000,-0.000000;;, + 19;4;-0.043379, 0.999053,-0.000000,-0.000000;;, + 20;4;-0.043619, 0.999048,-0.000000,-0.000000;;, + 21;4;-0.043379, 0.999053,-0.000000,-0.000000;;, + 22;4;-0.042652, 0.999069,-0.000000,-0.000000;;, + 23;4;-0.041437, 0.999096,-0.000000,-0.000000;;, + 24;4;-0.039742, 0.999133,-0.000000,-0.000000;;, + 25;4;-0.037587, 0.999180,-0.000000,-0.000000;;, + 26;4;-0.035010, 0.999236,-0.000000,-0.000000;;, + 27;4;-0.032064, 0.999300,-0.000000,-0.000000;;, + 28;4;-0.028821, 0.999371,-0.000000,-0.000000;;, + 29;4;-0.025369, 0.999446,-0.000000,-0.000000;;, + 30;4;-0.021810, 0.999524,-0.000000,-0.000000;;, + 31;4;-0.018250, 0.999602,-0.000000,-0.000000;;, + 32;4;-0.014798, 0.999677,-0.000000,-0.000000;;, + 33;4;-0.011555, 0.999748,-0.000000,-0.000000;;, + 34;4;-0.008609, 0.999812,-0.000000,-0.000000;;, + 35;4;-0.006032, 0.999868,-0.000000,-0.000000;;, + 36;4;-0.003877, 0.999915,-0.000000,-0.000000;;, + 37;4;-0.002182, 0.999952,-0.000000,-0.000000;;, + 38;4;-0.000967, 0.999979,-0.000000,-0.000000;;, + 39;4;-0.000240, 0.999995,-0.000000,-0.000000;;, + 40;4; 0.000000, 1.000000,-0.000000,-0.000000;;, + 41;4;-0.000240, 0.999995,-0.000000,-0.000000;;, + 42;4;-0.000967, 0.999979,-0.000000,-0.000000;;, + 43;4;-0.002182, 0.999952,-0.000000,-0.000000;;, + 44;4;-0.003877, 0.999915,-0.000000,-0.000000;;, + 45;4;-0.006032, 0.999868,-0.000000,-0.000000;;, + 46;4;-0.008609, 0.999812,-0.000000,-0.000000;;, + 47;4;-0.011555, 0.999748,-0.000000,-0.000000;;, + 48;4;-0.014798, 0.999677,-0.000000,-0.000000;;, + 49;4;-0.018250, 0.999602,-0.000000,-0.000000;;, + 50;4;-0.021810, 0.999524,-0.000000,-0.000000;;, + 51;4;-0.025369, 0.999446,-0.000000,-0.000000;;, + 52;4;-0.028821, 0.999371,-0.000000,-0.000000;;, + 53;4;-0.032064, 0.999300,-0.000000,-0.000000;;, + 54;4;-0.035010, 0.999236,-0.000000,-0.000000;;, + 55;4;-0.037587, 0.999180,-0.000000,-0.000000;;, + 56;4;-0.039742, 0.999133,-0.000000,-0.000000;;, + 57;4;-0.041437, 0.999096,-0.000000,-0.000000;;, + 58;4;-0.042652, 0.999069,-0.000000,-0.000000;;, + 59;4;-0.043379, 0.999053,-0.000000,-0.000000;;, + 60;4;-0.043619, 0.999048,-0.000000,-0.000000;;, + 61;4;-0.043616, 0.999053,-0.000000,-0.000000;;, + 62;4;-0.043594, 0.999067,-0.000000,-0.000000;;, + 63;4;-0.043536, 0.999089,-0.000000,-0.000000;;, + 64;4;-0.043427, 0.999117,-0.000000,-0.000000;;, + 65;4;-0.043249, 0.999151,-0.000000,-0.000000;;, + 66;4;-0.042989, 0.999191,-0.000000,-0.000000;;, + 67;4;-0.042626, 0.999235,-0.000000,-0.000000;;, + 68;4;-0.042144, 0.999283,-0.000000,-0.000000;;, + 69;4;-0.041519, 0.999336,-0.000000,-0.000000;;, + 70;4;-0.040725, 0.999391,-0.000000,-0.000000;;, + 71;4;-0.039732, 0.999450,-0.000000,-0.000000;;, + 72;4;-0.038501, 0.999511,-0.000000,-0.000000;;, + 73;4;-0.036980, 0.999575,-0.000000,-0.000000;;, + 74;4;-0.035101, 0.999640,-0.000000,-0.000000;;, + 75;4;-0.032769, 0.999707,-0.000000,-0.000000;;, + 76;4;-0.029842, 0.999774,-0.000000,-0.000000;;, + 77;4;-0.026086, 0.999841,-0.000000,-0.000000;;, + 78;4;-0.021070, 0.999906,-0.000000,-0.000000;;, + 79;4;-0.013794, 0.999964,-0.000000,-0.000000;;, + 80;4; 0.000000, 1.000000,-0.000000,-0.000000;;, + 81;4; 0.707107, 0.707107, 0.000000,-0.000000;;, + 82;4; 0.705874, 0.708245, 0.000000,-0.000000;;, + 83;4; 0.703907, 0.710101, 0.000000,-0.000000;;, + 84;4; 0.701752, 0.712152, 0.000000,-0.000000;;, + 85;4; 0.699534, 0.714271, 0.000000,-0.000000;;, + 86;4; 0.697308, 0.716402, 0.000000,-0.000000;;, + 87;4; 0.695107, 0.718513, 0.000000,-0.000000;;, + 88;4; 0.692952, 0.720584, 0.000000,-0.000000;;, + 89;4; 0.690857, 0.722597, 0.000000,-0.000000;;, + 90;4; 0.688837, 0.724539, 0.000000,-0.000000;;, + 91;4; 0.686904, 0.726399, 0.000000,-0.000000;;, + 92;4; 0.685070, 0.728163, 0.000000,-0.000000;;, + 93;4; 0.683348, 0.729820, 0.000000,-0.000000;;, + 94;4; 0.681750, 0.731358, 0.000000,-0.000000;;, + 95;4; 0.680291, 0.732761, 0.000000,-0.000000;;, + 96;4; 0.678987, 0.734015, 0.000000,-0.000000;;, + 97;4; 0.677857, 0.735101, 0.000000,-0.000000;;, + 98;4; 0.676923, 0.735998, 0.000000,-0.000000;;, + 99;4; 0.676211, 0.736682, 0.000000,-0.000000;;, + 100;4; 0.675754, 0.737121, 0.000000,-0.000000;;, + 101;4; 0.675590, 0.737277, 0.000000,-0.000000;;, + 102;4; 0.675764, 0.737111, 0.000000,-0.000000;;, + 103;4; 0.676289, 0.736609, 0.000000,-0.000000;;, + 104;4; 0.677167, 0.735768, 0.000000,-0.000000;;, + 105;4; 0.678392, 0.734595, 0.000000,-0.000000;;, + 106;4; 0.679949, 0.733105, 0.000000,-0.000000;;, + 107;4; 0.681811, 0.731323, 0.000000,-0.000000;;, + 108;4; 0.683940, 0.729285, 0.000000,-0.000000;;, + 109;4; 0.686283, 0.727042, 0.000000,-0.000000;;, + 110;4; 0.688777, 0.724654, 0.000000,-0.000000;;, + 111;4; 0.691349, 0.722192, 0.000000,-0.000000;;, + 112;4; 0.693920, 0.719730, 0.000000,-0.000000;;, + 113;4; 0.696415, 0.717342, 0.000000,-0.000000;;, + 114;4; 0.698758, 0.715099, 0.000000,-0.000000;;, + 115;4; 0.700886, 0.713062, 0.000000,-0.000000;;, + 116;4; 0.702749, 0.711279, 0.000000,-0.000000;;, + 117;4; 0.704305, 0.709789, 0.000000,-0.000000;;, + 118;4; 0.705530, 0.708616, 0.000000,-0.000000;;, + 119;4; 0.706408, 0.707776, 0.000000,-0.000000;;, + 120;4; 0.706933, 0.707273, 0.000000,-0.000000;;, + 121;4; 0.707107, 0.707107, 0.000000,-0.000000;;, + 122;4; 0.706933, 0.707273, 0.000000,-0.000000;;, + 123;4; 0.706408, 0.707776, 0.000000,-0.000000;;, + 124;4; 0.705530, 0.708616, 0.000000,-0.000000;;, + 125;4; 0.704305, 0.709789, 0.000000,-0.000000;;, + 126;4; 0.702749, 0.711279, 0.000000,-0.000000;;, + 127;4; 0.700886, 0.713062, 0.000000,-0.000000;;, + 128;4; 0.698758, 0.715099, 0.000000,-0.000000;;, + 129;4; 0.696415, 0.717342, 0.000000,-0.000000;;, + 130;4; 0.693920, 0.719730, 0.000000,-0.000000;;, + 131;4; 0.691349, 0.722192, 0.000000,-0.000000;;, + 132;4; 0.688777, 0.724654, 0.000000,-0.000000;;, + 133;4; 0.686283, 0.727042, 0.000000,-0.000000;;, + 134;4; 0.683940, 0.729285, 0.000000,-0.000000;;, + 135;4; 0.681811, 0.731323, 0.000000,-0.000000;;, + 136;4; 0.679949, 0.733105, 0.000000,-0.000000;;, + 137;4; 0.678392, 0.734596, 0.000000,-0.000000;;, + 138;4; 0.677167, 0.735768, 0.000000,-0.000000;;, + 139;4; 0.676289, 0.736609, 0.000000,-0.000000;;, + 140;4; 0.675764, 0.737111, 0.000000,-0.000000;;, + 141;4; 0.675590, 0.737277, 0.000000,-0.000000;;, + 142;4; 0.675754, 0.737121, 0.000000,-0.000000;;, + 143;4; 0.676211, 0.736682, 0.000000,-0.000000;;, + 144;4; 0.676923, 0.735998, 0.000000,-0.000000;;, + 145;4; 0.677857, 0.735101, 0.000000,-0.000000;;, + 146;4; 0.678987, 0.734015, 0.000000,-0.000000;;, + 147;4; 0.680291, 0.732761, 0.000000,-0.000000;;, + 148;4; 0.681750, 0.731357, 0.000000,-0.000000;;, + 149;4; 0.683348, 0.729820, 0.000000,-0.000000;;, + 150;4; 0.685070, 0.728162, 0.000000,-0.000000;;, + 151;4; 0.686904, 0.726398, 0.000000,-0.000000;;, + 152;4; 0.688837, 0.724539, 0.000000,-0.000000;;, + 153;4; 0.690857, 0.722596, 0.000000,-0.000000;;, + 154;4; 0.692952, 0.720583, 0.000000,-0.000000;;, + 155;4; 0.695107, 0.718512, 0.000000,-0.000000;;, + 156;4; 0.697308, 0.716401, 0.000000,-0.000000;;, + 157;4; 0.699534, 0.714270, 0.000000,-0.000000;;, + 158;4; 0.701752, 0.712151, 0.000000,-0.000000;;, + 159;4; 0.703907, 0.710100, 0.000000,-0.000000;;, + 160;4; 0.705874, 0.708244, 0.000000,-0.000000;;, + 161;4; 0.707107, 0.707107, 0.000000,-0.000000;;, + 162;4; 0.000000, 0.991445, 0.130526,-0.000000;;, + 163;4; 0.000000, 0.991445, 0.130526,-0.000000;;, + 164;4; 0.000000, 0.991445, 0.130526,-0.000000;;, + 165;4; 0.000000, 0.991445, 0.130526,-0.000000;;, + 166;4; 0.000000, 0.991445, 0.130526,-0.000000;;, + 167;4; 0.000000, 0.991445, 0.130526,-0.000000;;, + 168;4; 0.000000, 1.000000,-0.000000,-0.000000;;, + 169;4; 0.034052, 0.993234, 0.000000,-0.000000;;, + 170;4; 0.129904, 0.974175, 0.000000,-0.000000;;, + 171;4; 0.252901, 0.949704, 0.000000,-0.000000;;, + 172;4; 0.348675, 0.930646, 0.000000,-0.000000;;, + 173;4; 0.382684, 0.923880, 0.000000,-0.000000;;, + 174;4; 0.361005, 0.930646, 0.000000,-0.000000;;, + 175;4; 0.294618, 0.949704, 0.000000,-0.000000;;, + 176;4; 0.194899, 0.974175, 0.000000,-0.000000;;, + 177;4; 0.088939, 0.993234, 0.000000,-0.000000;;, + 178;4; 0.000000, 1.000000,-0.000000,-0.000000;;, + 179;4;-0.088939, 0.993234,-0.000000,-0.000000;;, + 180;4;-0.194899, 0.974175,-0.000000,-0.000000;;, + 181;4;-0.294618, 0.949704,-0.000000,-0.000000;;, + 182;4;-0.361005, 0.930646,-0.000000,-0.000000;;, + 183;4;-0.382683, 0.923880,-0.000000,-0.000000;;, + 184;4;-0.348675, 0.930646,-0.000000,-0.000000;;, + 185;4;-0.252901, 0.949704,-0.000000,-0.000000;;, + 186;4;-0.129903, 0.974175,-0.000000,-0.000000;;, + 187;4;-0.034052, 0.993234,-0.000000,-0.000000;;, + 188;4; 0.000000, 1.000000,-0.000000,-0.000000;;; + } + AnimationKey { // Scale + 1; + 189; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 0.999999;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 0.999999;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 0.999999;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 189; + 0;3; 1.000000, 0.000000,-0.000001;;, + 1;3; 1.000000,-0.000000,-0.000001;;, + 2;3; 1.000000,-0.000000,-0.000001;;, + 3;3; 1.000000,-0.000000,-0.000001;;, + 4;3; 1.000000,-0.000000,-0.000001;;, + 5;3; 1.000000,-0.000000,-0.000001;;, + 6;3; 1.000000,-0.000000,-0.000001;;, + 7;3; 1.000000,-0.000000,-0.000001;;, + 8;3; 1.000000,-0.000000,-0.000001;;, + 9;3; 1.000000,-0.000000,-0.000001;;, + 10;3; 1.000000,-0.000000,-0.000000;;, + 11;3; 1.000000,-0.000000,-0.000000;;, + 12;3; 1.000000,-0.000000,-0.000000;;, + 13;3; 1.000000,-0.000000,-0.000000;;, + 14;3; 1.000000,-0.000000,-0.000000;;, + 15;3; 1.000000,-0.000000,-0.000001;;, + 16;3; 1.000000,-0.000000,-0.000001;;, + 17;3; 1.000000,-0.000000,-0.000001;;, + 18;3; 1.000000,-0.000000,-0.000001;;, + 19;3; 1.000000,-0.000000,-0.000001;;, + 20;3; 1.000000,-0.000000,-0.000001;;, + 21;3; 1.000000,-0.000000,-0.000001;;, + 22;3; 1.000000,-0.000000,-0.000000;;, + 23;3; 1.000000,-0.000000,-0.000001;;, + 24;3; 1.000000,-0.000000,-0.000001;;, + 25;3; 1.000000,-0.000000,-0.000001;;, + 26;3; 1.000000,-0.000000,-0.000000;;, + 27;3; 1.000000,-0.000000,-0.000000;;, + 28;3; 1.000000,-0.000000,-0.000000;;, + 29;3; 1.000000,-0.000000,-0.000000;;, + 30;3; 1.000000,-0.000000,-0.000000;;, + 31;3; 1.000000,-0.000000,-0.000001;;, + 32;3; 1.000000,-0.000000,-0.000001;;, + 33;3; 1.000000,-0.000000,-0.000001;;, + 34;3; 1.000000,-0.000000,-0.000001;;, + 35;3; 1.000000,-0.000000,-0.000001;;, + 36;3; 1.000000,-0.000000,-0.000001;;, + 37;3; 1.000000,-0.000000,-0.000001;;, + 38;3; 1.000000,-0.000000,-0.000001;;, + 39;3; 1.000000,-0.000000,-0.000001;;, + 40;3; 1.000000, 0.000000,-0.000001;;, + 41;3; 1.000000,-0.000000,-0.000001;;, + 42;3; 1.000000,-0.000000,-0.000001;;, + 43;3; 1.000000,-0.000000,-0.000001;;, + 44;3; 1.000000,-0.000000,-0.000001;;, + 45;3; 1.000000,-0.000000,-0.000001;;, + 46;3; 1.000000,-0.000000,-0.000001;;, + 47;3; 1.000000,-0.000000,-0.000001;;, + 48;3; 1.000000,-0.000000,-0.000001;;, + 49;3; 1.000000,-0.000000,-0.000001;;, + 50;3; 1.000000,-0.000000,-0.000000;;, + 51;3; 1.000000,-0.000000,-0.000000;;, + 52;3; 1.000000,-0.000000,-0.000000;;, + 53;3; 1.000000,-0.000000,-0.000000;;, + 54;3; 1.000000,-0.000000,-0.000000;;, + 55;3; 1.000000,-0.000000,-0.000001;;, + 56;3; 1.000000,-0.000000,-0.000001;;, + 57;3; 1.000000,-0.000000,-0.000001;;, + 58;3; 1.000000,-0.000000,-0.000001;;, + 59;3; 1.000000,-0.000000,-0.000001;;, + 60;3; 1.000000,-0.000000,-0.000001;;, + 61;3; 1.000000,-0.000000,-0.000001;;, + 62;3; 1.000000,-0.000000,-0.000001;;, + 63;3; 1.000000,-0.000000,-0.000001;;, + 64;3; 1.000000,-0.000000,-0.000001;;, + 65;3; 1.000000,-0.000000,-0.000001;;, + 66;3; 1.000000,-0.000000,-0.000001;;, + 67;3; 1.000000,-0.000000,-0.000000;;, + 68;3; 1.000000,-0.000000,-0.000000;;, + 69;3; 1.000000,-0.000000,-0.000000;;, + 70;3; 1.000000,-0.000000,-0.000000;;, + 71;3; 1.000000,-0.000000,-0.000000;;, + 72;3; 1.000000,-0.000000,-0.000000;;, + 73;3; 1.000000,-0.000000,-0.000000;;, + 74;3; 1.000000,-0.000000,-0.000001;;, + 75;3; 1.000000,-0.000000,-0.000001;;, + 76;3; 1.000000,-0.000000,-0.000001;;, + 77;3; 1.000000,-0.000000,-0.000001;;, + 78;3; 1.000000,-0.000000,-0.000001;;, + 79;3; 1.000000,-0.000000,-0.000001;;, + 80;3; 1.000000, 0.000000,-0.000001;;, + 81;3; 1.000000, 0.000000,-0.000001;;, + 82;3; 1.000000,-0.000000,-0.000001;;, + 83;3; 1.000000,-0.000000,-0.000001;;, + 84;3; 1.000000,-0.000000,-0.000001;;, + 85;3; 1.000000,-0.000000,-0.000001;;, + 86;3; 1.000000,-0.000000,-0.000001;;, + 87;3; 1.000000,-0.000000,-0.000001;;, + 88;3; 1.000000,-0.000000,-0.000001;;, + 89;3; 1.000000,-0.000000,-0.000001;;, + 90;3; 1.000000,-0.000000,-0.000001;;, + 91;3; 1.000000,-0.000000,-0.000001;;, + 92;3; 1.000000,-0.000000,-0.000001;;, + 93;3; 1.000000,-0.000000,-0.000001;;, + 94;3; 1.000000,-0.000000,-0.000001;;, + 95;3; 1.000000,-0.000000,-0.000001;;, + 96;3; 1.000000,-0.000000,-0.000001;;, + 97;3; 1.000000,-0.000000,-0.000001;;, + 98;3; 1.000000,-0.000000,-0.000001;;, + 99;3; 1.000000,-0.000000,-0.000001;;, + 100;3; 1.000000,-0.000000,-0.000001;;, + 101;3; 1.000000,-0.000000,-0.000001;;, + 102;3; 1.000000,-0.000000,-0.000001;;, + 103;3; 1.000000,-0.000000,-0.000001;;, + 104;3; 1.000000,-0.000000,-0.000001;;, + 105;3; 1.000000,-0.000000,-0.000001;;, + 106;3; 1.000000,-0.000000,-0.000001;;, + 107;3; 1.000000,-0.000000,-0.000001;;, + 108;3; 1.000000,-0.000000,-0.000001;;, + 109;3; 1.000000,-0.000000,-0.000001;;, + 110;3; 1.000000,-0.000000,-0.000001;;, + 111;3; 1.000000,-0.000000,-0.000001;;, + 112;3; 1.000000,-0.000000,-0.000001;;, + 113;3; 1.000000,-0.000000,-0.000001;;, + 114;3; 1.000000,-0.000000,-0.000001;;, + 115;3; 1.000000,-0.000000,-0.000001;;, + 116;3; 1.000000,-0.000000,-0.000001;;, + 117;3; 1.000000,-0.000000,-0.000001;;, + 118;3; 1.000000,-0.000000,-0.000001;;, + 119;3; 1.000000,-0.000000,-0.000001;;, + 120;3; 1.000000,-0.000000,-0.000001;;, + 121;3; 1.000000, 0.000000,-0.000001;;, + 122;3; 1.000000,-0.000000,-0.000001;;, + 123;3; 1.000000,-0.000000,-0.000001;;, + 124;3; 1.000000,-0.000000,-0.000001;;, + 125;3; 1.000000,-0.000000,-0.000001;;, + 126;3; 1.000000,-0.000000,-0.000001;;, + 127;3; 1.000000,-0.000000,-0.000001;;, + 128;3; 1.000000,-0.000000,-0.000001;;, + 129;3; 1.000000,-0.000000,-0.000001;;, + 130;3; 1.000000,-0.000000,-0.000001;;, + 131;3; 1.000000,-0.000000,-0.000001;;, + 132;3; 1.000000,-0.000000,-0.000001;;, + 133;3; 1.000000,-0.000000,-0.000001;;, + 134;3; 1.000000,-0.000000,-0.000001;;, + 135;3; 1.000000,-0.000000,-0.000001;;, + 136;3; 1.000000,-0.000000,-0.000001;;, + 137;3; 1.000000,-0.000000,-0.000001;;, + 138;3; 1.000000,-0.000000,-0.000001;;, + 139;3; 1.000000,-0.000000,-0.000001;;, + 140;3; 1.000000,-0.000000,-0.000001;;, + 141;3; 1.000000,-0.000000,-0.000001;;, + 142;3; 1.000000,-0.000000,-0.000001;;, + 143;3; 1.000000,-0.000000,-0.000001;;, + 144;3; 1.000000,-0.000000,-0.000001;;, + 145;3; 1.000000,-0.000000,-0.000001;;, + 146;3; 1.000000,-0.000000,-0.000001;;, + 147;3; 1.000000,-0.000000,-0.000001;;, + 148;3; 1.000000,-0.000000,-0.000001;;, + 149;3; 1.000000,-0.000000,-0.000001;;, + 150;3; 1.000000,-0.000000,-0.000001;;, + 151;3; 1.000000,-0.000000,-0.000001;;, + 152;3; 1.000000,-0.000000,-0.000001;;, + 153;3; 1.000000,-0.000000,-0.000001;;, + 154;3; 1.000000,-0.000000,-0.000001;;, + 155;3; 1.000000,-0.000000,-0.000001;;, + 156;3; 1.000000,-0.000000,-0.000001;;, + 157;3; 1.000000,-0.000000,-0.000001;;, + 158;3; 1.000000,-0.000000,-0.000001;;, + 159;3; 1.000000,-0.000000,-0.000001;;, + 160;3; 1.000000,-0.000000,-0.000001;;, + 161;3; 1.000000, 0.000000,-0.000001;;, + 162;3; 1.000000,-0.000000,-0.000000;;, + 163;3; 1.000000,-0.000000,-0.000000;;, + 164;3; 1.000000,-0.000000,-0.000000;;, + 165;3; 1.000000,-0.000000,-0.000000;;, + 166;3; 1.000000,-0.000000,-0.000000;;, + 167;3; 1.000000,-0.000000,-0.000000;;, + 168;3; 1.000000, 0.000000,-0.000001;;, + 169;3; 1.000000, 0.000000,-0.000001;;, + 170;3; 1.000000, 0.000000,-0.000001;;, + 171;3; 1.000000, 0.000000,-0.000001;;, + 172;3; 1.000000, 0.000000,-0.000001;;, + 173;3; 1.000000, 0.000000,-0.000001;;, + 174;3; 1.000000, 0.000000,-0.000001;;, + 175;3; 1.000000, 0.000000,-0.000001;;, + 176;3; 1.000000, 0.000000,-0.000001;;, + 177;3; 1.000000, 0.000000,-0.000001;;, + 178;3; 1.000000, 0.000000,-0.000001;;, + 179;3; 1.000000, 0.000000,-0.000001;;, + 180;3; 1.000000, 0.000000,-0.000001;;, + 181;3; 1.000000, 0.000000,-0.000001;;, + 182;3; 1.000000, 0.000000,-0.000001;;, + 183;3; 1.000000, 0.000000,-0.000001;;, + 184;3; 1.000000, 0.000000,-0.000001;;, + 185;3; 1.000000, 0.000000,-0.000001;;, + 186;3; 1.000000, 0.000000,-0.000001;;, + 187;3; 1.000000, 0.000000,-0.000001;;, + 188;3; 1.000000, 0.000000,-0.000001;;; + } + } + Animation { + {Armature_Leg_Left} + AnimationKey { // Rotation + 0; + 189; + 0;4; 0.000000, 1.000000,-0.000000,-0.000000;;, + 1;4;-0.000240, 0.999995,-0.000000,-0.000000;;, + 2;4;-0.000967, 0.999979,-0.000000,-0.000000;;, + 3;4;-0.002182, 0.999952,-0.000000,-0.000000;;, + 4;4;-0.003877, 0.999915,-0.000000,-0.000000;;, + 5;4;-0.006032, 0.999868,-0.000000,-0.000000;;, + 6;4;-0.008609, 0.999812,-0.000000,-0.000000;;, + 7;4;-0.011555, 0.999748,-0.000000,-0.000000;;, + 8;4;-0.014798, 0.999677,-0.000000,-0.000000;;, + 9;4;-0.018250, 0.999602,-0.000000,-0.000000;;, + 10;4;-0.021810, 0.999524,-0.000000,-0.000000;;, + 11;4;-0.025369, 0.999446,-0.000000,-0.000000;;, + 12;4;-0.028821, 0.999371,-0.000000,-0.000000;;, + 13;4;-0.032064, 0.999300,-0.000000,-0.000000;;, + 14;4;-0.035010, 0.999236,-0.000000,-0.000000;;, + 15;4;-0.037587, 0.999180,-0.000000,-0.000000;;, + 16;4;-0.039742, 0.999133,-0.000000,-0.000000;;, + 17;4;-0.041437, 0.999096,-0.000000,-0.000000;;, + 18;4;-0.042652, 0.999069,-0.000000,-0.000000;;, + 19;4;-0.043379, 0.999053,-0.000000,-0.000000;;, + 20;4;-0.043619, 0.999048,-0.000000,-0.000000;;, + 21;4;-0.043379, 0.999053,-0.000000,-0.000000;;, + 22;4;-0.042652, 0.999069,-0.000000,-0.000000;;, + 23;4;-0.041437, 0.999096,-0.000000,-0.000000;;, + 24;4;-0.039742, 0.999133,-0.000000,-0.000000;;, + 25;4;-0.037587, 0.999180,-0.000000,-0.000000;;, + 26;4;-0.035010, 0.999236,-0.000000,-0.000000;;, + 27;4;-0.032064, 0.999300,-0.000000,-0.000000;;, + 28;4;-0.028821, 0.999371,-0.000000,-0.000000;;, + 29;4;-0.025369, 0.999446,-0.000000,-0.000000;;, + 30;4;-0.021810, 0.999524,-0.000000,-0.000000;;, + 31;4;-0.018250, 0.999602,-0.000000,-0.000000;;, + 32;4;-0.014798, 0.999677,-0.000000,-0.000000;;, + 33;4;-0.011555, 0.999748,-0.000000,-0.000000;;, + 34;4;-0.008609, 0.999812,-0.000000,-0.000000;;, + 35;4;-0.006032, 0.999868,-0.000000,-0.000000;;, + 36;4;-0.003877, 0.999915,-0.000000,-0.000000;;, + 37;4;-0.002182, 0.999952,-0.000000,-0.000000;;, + 38;4;-0.000967, 0.999979,-0.000000,-0.000000;;, + 39;4;-0.000240, 0.999995,-0.000000,-0.000000;;, + 40;4; 0.000000, 1.000000,-0.000000,-0.000000;;, + 41;4;-0.000240, 0.999995,-0.000000,-0.000000;;, + 42;4;-0.000967, 0.999979,-0.000000,-0.000000;;, + 43;4;-0.002182, 0.999952,-0.000000,-0.000000;;, + 44;4;-0.003877, 0.999915,-0.000000,-0.000000;;, + 45;4;-0.006032, 0.999868,-0.000000,-0.000000;;, + 46;4;-0.008609, 0.999812,-0.000000,-0.000000;;, + 47;4;-0.011555, 0.999748,-0.000000,-0.000000;;, + 48;4;-0.014798, 0.999677,-0.000000,-0.000000;;, + 49;4;-0.018250, 0.999602,-0.000000,-0.000000;;, + 50;4;-0.021810, 0.999524,-0.000000,-0.000000;;, + 51;4;-0.025369, 0.999446,-0.000000,-0.000000;;, + 52;4;-0.028821, 0.999371,-0.000000,-0.000000;;, + 53;4;-0.032064, 0.999300,-0.000000,-0.000000;;, + 54;4;-0.035010, 0.999236,-0.000000,-0.000000;;, + 55;4;-0.037587, 0.999180,-0.000000,-0.000000;;, + 56;4;-0.039742, 0.999133,-0.000000,-0.000000;;, + 57;4;-0.041437, 0.999096,-0.000000,-0.000000;;, + 58;4;-0.042652, 0.999069,-0.000000,-0.000000;;, + 59;4;-0.043379, 0.999053,-0.000000,-0.000000;;, + 60;4;-0.043619, 0.999048,-0.000000,-0.000000;;, + 61;4;-0.043616, 0.999053,-0.000000,-0.000000;;, + 62;4;-0.043594, 0.999067,-0.000000,-0.000000;;, + 63;4;-0.043536, 0.999089,-0.000000,-0.000000;;, + 64;4;-0.043427, 0.999117,-0.000000,-0.000000;;, + 65;4;-0.043249, 0.999151,-0.000000,-0.000000;;, + 66;4;-0.042989, 0.999191,-0.000000,-0.000000;;, + 67;4;-0.042626, 0.999235,-0.000000,-0.000000;;, + 68;4;-0.042144, 0.999283,-0.000000,-0.000000;;, + 69;4;-0.041519, 0.999336,-0.000000,-0.000000;;, + 70;4;-0.040725, 0.999391,-0.000000,-0.000000;;, + 71;4;-0.039732, 0.999450,-0.000000,-0.000000;;, + 72;4;-0.038501, 0.999511,-0.000000,-0.000000;;, + 73;4;-0.036980, 0.999575,-0.000000,-0.000000;;, + 74;4;-0.035101, 0.999640,-0.000000,-0.000000;;, + 75;4;-0.032769, 0.999707,-0.000000,-0.000000;;, + 76;4;-0.029842, 0.999774,-0.000000,-0.000000;;, + 77;4;-0.026086, 0.999841,-0.000000,-0.000000;;, + 78;4;-0.021070, 0.999906,-0.000000,-0.000000;;, + 79;4;-0.013794, 0.999964,-0.000000,-0.000000;;, + 80;4; 0.000000, 1.000000,-0.000000,-0.000000;;, + 81;4; 0.707107, 0.707107, 0.000000,-0.000000;;, + 82;4; 0.705874, 0.708245, 0.000000,-0.000000;;, + 83;4; 0.703907, 0.710101, 0.000000,-0.000000;;, + 84;4; 0.701752, 0.712152, 0.000000,-0.000000;;, + 85;4; 0.699534, 0.714271, 0.000000,-0.000000;;, + 86;4; 0.697308, 0.716402, 0.000000,-0.000000;;, + 87;4; 0.695107, 0.718513, 0.000000,-0.000000;;, + 88;4; 0.692952, 0.720584, 0.000000,-0.000000;;, + 89;4; 0.690857, 0.722597, 0.000000,-0.000000;;, + 90;4; 0.688837, 0.724539, 0.000000,-0.000000;;, + 91;4; 0.686904, 0.726399, 0.000000,-0.000000;;, + 92;4; 0.685070, 0.728163, 0.000000,-0.000000;;, + 93;4; 0.683348, 0.729820, 0.000000,-0.000000;;, + 94;4; 0.681750, 0.731358, 0.000000,-0.000000;;, + 95;4; 0.680291, 0.732761, 0.000000,-0.000000;;, + 96;4; 0.678987, 0.734015, 0.000000,-0.000000;;, + 97;4; 0.677857, 0.735101, 0.000000,-0.000000;;, + 98;4; 0.676923, 0.735998, 0.000000,-0.000000;;, + 99;4; 0.676211, 0.736682, 0.000000,-0.000000;;, + 100;4; 0.675754, 0.737121, 0.000000,-0.000000;;, + 101;4; 0.675590, 0.737277, 0.000000,-0.000000;;, + 102;4; 0.675764, 0.737111, 0.000000,-0.000000;;, + 103;4; 0.676289, 0.736609, 0.000000,-0.000000;;, + 104;4; 0.677167, 0.735768, 0.000000,-0.000000;;, + 105;4; 0.678392, 0.734595, 0.000000,-0.000000;;, + 106;4; 0.679949, 0.733105, 0.000000,-0.000000;;, + 107;4; 0.681811, 0.731323, 0.000000,-0.000000;;, + 108;4; 0.683940, 0.729285, 0.000000,-0.000000;;, + 109;4; 0.686283, 0.727042, 0.000000,-0.000000;;, + 110;4; 0.688777, 0.724654, 0.000000,-0.000000;;, + 111;4; 0.691349, 0.722192, 0.000000,-0.000000;;, + 112;4; 0.693920, 0.719730, 0.000000,-0.000000;;, + 113;4; 0.696415, 0.717342, 0.000000,-0.000000;;, + 114;4; 0.698758, 0.715099, 0.000000,-0.000000;;, + 115;4; 0.700886, 0.713062, 0.000000,-0.000000;;, + 116;4; 0.702749, 0.711279, 0.000000,-0.000000;;, + 117;4; 0.704305, 0.709789, 0.000000,-0.000000;;, + 118;4; 0.705530, 0.708616, 0.000000,-0.000000;;, + 119;4; 0.706408, 0.707776, 0.000000,-0.000000;;, + 120;4; 0.706933, 0.707273, 0.000000,-0.000000;;, + 121;4; 0.707107, 0.707107, 0.000000,-0.000000;;, + 122;4; 0.706933, 0.707273, 0.000000,-0.000000;;, + 123;4; 0.706408, 0.707776, 0.000000,-0.000000;;, + 124;4; 0.705530, 0.708616, 0.000000,-0.000000;;, + 125;4; 0.704305, 0.709789, 0.000000,-0.000000;;, + 126;4; 0.702749, 0.711279, 0.000000,-0.000000;;, + 127;4; 0.700886, 0.713062, 0.000000,-0.000000;;, + 128;4; 0.698758, 0.715099, 0.000000,-0.000000;;, + 129;4; 0.696415, 0.717342, 0.000000,-0.000000;;, + 130;4; 0.693920, 0.719730, 0.000000,-0.000000;;, + 131;4; 0.691349, 0.722192, 0.000000,-0.000000;;, + 132;4; 0.688777, 0.724654, 0.000000,-0.000000;;, + 133;4; 0.686283, 0.727042, 0.000000,-0.000000;;, + 134;4; 0.683940, 0.729285, 0.000000,-0.000000;;, + 135;4; 0.681811, 0.731323, 0.000000,-0.000000;;, + 136;4; 0.679949, 0.733105, 0.000000,-0.000000;;, + 137;4; 0.678392, 0.734596, 0.000000,-0.000000;;, + 138;4; 0.677167, 0.735768, 0.000000,-0.000000;;, + 139;4; 0.676289, 0.736609, 0.000000,-0.000000;;, + 140;4; 0.675764, 0.737111, 0.000000,-0.000000;;, + 141;4; 0.675590, 0.737277, 0.000000,-0.000000;;, + 142;4; 0.675754, 0.737121, 0.000000,-0.000000;;, + 143;4; 0.676211, 0.736682, 0.000000,-0.000000;;, + 144;4; 0.676923, 0.735998, 0.000000,-0.000000;;, + 145;4; 0.677857, 0.735101, 0.000000,-0.000000;;, + 146;4; 0.678987, 0.734015, 0.000000,-0.000000;;, + 147;4; 0.680291, 0.732761, 0.000000,-0.000000;;, + 148;4; 0.681750, 0.731357, 0.000000,-0.000000;;, + 149;4; 0.683348, 0.729820, 0.000000,-0.000000;;, + 150;4; 0.685070, 0.728162, 0.000000,-0.000000;;, + 151;4; 0.686904, 0.726398, 0.000000,-0.000000;;, + 152;4; 0.688837, 0.724539, 0.000000,-0.000000;;, + 153;4; 0.690857, 0.722596, 0.000000,-0.000000;;, + 154;4; 0.692952, 0.720583, 0.000000,-0.000000;;, + 155;4; 0.695107, 0.718512, 0.000000,-0.000000;;, + 156;4; 0.697308, 0.716401, 0.000000,-0.000000;;, + 157;4; 0.699534, 0.714270, 0.000000,-0.000000;;, + 158;4; 0.701752, 0.712151, 0.000000,-0.000000;;, + 159;4; 0.703907, 0.710100, 0.000000,-0.000000;;, + 160;4; 0.705874, 0.708244, 0.000000,-0.000000;;, + 161;4; 0.707107, 0.707107, 0.000000,-0.000000;;, + 162;4; 0.000000, 0.991445,-0.130526,-0.000000;;, + 163;4; 0.000000, 0.991445,-0.130526,-0.000000;;, + 164;4; 0.000000, 0.991445,-0.130526,-0.000000;;, + 165;4; 0.000000, 0.991445,-0.130526,-0.000000;;, + 166;4; 0.000000, 0.991445,-0.130526,-0.000000;;, + 167;4; 0.000000, 0.991445,-0.130526,-0.000000;;, + 168;4; 0.000000, 1.000000,-0.000000,-0.000000;;, + 169;4;-0.034052, 0.993234,-0.000000,-0.000000;;, + 170;4;-0.129903, 0.974175,-0.000000,-0.000000;;, + 171;4;-0.252901, 0.949704,-0.000000,-0.000000;;, + 172;4;-0.348675, 0.930646,-0.000000,-0.000000;;, + 173;4;-0.382683, 0.923880,-0.000000,-0.000000;;, + 174;4;-0.361005, 0.930646,-0.000000,-0.000000;;, + 175;4;-0.294618, 0.949704,-0.000000,-0.000000;;, + 176;4;-0.194899, 0.974175,-0.000000,-0.000000;;, + 177;4;-0.088939, 0.993234,-0.000000,-0.000000;;, + 178;4; 0.000000, 1.000000,-0.000000,-0.000000;;, + 179;4; 0.088939, 0.993234, 0.000000,-0.000000;;, + 180;4; 0.194899, 0.974175, 0.000000,-0.000000;;, + 181;4; 0.294618, 0.949704, 0.000000,-0.000000;;, + 182;4; 0.361005, 0.930646, 0.000000,-0.000000;;, + 183;4; 0.382684, 0.923880, 0.000000,-0.000000;;, + 184;4; 0.348675, 0.930646, 0.000000,-0.000000;;, + 185;4; 0.252901, 0.949704, 0.000000,-0.000000;;, + 186;4; 0.129904, 0.974175, 0.000000,-0.000000;;, + 187;4; 0.034052, 0.993234, 0.000000,-0.000000;;, + 188;4; 0.000000, 1.000000,-0.000000,-0.000000;;; + } + AnimationKey { // Scale + 1; + 189; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 0.999999;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 0.999999;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 0.999999;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 189; + 0;3;-1.000000, 0.000000,-0.000001;;, + 1;3;-1.000000,-0.000000,-0.000001;;, + 2;3;-1.000000,-0.000000,-0.000001;;, + 3;3;-1.000000,-0.000000,-0.000001;;, + 4;3;-1.000000,-0.000000,-0.000001;;, + 5;3;-1.000000,-0.000000,-0.000001;;, + 6;3;-1.000000,-0.000000,-0.000001;;, + 7;3;-1.000000,-0.000000,-0.000001;;, + 8;3;-1.000000,-0.000000,-0.000001;;, + 9;3;-1.000000,-0.000000,-0.000001;;, + 10;3;-1.000000,-0.000000,-0.000000;;, + 11;3;-1.000000,-0.000000,-0.000000;;, + 12;3;-1.000000,-0.000000,-0.000000;;, + 13;3;-1.000000,-0.000000,-0.000000;;, + 14;3;-1.000000,-0.000000,-0.000000;;, + 15;3;-1.000000,-0.000000,-0.000001;;, + 16;3;-1.000000,-0.000000,-0.000001;;, + 17;3;-1.000000,-0.000000,-0.000001;;, + 18;3;-1.000000,-0.000000,-0.000001;;, + 19;3;-1.000000,-0.000000,-0.000001;;, + 20;3;-1.000000,-0.000000,-0.000001;;, + 21;3;-1.000000,-0.000000,-0.000001;;, + 22;3;-1.000000,-0.000000,-0.000000;;, + 23;3;-1.000000,-0.000000,-0.000001;;, + 24;3;-1.000000,-0.000000,-0.000001;;, + 25;3;-1.000000,-0.000000,-0.000001;;, + 26;3;-1.000000,-0.000000,-0.000000;;, + 27;3;-1.000000,-0.000000,-0.000000;;, + 28;3;-1.000000,-0.000000,-0.000000;;, + 29;3;-1.000000,-0.000000,-0.000000;;, + 30;3;-1.000000,-0.000000,-0.000000;;, + 31;3;-1.000000,-0.000000,-0.000001;;, + 32;3;-1.000000,-0.000000,-0.000001;;, + 33;3;-1.000000,-0.000000,-0.000001;;, + 34;3;-1.000000,-0.000000,-0.000001;;, + 35;3;-1.000000,-0.000000,-0.000001;;, + 36;3;-1.000000,-0.000000,-0.000001;;, + 37;3;-1.000000,-0.000000,-0.000001;;, + 38;3;-1.000000,-0.000000,-0.000001;;, + 39;3;-1.000000,-0.000000,-0.000001;;, + 40;3;-1.000000, 0.000000,-0.000001;;, + 41;3;-1.000000,-0.000000,-0.000001;;, + 42;3;-1.000000,-0.000000,-0.000001;;, + 43;3;-1.000000,-0.000000,-0.000001;;, + 44;3;-1.000000,-0.000000,-0.000001;;, + 45;3;-1.000000,-0.000000,-0.000001;;, + 46;3;-1.000000,-0.000000,-0.000001;;, + 47;3;-1.000000,-0.000000,-0.000001;;, + 48;3;-1.000000,-0.000000,-0.000001;;, + 49;3;-1.000000,-0.000000,-0.000001;;, + 50;3;-1.000000,-0.000000,-0.000000;;, + 51;3;-1.000000,-0.000000,-0.000000;;, + 52;3;-1.000000,-0.000000,-0.000000;;, + 53;3;-1.000000,-0.000000,-0.000000;;, + 54;3;-1.000000,-0.000000,-0.000000;;, + 55;3;-1.000000,-0.000000,-0.000001;;, + 56;3;-1.000000,-0.000000,-0.000001;;, + 57;3;-1.000000,-0.000000,-0.000001;;, + 58;3;-1.000000,-0.000000,-0.000001;;, + 59;3;-1.000000,-0.000000,-0.000001;;, + 60;3;-1.000000,-0.000000,-0.000001;;, + 61;3;-1.000000,-0.000000,-0.000001;;, + 62;3;-1.000000,-0.000000,-0.000001;;, + 63;3;-1.000000,-0.000000,-0.000001;;, + 64;3;-1.000000,-0.000000,-0.000001;;, + 65;3;-1.000000,-0.000000,-0.000001;;, + 66;3;-1.000000,-0.000000,-0.000001;;, + 67;3;-1.000000,-0.000000,-0.000000;;, + 68;3;-1.000000,-0.000000,-0.000000;;, + 69;3;-1.000000,-0.000000,-0.000000;;, + 70;3;-1.000000,-0.000000,-0.000000;;, + 71;3;-1.000000,-0.000000,-0.000000;;, + 72;3;-1.000000,-0.000000,-0.000000;;, + 73;3;-1.000000,-0.000000,-0.000000;;, + 74;3;-1.000000,-0.000000,-0.000001;;, + 75;3;-1.000000,-0.000000,-0.000001;;, + 76;3;-1.000000,-0.000000,-0.000001;;, + 77;3;-1.000000,-0.000000,-0.000001;;, + 78;3;-1.000000,-0.000000,-0.000001;;, + 79;3;-1.000000,-0.000000,-0.000001;;, + 80;3;-1.000000, 0.000000,-0.000001;;, + 81;3;-1.000000, 0.000000,-0.000001;;, + 82;3;-1.000000,-0.000000,-0.000001;;, + 83;3;-1.000000,-0.000000,-0.000001;;, + 84;3;-1.000000,-0.000000,-0.000001;;, + 85;3;-1.000000,-0.000000,-0.000001;;, + 86;3;-1.000000,-0.000000,-0.000001;;, + 87;3;-1.000000,-0.000000,-0.000001;;, + 88;3;-1.000000,-0.000000,-0.000001;;, + 89;3;-1.000000,-0.000000,-0.000001;;, + 90;3;-1.000000,-0.000000,-0.000001;;, + 91;3;-1.000000,-0.000000,-0.000001;;, + 92;3;-1.000000,-0.000000,-0.000001;;, + 93;3;-1.000000,-0.000000,-0.000001;;, + 94;3;-1.000000,-0.000000,-0.000001;;, + 95;3;-1.000000,-0.000000,-0.000001;;, + 96;3;-1.000000,-0.000000,-0.000001;;, + 97;3;-1.000000,-0.000000,-0.000001;;, + 98;3;-1.000000,-0.000000,-0.000001;;, + 99;3;-1.000000,-0.000000,-0.000001;;, + 100;3;-1.000000,-0.000000,-0.000001;;, + 101;3;-1.000000,-0.000000,-0.000001;;, + 102;3;-1.000000,-0.000000,-0.000001;;, + 103;3;-1.000000,-0.000000,-0.000001;;, + 104;3;-1.000000,-0.000000,-0.000001;;, + 105;3;-1.000000,-0.000000,-0.000001;;, + 106;3;-1.000000,-0.000000,-0.000001;;, + 107;3;-1.000000,-0.000000,-0.000001;;, + 108;3;-1.000000,-0.000000,-0.000001;;, + 109;3;-1.000000,-0.000000,-0.000001;;, + 110;3;-1.000000,-0.000000,-0.000001;;, + 111;3;-1.000000,-0.000000,-0.000001;;, + 112;3;-1.000000,-0.000000,-0.000001;;, + 113;3;-1.000000,-0.000000,-0.000001;;, + 114;3;-1.000000,-0.000000,-0.000001;;, + 115;3;-1.000000,-0.000000,-0.000001;;, + 116;3;-1.000000,-0.000000,-0.000001;;, + 117;3;-1.000000,-0.000000,-0.000001;;, + 118;3;-1.000000,-0.000000,-0.000001;;, + 119;3;-1.000000,-0.000000,-0.000001;;, + 120;3;-1.000000,-0.000000,-0.000001;;, + 121;3;-1.000000, 0.000000,-0.000001;;, + 122;3;-1.000000,-0.000000,-0.000001;;, + 123;3;-1.000000,-0.000000,-0.000001;;, + 124;3;-1.000000,-0.000000,-0.000001;;, + 125;3;-1.000000,-0.000000,-0.000001;;, + 126;3;-1.000000,-0.000000,-0.000001;;, + 127;3;-1.000000,-0.000000,-0.000001;;, + 128;3;-1.000000,-0.000000,-0.000001;;, + 129;3;-1.000000,-0.000000,-0.000001;;, + 130;3;-1.000000,-0.000000,-0.000001;;, + 131;3;-1.000000,-0.000000,-0.000001;;, + 132;3;-1.000000,-0.000000,-0.000001;;, + 133;3;-1.000000,-0.000000,-0.000001;;, + 134;3;-1.000000,-0.000000,-0.000001;;, + 135;3;-1.000000,-0.000000,-0.000001;;, + 136;3;-1.000000,-0.000000,-0.000001;;, + 137;3;-1.000000,-0.000000,-0.000001;;, + 138;3;-1.000000,-0.000000,-0.000001;;, + 139;3;-1.000000,-0.000000,-0.000001;;, + 140;3;-1.000000,-0.000000,-0.000001;;, + 141;3;-1.000000,-0.000000,-0.000001;;, + 142;3;-1.000000,-0.000000,-0.000001;;, + 143;3;-1.000000,-0.000000,-0.000001;;, + 144;3;-1.000000,-0.000000,-0.000001;;, + 145;3;-1.000000,-0.000000,-0.000001;;, + 146;3;-1.000000,-0.000000,-0.000001;;, + 147;3;-1.000000,-0.000000,-0.000001;;, + 148;3;-1.000000,-0.000000,-0.000001;;, + 149;3;-1.000000,-0.000000,-0.000001;;, + 150;3;-1.000000,-0.000000,-0.000001;;, + 151;3;-1.000000,-0.000000,-0.000001;;, + 152;3;-1.000000,-0.000000,-0.000001;;, + 153;3;-1.000000,-0.000000,-0.000001;;, + 154;3;-1.000000,-0.000000,-0.000001;;, + 155;3;-1.000000,-0.000000,-0.000001;;, + 156;3;-1.000000,-0.000000,-0.000001;;, + 157;3;-1.000000,-0.000000,-0.000001;;, + 158;3;-1.000000,-0.000000,-0.000001;;, + 159;3;-1.000000,-0.000000,-0.000001;;, + 160;3;-1.000000,-0.000000,-0.000001;;, + 161;3;-1.000000, 0.000000,-0.000001;;, + 162;3;-1.000000,-0.000000,-0.000000;;, + 163;3;-1.000000,-0.000000,-0.000000;;, + 164;3;-1.000000,-0.000000,-0.000000;;, + 165;3;-1.000000,-0.000000,-0.000000;;, + 166;3;-1.000000,-0.000000,-0.000000;;, + 167;3;-1.000000,-0.000000,-0.000000;;, + 168;3;-1.000000, 0.000000,-0.000001;;, + 169;3;-1.000000, 0.000000,-0.000001;;, + 170;3;-1.000000, 0.000000,-0.000001;;, + 171;3;-1.000000, 0.000000,-0.000001;;, + 172;3;-1.000000, 0.000000,-0.000001;;, + 173;3;-1.000000, 0.000000,-0.000001;;, + 174;3;-1.000000, 0.000000,-0.000001;;, + 175;3;-1.000000, 0.000000,-0.000001;;, + 176;3;-1.000000, 0.000000,-0.000001;;, + 177;3;-1.000000, 0.000000,-0.000001;;, + 178;3;-1.000000, 0.000000,-0.000001;;, + 179;3;-1.000000, 0.000000,-0.000001;;, + 180;3;-1.000000, 0.000000,-0.000001;;, + 181;3;-1.000000, 0.000000,-0.000001;;, + 182;3;-1.000000, 0.000000,-0.000001;;, + 183;3;-1.000000, 0.000000,-0.000001;;, + 184;3;-1.000000, 0.000000,-0.000001;;, + 185;3;-1.000000, 0.000000,-0.000001;;, + 186;3;-1.000000, 0.000000,-0.000001;;, + 187;3;-1.000000, 0.000000,-0.000001;;, + 188;3;-1.000000, 0.000000,-0.000001;;; + } + } +} // End of AnimationSet ArmatureAction +AnimationSet Default_Action { + Animation { + {Player} + AnimationKey { // Rotation + 0; + 189; + 0;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 1;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 2;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 3;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 4;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 5;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 6;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 7;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 8;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 9;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 10;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 11;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 12;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 13;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 14;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 15;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 16;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 17;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 18;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 19;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 20;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 21;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 22;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 23;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 24;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 25;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 26;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 27;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 28;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 29;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 30;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 31;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 32;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 33;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 34;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 35;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 36;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 37;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 38;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 39;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 40;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 41;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 42;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 43;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 44;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 45;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 46;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 47;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 48;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 49;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 50;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 51;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 52;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 53;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 54;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 55;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 56;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 57;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 58;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 59;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 60;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 61;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 62;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 63;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 64;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 65;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 66;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 67;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 68;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 69;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 70;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 71;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 72;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 73;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 74;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 75;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 76;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 77;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 78;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 79;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 80;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 81;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 82;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 83;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 84;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 85;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 86;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 87;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 88;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 89;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 90;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 91;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 92;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 93;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 94;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 95;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 96;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 97;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 98;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 99;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 100;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 101;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 102;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 103;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 104;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 105;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 106;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 107;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 108;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 109;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 110;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 111;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 112;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 113;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 114;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 115;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 116;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 117;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 118;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 119;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 120;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 121;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 122;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 123;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 124;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 125;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 126;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 127;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 128;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 129;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 130;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 131;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 132;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 133;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 134;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 135;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 136;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 137;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 138;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 139;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 140;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 141;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 142;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 143;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 144;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 145;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 146;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 147;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 148;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 149;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 150;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 151;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 152;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 153;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 154;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 155;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 156;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 157;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 158;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 159;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 160;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 161;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 162;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 163;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 164;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 165;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 166;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 167;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 168;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 169;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 170;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 171;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 172;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 173;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 174;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 175;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 176;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 177;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 178;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 179;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 180;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 181;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 182;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 183;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 184;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 185;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 186;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 187;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 188;4;-1.000000, 0.000000, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 189; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 189; + 0;3; 0.000000, 0.000000, 0.000000;;, + 1;3; 0.000000, 0.000000, 0.000000;;, + 2;3; 0.000000, 0.000000, 0.000000;;, + 3;3; 0.000000, 0.000000, 0.000000;;, + 4;3; 0.000000, 0.000000, 0.000000;;, + 5;3; 0.000000, 0.000000, 0.000000;;, + 6;3; 0.000000, 0.000000, 0.000000;;, + 7;3; 0.000000, 0.000000, 0.000000;;, + 8;3; 0.000000, 0.000000, 0.000000;;, + 9;3; 0.000000, 0.000000, 0.000000;;, + 10;3; 0.000000, 0.000000, 0.000000;;, + 11;3; 0.000000, 0.000000, 0.000000;;, + 12;3; 0.000000, 0.000000, 0.000000;;, + 13;3; 0.000000, 0.000000, 0.000000;;, + 14;3; 0.000000, 0.000000, 0.000000;;, + 15;3; 0.000000, 0.000000, 0.000000;;, + 16;3; 0.000000, 0.000000, 0.000000;;, + 17;3; 0.000000, 0.000000, 0.000000;;, + 18;3; 0.000000, 0.000000, 0.000000;;, + 19;3; 0.000000, 0.000000, 0.000000;;, + 20;3; 0.000000, 0.000000, 0.000000;;, + 21;3; 0.000000, 0.000000, 0.000000;;, + 22;3; 0.000000, 0.000000, 0.000000;;, + 23;3; 0.000000, 0.000000, 0.000000;;, + 24;3; 0.000000, 0.000000, 0.000000;;, + 25;3; 0.000000, 0.000000, 0.000000;;, + 26;3; 0.000000, 0.000000, 0.000000;;, + 27;3; 0.000000, 0.000000, 0.000000;;, + 28;3; 0.000000, 0.000000, 0.000000;;, + 29;3; 0.000000, 0.000000, 0.000000;;, + 30;3; 0.000000, 0.000000, 0.000000;;, + 31;3; 0.000000, 0.000000, 0.000000;;, + 32;3; 0.000000, 0.000000, 0.000000;;, + 33;3; 0.000000, 0.000000, 0.000000;;, + 34;3; 0.000000, 0.000000, 0.000000;;, + 35;3; 0.000000, 0.000000, 0.000000;;, + 36;3; 0.000000, 0.000000, 0.000000;;, + 37;3; 0.000000, 0.000000, 0.000000;;, + 38;3; 0.000000, 0.000000, 0.000000;;, + 39;3; 0.000000, 0.000000, 0.000000;;, + 40;3; 0.000000, 0.000000, 0.000000;;, + 41;3; 0.000000, 0.000000, 0.000000;;, + 42;3; 0.000000, 0.000000, 0.000000;;, + 43;3; 0.000000, 0.000000, 0.000000;;, + 44;3; 0.000000, 0.000000, 0.000000;;, + 45;3; 0.000000, 0.000000, 0.000000;;, + 46;3; 0.000000, 0.000000, 0.000000;;, + 47;3; 0.000000, 0.000000, 0.000000;;, + 48;3; 0.000000, 0.000000, 0.000000;;, + 49;3; 0.000000, 0.000000, 0.000000;;, + 50;3; 0.000000, 0.000000, 0.000000;;, + 51;3; 0.000000, 0.000000, 0.000000;;, + 52;3; 0.000000, 0.000000, 0.000000;;, + 53;3; 0.000000, 0.000000, 0.000000;;, + 54;3; 0.000000, 0.000000, 0.000000;;, + 55;3; 0.000000, 0.000000, 0.000000;;, + 56;3; 0.000000, 0.000000, 0.000000;;, + 57;3; 0.000000, 0.000000, 0.000000;;, + 58;3; 0.000000, 0.000000, 0.000000;;, + 59;3; 0.000000, 0.000000, 0.000000;;, + 60;3; 0.000000, 0.000000, 0.000000;;, + 61;3; 0.000000, 0.000000, 0.000000;;, + 62;3; 0.000000, 0.000000, 0.000000;;, + 63;3; 0.000000, 0.000000, 0.000000;;, + 64;3; 0.000000, 0.000000, 0.000000;;, + 65;3; 0.000000, 0.000000, 0.000000;;, + 66;3; 0.000000, 0.000000, 0.000000;;, + 67;3; 0.000000, 0.000000, 0.000000;;, + 68;3; 0.000000, 0.000000, 0.000000;;, + 69;3; 0.000000, 0.000000, 0.000000;;, + 70;3; 0.000000, 0.000000, 0.000000;;, + 71;3; 0.000000, 0.000000, 0.000000;;, + 72;3; 0.000000, 0.000000, 0.000000;;, + 73;3; 0.000000, 0.000000, 0.000000;;, + 74;3; 0.000000, 0.000000, 0.000000;;, + 75;3; 0.000000, 0.000000, 0.000000;;, + 76;3; 0.000000, 0.000000, 0.000000;;, + 77;3; 0.000000, 0.000000, 0.000000;;, + 78;3; 0.000000, 0.000000, 0.000000;;, + 79;3; 0.000000, 0.000000, 0.000000;;, + 80;3; 0.000000, 0.000000, 0.000000;;, + 81;3; 0.000000, 0.000000, 0.000000;;, + 82;3; 0.000000, 0.000000, 0.000000;;, + 83;3; 0.000000, 0.000000, 0.000000;;, + 84;3; 0.000000, 0.000000, 0.000000;;, + 85;3; 0.000000, 0.000000, 0.000000;;, + 86;3; 0.000000, 0.000000, 0.000000;;, + 87;3; 0.000000, 0.000000, 0.000000;;, + 88;3; 0.000000, 0.000000, 0.000000;;, + 89;3; 0.000000, 0.000000, 0.000000;;, + 90;3; 0.000000, 0.000000, 0.000000;;, + 91;3; 0.000000, 0.000000, 0.000000;;, + 92;3; 0.000000, 0.000000, 0.000000;;, + 93;3; 0.000000, 0.000000, 0.000000;;, + 94;3; 0.000000, 0.000000, 0.000000;;, + 95;3; 0.000000, 0.000000, 0.000000;;, + 96;3; 0.000000, 0.000000, 0.000000;;, + 97;3; 0.000000, 0.000000, 0.000000;;, + 98;3; 0.000000, 0.000000, 0.000000;;, + 99;3; 0.000000, 0.000000, 0.000000;;, + 100;3; 0.000000, 0.000000, 0.000000;;, + 101;3; 0.000000, 0.000000, 0.000000;;, + 102;3; 0.000000, 0.000000, 0.000000;;, + 103;3; 0.000000, 0.000000, 0.000000;;, + 104;3; 0.000000, 0.000000, 0.000000;;, + 105;3; 0.000000, 0.000000, 0.000000;;, + 106;3; 0.000000, 0.000000, 0.000000;;, + 107;3; 0.000000, 0.000000, 0.000000;;, + 108;3; 0.000000, 0.000000, 0.000000;;, + 109;3; 0.000000, 0.000000, 0.000000;;, + 110;3; 0.000000, 0.000000, 0.000000;;, + 111;3; 0.000000, 0.000000, 0.000000;;, + 112;3; 0.000000, 0.000000, 0.000000;;, + 113;3; 0.000000, 0.000000, 0.000000;;, + 114;3; 0.000000, 0.000000, 0.000000;;, + 115;3; 0.000000, 0.000000, 0.000000;;, + 116;3; 0.000000, 0.000000, 0.000000;;, + 117;3; 0.000000, 0.000000, 0.000000;;, + 118;3; 0.000000, 0.000000, 0.000000;;, + 119;3; 0.000000, 0.000000, 0.000000;;, + 120;3; 0.000000, 0.000000, 0.000000;;, + 121;3; 0.000000, 0.000000, 0.000000;;, + 122;3; 0.000000, 0.000000, 0.000000;;, + 123;3; 0.000000, 0.000000, 0.000000;;, + 124;3; 0.000000, 0.000000, 0.000000;;, + 125;3; 0.000000, 0.000000, 0.000000;;, + 126;3; 0.000000, 0.000000, 0.000000;;, + 127;3; 0.000000, 0.000000, 0.000000;;, + 128;3; 0.000000, 0.000000, 0.000000;;, + 129;3; 0.000000, 0.000000, 0.000000;;, + 130;3; 0.000000, 0.000000, 0.000000;;, + 131;3; 0.000000, 0.000000, 0.000000;;, + 132;3; 0.000000, 0.000000, 0.000000;;, + 133;3; 0.000000, 0.000000, 0.000000;;, + 134;3; 0.000000, 0.000000, 0.000000;;, + 135;3; 0.000000, 0.000000, 0.000000;;, + 136;3; 0.000000, 0.000000, 0.000000;;, + 137;3; 0.000000, 0.000000, 0.000000;;, + 138;3; 0.000000, 0.000000, 0.000000;;, + 139;3; 0.000000, 0.000000, 0.000000;;, + 140;3; 0.000000, 0.000000, 0.000000;;, + 141;3; 0.000000, 0.000000, 0.000000;;, + 142;3; 0.000000, 0.000000, 0.000000;;, + 143;3; 0.000000, 0.000000, 0.000000;;, + 144;3; 0.000000, 0.000000, 0.000000;;, + 145;3; 0.000000, 0.000000, 0.000000;;, + 146;3; 0.000000, 0.000000, 0.000000;;, + 147;3; 0.000000, 0.000000, 0.000000;;, + 148;3; 0.000000, 0.000000, 0.000000;;, + 149;3; 0.000000, 0.000000, 0.000000;;, + 150;3; 0.000000, 0.000000, 0.000000;;, + 151;3; 0.000000, 0.000000, 0.000000;;, + 152;3; 0.000000, 0.000000, 0.000000;;, + 153;3; 0.000000, 0.000000, 0.000000;;, + 154;3; 0.000000, 0.000000, 0.000000;;, + 155;3; 0.000000, 0.000000, 0.000000;;, + 156;3; 0.000000, 0.000000, 0.000000;;, + 157;3; 0.000000, 0.000000, 0.000000;;, + 158;3; 0.000000, 0.000000, 0.000000;;, + 159;3; 0.000000, 0.000000, 0.000000;;, + 160;3; 0.000000, 0.000000, 0.000000;;, + 161;3; 0.000000, 0.000000, 0.000000;;, + 162;3; 0.000000, 0.000000, 0.000000;;, + 163;3; 0.000000, 0.000000, 0.000000;;, + 164;3; 0.000000, 0.000000, 0.000000;;, + 165;3; 0.000000, 0.000000, 0.000000;;, + 166;3; 0.000000, 0.000000, 0.000000;;, + 167;3; 0.000000, 0.000000, 0.000000;;, + 168;3; 0.000000, 0.000000, 0.000000;;, + 169;3; 0.000000, 0.000000, 0.000000;;, + 170;3; 0.000000, 0.000000, 0.000000;;, + 171;3; 0.000000, 0.000000, 0.000000;;, + 172;3; 0.000000, 0.000000, 0.000000;;, + 173;3; 0.000000, 0.000000, 0.000000;;, + 174;3; 0.000000, 0.000000, 0.000000;;, + 175;3; 0.000000, 0.000000, 0.000000;;, + 176;3; 0.000000, 0.000000, 0.000000;;, + 177;3; 0.000000, 0.000000, 0.000000;;, + 178;3; 0.000000, 0.000000, 0.000000;;, + 179;3; 0.000000, 0.000000, 0.000000;;, + 180;3; 0.000000, 0.000000, 0.000000;;, + 181;3; 0.000000, 0.000000, 0.000000;;, + 182;3; 0.000000, 0.000000, 0.000000;;, + 183;3; 0.000000, 0.000000, 0.000000;;, + 184;3; 0.000000, 0.000000, 0.000000;;, + 185;3; 0.000000, 0.000000, 0.000000;;, + 186;3; 0.000000, 0.000000, 0.000000;;, + 187;3; 0.000000, 0.000000, 0.000000;;, + 188;3; 0.000000, 0.000000, 0.000000;;; + } + } +} // End of AnimationSet Default_Action diff --git a/mods/mobs_shade/readme.txt b/mods/mobs_shade/readme.txt new file mode 100644 index 0000000..1ad61d3 --- /dev/null +++ b/mods/mobs_shade/readme.txt @@ -0,0 +1,13 @@ +Scripts © 2015-2016 BlockMen + Modified zlib license – See file “Modified zlib license†in directory “licenses†+ + +Textures © 2014-2016 Blockmen , + © 2017 Tirifto + CC BY-SA 4.0 – https://creativecommons.org/licenses/by-sa/4.0/legalcode + + +Sounds © 2017 Tirifto + CC0 (Public Domain) – https://creativecommons.org/publicdomain/zero/1.0/legalcode + + diff --git a/mods/mobs_shade/sounds/creatures_ghost.1.ogg b/mods/mobs_shade/sounds/creatures_ghost.1.ogg new file mode 100644 index 0000000..fed6a09 Binary files /dev/null and b/mods/mobs_shade/sounds/creatures_ghost.1.ogg differ diff --git a/mods/mobs_shade/sounds/creatures_ghost.2.ogg b/mods/mobs_shade/sounds/creatures_ghost.2.ogg new file mode 100644 index 0000000..bbc8c5f Binary files /dev/null and b/mods/mobs_shade/sounds/creatures_ghost.2.ogg differ diff --git a/mods/mobs_shade/sounds/creatures_ghost_death.ogg b/mods/mobs_shade/sounds/creatures_ghost_death.ogg new file mode 100644 index 0000000..12cb868 Binary files /dev/null and b/mods/mobs_shade/sounds/creatures_ghost_death.ogg differ diff --git a/mods/mobs_shade/sounds/creatures_ghost_hit.ogg b/mods/mobs_shade/sounds/creatures_ghost_hit.ogg new file mode 100644 index 0000000..5033751 Binary files /dev/null and b/mods/mobs_shade/sounds/creatures_ghost_hit.ogg differ diff --git a/mods/mobs_shade/textures/creatures_ghost.png b/mods/mobs_shade/textures/creatures_ghost.png new file mode 100644 index 0000000..87d00f4 Binary files /dev/null and b/mods/mobs_shade/textures/creatures_ghost.png differ diff --git a/mods/mychisel/README.md b/mods/mychisel/README.md new file mode 100644 index 0000000..75bf847 --- /dev/null +++ b/mods/mychisel/README.md @@ -0,0 +1,5 @@ +Mychisel +===================================================================== +Main: Donbatman +Lisc: WTFPL +Link: https://github.com/minetest-mods/mychisel/ diff --git a/mods/mychisel/README.md.diff b/mods/mychisel/README.md.diff new file mode 100644 index 0000000..0e938dd --- /dev/null +++ b/mods/mychisel/README.md.diff @@ -0,0 +1,122 @@ +1,114c1,5 +< A chisel that allows you to shape blocks. +< If technic mod is present the chisel will be rechargeable. +< +< To craft a chisel just put a steel ingot and a brown wool in the crafting grid. The steel goes above the wool. +< (different recipe for technic device) +< +< Once you have your chisel you can set the style by right clicking. +< +< There are 5 styles to choose from(default) +< - horizontal groove +< - vertical groove +< - cross groves (this matches up with the vertical and horizontal grooves +< - square +< - 4 edges +< +< Right click until you see the style you want in the chat then point at the node and left click. +< Each node can be cut 4 times. Each time you chisel the groove will get a little deeper. +< +< Shift right click to change the supported mod. Here the list of supported mods: +< default (mychisel mod) 5 styles +< facade 10 styles +< +< Only certain nodes can be chiseled. Here are the supported nodes +< +< +< Cobble +< Sandstone +< Clay +< Coal Block +< Stone +< Desert Stone" +< Wood +< Acacia Wood +< Aspen Wood +< Pine Wood +< Desert Cobble +< Jungle Wood +< Sandstone Brick +< Stone Brick +< Desert Stone Brick +< +< Forum - https://forum.minetest.net/viewtopic.php?f=11&t=13104 +< +< +< +< ************************************************************************* +< ************************************************************************* +< *** added 01/2018 by Gundul *** +< *** chiselapi: *** +< ************************************************************************* +< ************************************************************************* +< +< Fist init your mod with mychisel: +< +< chisel.add_mod(modname,number) +< +< modname = the name of your mod +< number = number of different styles for each node +< +< +< Then register your nodes with mychisel: +< +< chisel.register_node(modname, prefix, raw, design) +< +< modname = the name of your node +< prefix = prefix of your new node name right behind the ":", usually the name of the raw material without "modname:" +< raw = name of the raw material for example "default:stone" +< design = name of your nodestyle after beeing chiseled +< +< +< Naming your nodes: +< +< In your mod the nodes should be named like this: modname..":"..prefix.."_"..design +< +< +< +< depends.txt: +< +< In your modfolder add this line to your depends.txt: mychisel? +< +< +< +< +< +< Example: you made a mod named "pillar" with 3 different pillar designs +< +< first register your mod: chisel.add_mod(pillar,3) +< +< +< then register each node of it: +< +< chisel.register_node("pillar", "stone", "default:stone", "round") +< chisel.register_node("pillar", "stone", "default:stone", "square") +< chisel.register_node("pillar", "stone", "default:stone", "hexagon") +< +< +< Do this for every material your mod supports: +< +< chisel.register_node("pillar", "sandstone", "default:sandstone", "round") +< chisel.register_node("pillar", "sandstone", "default:sandstone", "square") +< chisel.register_node("pillar", "sandstone", "default:sandstone", "hexagon") +< ... +< +< +< In your mod the nodes should have names like: +< +< pillar:stone_round +< pillar:stone_square +< pillar:stone_hexagon +< pillar:sandstone_round +< ... +< +< +< +\ No newline at end of file +--- +> Mychisel +> ===================================================================== +> Main: Donbatman +> Lisc: WTFPL +> Link: https://github.com/minetest-mods/mychisel/ diff --git a/mods/mychisel/chisel.lua b/mods/mychisel/chisel.lua new file mode 100644 index 0000000..a90be93 --- /dev/null +++ b/mods/mychisel/chisel.lua @@ -0,0 +1,247 @@ +local USES = 200 +local mode = {} + +local function parti(pos) + minetest.add_particlespawner(25, 0.3, + pos, pos, + {x=2, y=0.2, z=2}, {x=-2, y=2, z=-2}, + {x=0, y=-6, z=0}, {x=0, y=-10, z=0}, + 0.2, 1, + 0.2, 2, + true, "mychisel_parti.png") +end + + mode = "1" + +minetest.register_tool( "mychisel:chisel",{ + description = "Chisel", + inventory_image = "mychisel_chisel.png", + wield_image = "mychisel_chisel.png", + + on_use = function(itemstack, user, pointed_thing) + + if pointed_thing.type ~= "node" then + return + end + + local pos = pointed_thing.under + local node = minetest.get_node(pos) + + local default_material = { + {"default:cobble", "default_cobble", "Cobble"}, + {"default:sandstone","default_sandstone", "Sandstone"}, + {"default:clay","default_clay", "Clay"}, + {"default:coalblock","default_coal_block", "Coal Block"}, + {"default:stone","default_stone", "Stone"}, + {"default:desert_stone","default_desert_stone", "Desert Stone"}, + {"default:wood","default_wood", "Wood"}, + {"default:acacia_wood","default_acacia_wood", "Acacia Wood"}, + {"default:aspen_wood","default_aspen_wood", "Aspen Wood"}, + {"default:pine_wood","default_pine_wood", "Pine Wood"}, + {"default:desert_cobble","default_desert_cobble", "Desert Cobble"}, + {"default:junglewood","default_junglewood", "Jungle Wood"}, + {"default:sandstonebrick","default_sandstone_brick", "Sandstone Brick"}, + {"default:stonebrick","default_stone_brick", "Stone Brick"}, + {"default:desert_stonebrick","default_desert_stone_brick", "Desert Stone Brick"}, + } + + for i in ipairs (default_material) do + local item = default_material [i][1] + local mat = default_material [i][2] + local desc = default_material [i][3] + + if pointed_thing.type ~= "node" then + return + end + + if minetest.is_protected(pos, user:get_player_name()) then + minetest.record_protection_violation(pos, user:get_player_name()) + return + end + + if mode == "1" then + + if node.name == item then + minetest.set_node(pos,{name = "mychisel:chiseled_"..mat.."1", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:chiseled_"..mat.."1" then + minetest.set_node(pos,{name = "mychisel:chiseled_"..mat.."2", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:chiseled_"..mat.."2" then + minetest.set_node(pos,{name = "mychisel:chiseled_"..mat.."3", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:chiseled_"..mat.."3" then + minetest.set_node(pos,{name = "mychisel:chiseled_"..mat.."4", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + end + + if mode == "2" then + + if node.name == item then + minetest.set_node(pos,{name = "mychisel:horizontal_"..mat.."1", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:horizontal_"..mat.."1" then + minetest.set_node(pos,{name = "mychisel:horizontal_"..mat.."2", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:horizontal_"..mat.."2" then + minetest.set_node(pos,{name = "mychisel:horizontal_"..mat.."3", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:horizontal_"..mat.."3" then + minetest.set_node(pos,{name = "mychisel:horizontal_"..mat.."4", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + end + + if mode == "3" then + + if node.name == item then + minetest.set_node(pos,{name = "mychisel:vertical_"..mat.."1", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:vertical_"..mat.."1" then + minetest.set_node(pos,{name = "mychisel:vertical_"..mat.."2", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:vertical_"..mat.."2" then + minetest.set_node(pos,{name = "mychisel:vertical_"..mat.."3", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:vertical_"..mat.."3" then + minetest.set_node(pos,{name = "mychisel:vertical_"..mat.."4", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + end + + if mode == "4" then + + if node.name == item then + minetest.set_node(pos,{name = "mychisel:cross_"..mat.."1", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:cross_"..mat.."1" then + minetest.set_node(pos,{name = "mychisel:cross_"..mat.."2", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:cross_"..mat.."2" then + minetest.set_node(pos,{name = "mychisel:cross_"..mat.."3", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:cross_"..mat.."3" then + minetest.set_node(pos,{name = "mychisel:cross_"..mat.."4", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + end + + if mode == "5" then + + if node.name == item then + minetest.set_node(pos,{name = "mychisel:square_"..mat.."1", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:square_"..mat.."1" then + minetest.set_node(pos,{name = "mychisel:square_"..mat.."2", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:square_"..mat.."2" then + minetest.set_node(pos,{name = "mychisel:square_"..mat.."3", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + + if node.name == "mychisel:square_"..mat.."3" then + minetest.set_node(pos,{name = "mychisel:square_"..mat.."4", param2=minetest.dir_to_facedir(user:get_look_dir())}) + parti(pos) + end + end + + if mode == "6" then +-- on_place = function(itemstack, placer, pointed_thing) + local pt = pointed_thing + if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then + local wear = itemstack:get_wear() + local direction = minetest.dir_to_facedir(user:get_look_dir()) + local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) + local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) + minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="mychisel:chisel_deco", param2=direction}) + meta1:set_int("wear", wear) + meta2:set_int("wear", wear) + itemstack:take_item() + return itemstack + end + end + + end + + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535 / (USES - 1)) + end + + return itemstack + + end, + + on_place = function(itemstack, user, pointed_thing) + + local usr = user:get_player_name() + + if mode == "1" then + mode = "2" + minetest.chat_send_player(usr,"Horizontal Groove") + + elseif mode == "2" then + mode = "3" + minetest.chat_send_player(usr,"Vertical Groove") + + elseif mode == "3" then + mode = "4" + minetest.chat_send_player(usr,"Cross Grooves") + + elseif mode == "4" then + mode = "5" + minetest.chat_send_player(usr,"Square") + + elseif mode == "5" then + mode = "6" + minetest.chat_send_player(usr,"Place Tool") + elseif mode == "6" then + mode = "1" + minetest.chat_send_player(usr,"Chisel 4 Edges") + end + + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535 / (USES - 1)) + end + + return itemstack + + end + +}) + +minetest.register_craft({ + output = "mychisel:chisel", + recipe = { + {"default:steel_ingot"}, + {"wool:brown"}, + }, +}) diff --git a/mods/mychisel/chisel.lua.diff b/mods/mychisel/chisel.lua.diff new file mode 100644 index 0000000..b4ff8b0 --- /dev/null +++ b/mods/mychisel/chisel.lua.diff @@ -0,0 +1,550 @@ +2,11c2 +< local color = '#FF6700' +< local TechnicMaxCharge = 300000 +< chisel = {} +< +< chisel.materials = {} +< chisel.mods = {} +< chisel.selected = {} +< chisel.active = {} +< chisel.program = {} +< chisel.mode = {} +--- +> local mode = {} +12a4,12 +> local function parti(pos) +> minetest.add_particlespawner(25, 0.3, +> pos, pos, +> {x=2, y=0.2, z=2}, {x=-2, y=2, z=-2}, +> {x=0, y=-6, z=0}, {x=0, y=-10, z=0}, +> 0.2, 1, +> 0.2, 2, +> true, "mychisel_parti.png") +> end +13a14 +> mode = "1" +14a16,19 +> minetest.register_tool( "mychisel:chisel",{ +> description = "Chisel", +> inventory_image = "mychisel_chisel.png", +> wield_image = "mychisel_chisel.png", +16c21 +< local wehavetechnic = minetest.get_modpath("technic") +--- +> on_use = function(itemstack, user, pointed_thing) +17a23,25 +> if pointed_thing.type ~= "node" then +> return +> end +19,20c27,28 +< +< +--- +> local pos = pointed_thing.under +> local node = minetest.get_node(pos) +22c30 +< local default_material = { +--- +> local default_material = { +40,185d47 +< -- Chatcommand to show loaded mods with names and number of styles +< +< minetest.register_chatcommand("chisel", { +< params = "", +< description = "Shows supported mods in mychisel", +< privs = {interact = true}, +< func = function(name, poi_name) +< +< for i in ipairs (chisel.mods) do +< +< minetest.chat_send_player(name,core.colorize(color,i..") modname :"..chisel.mods[i][1].." styles: "..chisel.mods[i][2])) +< end +< +< end, +< }) +< +< -- global API +< +< function chisel.register_node(modname, prefix, raw, design) -- global function to register new stuff +< local counter = chisel.count_stuff() +1 +< chisel.materials [counter] = {} +< chisel.materials [counter][1] = modname +< chisel.materials [counter][2] = prefix +< chisel.materials [counter][3] = raw +< chisel.materials [counter][4] = design +< end +< +< +< function chisel.add_mod(modname,number) -- global function to init a new mod for the chisel. +< local counter = chisel.count_mods() +1 +< chisel.mods [counter] = {} +< chisel.mods [counter][1] = modname +< chisel.mods [counter][2] = number +< minetest.log("action","[CHISEL] Added mod "..modname .. " with " .. number.." styles to mychisel") -- log loaded mods to debug.txt +< end +< +< +< +< function chisel.count_stuff() -- how many materials have been registered already ? +< local counter = 0 +< for i in ipairs (chisel.materials) do counter = counter +1 end +< return counter +< end +< +< +< +< function chisel.count_mods() -- how many different mods are registered ? +< +< local counter = 0 +< for i in ipairs (chisel.mods) do counter = counter +1 end +< return counter +< end +< +< +< +< +< -- init chisel for each player joining +< +< local function chiselinit(name) +< chisel.selected[name] = 1 +< chisel.active[name] = "default" +< chisel.program[name] = 1 +< chisel.mode[name] = "1" +< end +< +< minetest.register_on_joinplayer(function(player) +< chiselinit(player:get_player_name()) +< end) +< +< -- end init +< +< +< +< +< local function parti(pos) +< minetest.add_particlespawner(25, 0.3, +< pos, pos, +< {x=2, y=0.2, z=2}, {x=-2, y=2, z=-2}, +< {x=0, y=-6, z=0}, {x=0, y=-10, z=0}, +< 0.2, 1, +< 0.2, 2, +< true, "mychisel_parti.png") +< end +< +< +< +< +< local function chiselcut(pos,user,node) +< local name = user:get_player_name() +< +< for i in ipairs (chisel.materials) do +< +< if chisel.materials[i][1] == chisel.active[name] then +< if node.name == chisel.materials[i][3] and chisel.materials[i][4] == chisel.materials[chisel.program[name]][4] then +< +< minetest.set_node(pos, {name=chisel.materials[i][1]..":"..chisel.materials[i][2].."_"..chisel.materials[i][4], param2=minetest.dir_to_facedir(user:get_look_dir())}) +< end +< end +< end +< end +< +< +< local function change_mode(user, choice) +< +< local name = user:get_player_name() +< +< +< if choice then +< if chisel.mode[name] == "1" then +< chisel.mode[name] = "2" +< minetest.chat_send_player(name,core.colorize(color, "Horizontal Groove")) +< +< elseif chisel.mode[name] == "2" then +< chisel.mode[name] = "3" +< minetest.chat_send_player(name,core.colorize(color, "Vertical Groove")) +< +< elseif chisel.mode[name] == "3" then +< chisel.mode[name] = "4" +< minetest.chat_send_player(name, core.colorize(color, "Cross Grooves")) +< +< elseif chisel.mode[name] == "4" then +< chisel.mode[name] = "5" +< minetest.chat_send_player(name, core.colorize(color, "Square")) +< +< elseif chisel.mode[name] == "5" then +< chisel.mode[name] = "1" +< minetest.chat_send_player(name, core.colorize(color, "Chisel 4 Edges")) +< end +< else +< chisel.program[name] = chisel.program[name] +1 +< if chisel.program[name] > chisel.mods [chisel.selected[name]][2] then chisel.program[name] = 1 end +< minetest.chat_send_player(name, core.colorize(color, chisel.materials [chisel.program[name]][4])) +< end +< +< end +< +< +< +< +< local function chiselme(pos, user, node) +< +< +< local name = user:get_player_name() +< +< +< +190d51 +< +192c53,62 +< if chisel.mode[name] == "1" then +--- +> if pointed_thing.type ~= "node" then +> return +> end +> +> if minetest.is_protected(pos, user:get_player_name()) then +> minetest.record_protection_violation(pos, user:get_player_name()) +> return +> end +> +> if mode == "1" then +197d66 +< +203d71 +< +209d76 +< +215d81 +< +217,218d82 +< +< +221c85 +< if chisel.mode[name] == "2" then +--- +> if mode == "2" then +226d89 +< +232d94 +< +238d99 +< +244d104 +< +246d105 +< +249c108 +< if chisel.mode[name] == "3" then +--- +> if mode == "3" then +254d112 +< +260d117 +< +266d122 +< +272d127 +< +274d128 +< +277c131 +< if chisel.mode[name] == "4" then +--- +> if mode == "4" then +282d135 +< +288d140 +< +294d145 +< +300d150 +< +302d151 +< +305c154 +< if chisel.mode[name] == "5" then +--- +> if mode == "5" then +310d158 +< +316d163 +< +322d168 +< +328d173 +< +330d174 +< +332a177,192 +> if mode == "6" then +> -- on_place = function(itemstack, placer, pointed_thing) +> local pt = pointed_thing +> if ( minetest.get_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}).name == "air" ) then +> local wear = itemstack:get_wear() +> local direction = minetest.dir_to_facedir(user:get_look_dir()) +> local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) +> local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) +> minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="mychisel:chisel_deco", param2=direction}) +> meta1:set_int("wear", wear) +> meta2:set_int("wear", wear) +> itemstack:take_item() +> return itemstack +> end +> end +> +334,335d193 +< +< end +337,338c195,197 +< +< if not wehavetechnic then +--- +> if not minetest.setting_getbool("creative_mode") then +> itemstack:add_wear(65535 / (USES - 1)) +> end +340,531c199,221 +< minetest.register_tool( "mychisel:chisel",{ +< description = "Chisel", +< inventory_image = "mychisel_chisel.png", +< wield_image = "mychisel_chisel.png", +< +< on_use = function(itemstack, user, pointed_thing) +< +< if pointed_thing.type ~= "node" then +< return +< end +< +< local pos = pointed_thing.under +< local node = minetest.get_node(pos)local feedback = false +< local name = user:get_player_name() +< +< +< +< +< if minetest.is_protected(pos, user:get_player_name()) then +< minetest.record_protection_violation(pos, user:get_player_name()) +< return +< end +< +< +< if chisel.active[name] == "default" then +< chiselme(pos,user,node) +< +< else +< +< chiselcut(pos,user,node) +< +< end +< +< +< if not minetest.setting_getbool("creative_mode") then +< itemstack:add_wear(65535 / (USES - 1)) +< end +< +< return itemstack +< +< end, +< +< on_place = function(itemstack, user, pointed_thing) +< +< +< local number = chisel.count_mods() +< local keys = user:get_player_control() +< local name = user:get_player_name() +< +< +< +< -- change design mode of chisel by pressing sneak while right-clicking +< if( not( keys["sneak"] )) then +< if chisel.active[name] == "default" then +< change_mode(user,true) +< else +< +< change_mode(user,false) +< +< end +< else +< chisel.selected[name] = chisel.selected[name] +1 +< if chisel.selected[name] > chisel.count_mods() then chisel.selected[name] = 1 end +< +< chisel.active[name] = chisel.mods[chisel.selected[name]][1] +< minetest.chat_send_player(user:get_player_name(), core.colorize(color, " ***>>> switched to mod: "..chisel.active[name])) +< +< end +< +< return itemstack +< +< end +< +< }) +< +< minetest.register_craft({ +< output = "mychisel:chisel", +< recipe = { +< {"default:steel_ingot"}, +< {"wool:brown"}, +< }, +< }) +< +< +< +< +< else +< +< +< local S = technic.getter +< +< technic.register_power_tool("mychisel:chisel",TechnicMaxCharge) +< local chisel_charge_per_node =math.floor( TechnicMaxCharge / USES ) +< +< +< minetest.register_tool("mychisel:chisel", { +< description = S("Chisel"), +< inventory_image = "mychisel_chisel.png", +< stack_max = 1, +< wear_represents = "technic_RE_charge", +< on_refill = technic.refill_RE_charge, +< on_use = function(itemstack, user, pointed_thing) +< +< +< if pointed_thing.type ~= "node" then +< return +< end +< +< local pos = pointed_thing.under +< local node = minetest.get_node(pos) +< local name = user:get_player_name() +< +< +< +< if minetest.is_protected(pos, user:get_player_name()) then +< minetest.record_protection_violation(pos, user:get_player_name()) +< return +< end +< +< -- +< +< local meta = minetest.deserialize(itemstack:get_metadata()) +< if not meta or not meta.charge or +< meta.charge < chisel_charge_per_node then +< return +< end +< +< if chisel.active[name] == "default" then +< chiselme(pos,user,node) +< meta.charge = meta.charge - chisel_charge_per_node +< else +< +< chiselcut(pos,user,node) +< meta.charge = meta.charge - chisel_charge_per_node +< end +< +< +< +< if not technic.creative_mode then +< technic.set_RE_wear(itemstack, meta.charge, TechnicMaxCharge) +< itemstack:set_metadata(minetest.serialize(meta)) +< end +< +< return itemstack +< +< +< end, +< +< on_place = function(itemstack, user, pointed_thing) +< +< local number = chisel.count_mods() +< local keys = user:get_player_control() +< local name = user:get_player_name() +< +< +< +< -- change design mode of chisel by pressing sneak while right-clicking +< if( not( keys["sneak"] )) then +< if chisel.active[name] == "default" then +< change_mode(user,true) +< else +< +< change_mode(user,false) +< +< end +< else +< chisel.selected[name] = chisel.selected[name] +1 +< if chisel.selected[name] > chisel.count_mods() then chisel.selected[name] = 1 end +< +< chisel.active[name] = chisel.mods[chisel.selected[name]][1] +< minetest.chat_send_player(user:get_player_name(),core.colorize(color, " ***>>> switched to mod: "..chisel.active[name])) +< +< end +< +< return itemstack +< +< end +< }) +< +< +< minetest.register_craft({ +< output = "mychisel:chisel", +< recipe = { +< {"default:diamond", "default:diamond" , "default:diamond" }, +< {"", "technic:stainless_steel_ingot", ""}, +< {"", "technic:battery", ""}, +< } +< }) +< +< +< +< end +--- +> return itemstack +> +> end, +> +> on_place = function(itemstack, user, pointed_thing) +> +> local usr = user:get_player_name() +> +> if mode == "1" then +> mode = "2" +> minetest.chat_send_player(usr,"Horizontal Groove") +> +> elseif mode == "2" then +> mode = "3" +> minetest.chat_send_player(usr,"Vertical Groove") +> +> elseif mode == "3" then +> mode = "4" +> minetest.chat_send_player(usr,"Cross Grooves") +> +> elseif mode == "4" then +> mode = "5" +> minetest.chat_send_player(usr,"Square") +533c223,247 +< chisel.add_mod("default",5) +\ No newline at end of file +--- +> elseif mode == "5" then +> mode = "6" +> minetest.chat_send_player(usr,"Place Tool") +> elseif mode == "6" then +> mode = "1" +> minetest.chat_send_player(usr,"Chisel 4 Edges") +> end +> +> if not minetest.setting_getbool("creative_mode") then +> itemstack:add_wear(65535 / (USES - 1)) +> end +> +> return itemstack +> +> end +> +> }) +> +> minetest.register_craft({ +> output = "mychisel:chisel", +> recipe = { +> {"default:steel_ingot"}, +> {"wool:brown"}, +> }, +> }) diff --git a/mods/mychisel/depends.txt b/mods/mychisel/depends.txt new file mode 100644 index 0000000..fa37cc0 --- /dev/null +++ b/mods/mychisel/depends.txt @@ -0,0 +1,2 @@ +default +technic? diff --git a/mods/mychisel/description.txt b/mods/mychisel/description.txt new file mode 100644 index 0000000..8648087 --- /dev/null +++ b/mods/mychisel/description.txt @@ -0,0 +1,114 @@ +A chisel that allows you to shape blocks. +If technic mod is present the chisel will be rechargeable. + +To craft a chisel just put a steel ingot and a brown wool in the crafting grid. The steel goes above the wool. +(different recipe for technic device) + +Once you have your chisel you can set the style by right clicking. + +There are 5 styles to choose from(default) +- horizontal groove +- vertical groove +- cross groves (this matches up with the vertical and horizontal grooves +- square +- 4 edges + +Right click until you see the style you want in the chat then point at the node and left click. +Each node can be cut 4 times. Each time you chisel the groove will get a little deeper. + +Shift right click to change the supported mod. Here the list of supported mods: +default (mychisel mod) 5 styles +facade 10 styles + +Only certain nodes can be chiseled. Here are the supported nodes + + + Cobble + Sandstone + Clay + Coal Block + Stone + Desert Stone" + Wood + Acacia Wood + Aspen Wood + Pine Wood + Desert Cobble + Jungle Wood + Sandstone Brick + Stone Brick + Desert Stone Brick + +Forum - https://forum.minetest.net/viewtopic.php?f=11&t=13104 + + + +************************************************************************* +************************************************************************* +*** added 01/2018 by Gundul *** +*** chiselapi: *** +************************************************************************* +************************************************************************* + +Fist init your mod with mychisel: + + chisel.add_mod(modname,number) + + modname = the name of your mod + number = number of different styles for each node + + + Then register your nodes with mychisel: + + chisel.register_node(modname, prefix, raw, design) + + modname = the name of your node + prefix = prefix of your new node name right behind the ":", usually the name of the raw material without "modname:" + raw = name of the raw material for example "default:stone" + design = name of your nodestyle after beeing chiseled + + + Naming your nodes: + + In your mod the nodes should be named like this: modname..":"..prefix.."_"..design + + + + depends.txt: + + In your modfolder add this line to your depends.txt: mychisel? + + + + + + Example: you made a mod named "pillar" with 3 different pillar designs + + first register your mod: chisel.add_mod(pillar,3) + + + then register each node of it: + + chisel.register_node("pillar", "stone", "default:stone", "round") + chisel.register_node("pillar", "stone", "default:stone", "square") + chisel.register_node("pillar", "stone", "default:stone", "hexagon") + + + Do this for every material your mod supports: + + chisel.register_node("pillar", "sandstone", "default:sandstone", "round") + chisel.register_node("pillar", "sandstone", "default:sandstone", "square") + chisel.register_node("pillar", "sandstone", "default:sandstone", "hexagon") + ... + + + In your mod the nodes should have names like: + + pillar:stone_round + pillar:stone_square + pillar:stone_hexagon + pillar:sandstone_round + ... + + + \ No newline at end of file diff --git a/mods/mychisel/init.lua b/mods/mychisel/init.lua new file mode 100644 index 0000000..d538441 --- /dev/null +++ b/mods/mychisel/init.lua @@ -0,0 +1,12 @@ + +dofile(minetest.get_modpath("mychisel").."/chisel.lua") + +dofile(minetest.get_modpath("mychisel").."/nodes.lua") + + + + + + + + diff --git a/mods/mychisel/init.lua.diff b/mods/mychisel/init.lua.diff new file mode 100644 index 0000000..e5233fd --- /dev/null +++ b/mods/mychisel/init.lua.diff @@ -0,0 +1,3 @@ +1,2d0 +< chisel = {} +< diff --git a/mods/mychisel/licence.txt b/mods/mychisel/licence.txt new file mode 100644 index 0000000..f50419b --- /dev/null +++ b/mods/mychisel/licence.txt @@ -0,0 +1,13 @@ +DO WHAT YOU WANT TO PUBLIC LICENSE +or abbreviated DWYWPL + +December 2nd 2015 +License Copyright (C) 2015 Michael Tomaino (PlatinumArts@gmail.com) +www.sandboxgamemaker.com/DWYWPL/ + +DO WHAT YOU WANT TO PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +1. You are allowed to do whatever you want to with what content is using this license. +2. This content is provided 'as-is', without any express or implied warranty. In no event +will the authors be held liable for any damages arising from the use of this content. diff --git a/mods/mychisel/mod.conf b/mods/mychisel/mod.conf new file mode 100644 index 0000000..5cdb3d3 --- /dev/null +++ b/mods/mychisel/mod.conf @@ -0,0 +1,2 @@ +name = mychisel +tags = tool, chisel, carve, groove diff --git a/mods/mychisel/nodes.lua b/mods/mychisel/nodes.lua new file mode 100644 index 0000000..c3fb836 --- /dev/null +++ b/mods/mychisel/nodes.lua @@ -0,0 +1,659 @@ + +local vert1 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, 0.5, 0.5}, + } + } + +local vert2 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.375, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, 0.5, 0.5}, + } + } + +local vert3 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, 0.5, 0.5}, + } + } + +local vert4 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.25, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, 0.5, 0.5}, + } + } + +local hori1 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.5}, + {-0.5, 0.1875, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -0.1875, 0.5}, + } + } + +local hori2 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.375, 0.5, 0.5, 0.5}, + {-0.5, 0.1875, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -0.1875, 0.5}, + } + } + +local hori3 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, + {-0.5, 0.1875, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -0.1875, 0.5}, + } + } + +local hori4 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.25, 0.5, 0.5, 0.5}, + {-0.5, 0.1875, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -0.1875, 0.5}, + } + } + +local cross1 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, -0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, -0.1875, 0.5}, + {-0.5, 0.1875, -0.5, -0.1875, 0.5, 0.5}, + {0.1875, 0.1875, -0.5, 0.5, 0.5, 0.5}, + } + } + +local cross2 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.375, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, -0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, -0.1875, 0.5}, + {-0.5, 0.1875, -0.5, -0.1875, 0.5, 0.5}, + {0.1875, 0.1875, -0.5, 0.5, 0.5, 0.5}, + } + } + +local cross3 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, -0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, -0.1875, 0.5}, + {-0.5, 0.1875, -0.5, -0.1875, 0.5, 0.5}, + {0.1875, 0.1875, -0.5, 0.5, 0.5, 0.5}, + } + } + +local cross4 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.25, 0.5, 0.5, 0.5}, + {0.1875, -0.5, -0.5, 0.5, -0.1875, 0.5}, + {-0.5, -0.5, -0.5, -0.1875, -0.1875, 0.5}, + {-0.5, 0.1875, -0.5, -0.1875, 0.5, 0.5}, + {0.1875, 0.1875, -0.5, 0.5, 0.5, 0.5}, + } + } + +local chis1 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.5}, + {-0.4375, -0.4375, -0.5, 0.4375, 0.4375, 0.5}, + } + } + +local chis2 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.375, 0.5, 0.5, 0.5}, + {-0.375, -0.375, -0.5, 0.375, 0.375, 0.5}, + {-0.4375, -0.4375, -0.4375, 0.4375, 0.4375, 0.5}, + } + } + +local chis3 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, + {-0.375, -0.375, -0.4375, 0.375, 0.375, 0.5}, + {-0.4375, -0.4375, -0.375, 0.4375, 0.4375, 0.5}, + {-0.3125, -0.3125, -0.5, 0.3125, 0.3125, 0.5}, + } + } + +local chis4 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.25, 0.5, 0.5, 0.5}, + {-0.375, -0.375, -0.375, 0.375, 0.375, 0.5}, + {-0.4375, -0.4375, -0.3125, 0.4375, 0.4375, 0.5}, + {-0.3125, -0.3125, -0.4375, 0.3125, 0.3125, 0.5}, + {-0.25, -0.25, -0.5, 0.25, 0.25, 0.5}, + } + } + +local squar1 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.4375}, + {0.3125, -0.5, -0.5, 0.5, 0.5, -0.4375}, + {-0.5, -0.5, -0.5, 0.5, -0.3125, -0.4375}, + {-0.5, 0.3125, -0.5, 0.5, 0.5, -0.4375}, + } + } + +local squar2 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.375, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.375}, + {0.3125, -0.5, -0.5, 0.5, 0.5, -0.375}, + {-0.5, -0.5, -0.5, 0.5, -0.3125, -0.375}, + {-0.5, 0.3125, -0.5, 0.5, 0.5, -0.375}, + } + } + +local squar3 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.3125}, + {0.3125, -0.5, -0.5, 0.5, 0.5, -0.3125}, + {-0.5, -0.5, -0.5, 0.5, -0.3125, -0.3125}, + {-0.5, 0.3125, -0.5, 0.5, 0.5, -0.3125}, + } + } + +local squar4 = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.25, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.25}, + {0.3125, -0.5, -0.5, 0.5, 0.5, -0.25}, + {-0.5, -0.5, -0.5, 0.5, -0.3125, -0.25}, + {-0.5, 0.3125, -0.5, 0.5, 0.5, -0.25}, + } + } + +local default_material = { + {"default:cobble", "default_cobble", "Cobble", {cracky = 3, not_in_creative_inventory=1}}, + {"default:sandstone","default_sandstone", "Sandstone", {crumbly=2, not_in_creative_inventory=1}}, + {"default:clay","default_clay", "Clay", {crumbly=3, not_in_creative_inventory=1}}, + {"default:coalblock","default_coal_block", "Coal Block", {cracky = 3, not_in_creative_inventory=1}}, + {"default:stone","default_stone", "Stone", {cracky = 3, not_in_creative_inventory=1}}, + {"default:desert_stone","default_desert_stone", "Desert Stone", {cracky = 3, not_in_creative_inventory=1}}, + {"default:wood","default_wood", "Wood", {choppy=2, not_in_creative_inventory=1}}, + {"default:acacia_wood","default_acacia_wood", "Acacia Wood", {choppy=2, not_in_creative_inventory=1}}, + {"default:aspen_wood","default_aspen_wood", "Aspen Wood", {choppy=2, not_in_creative_inventory=1}}, + {"default:pine_wood","default_pine_wood", "Pine Wood", {choppy=2, not_in_creative_inventory=1}}, + {"default:desert_cobble","default_desert_cobble", "Desert Cobble", {cracky = 3, not_in_creative_inventory=1}}, + {"default:junglewood","default_junglewood", "Jungle Wood", {choppy=2, not_in_creative_inventory=1}}, + {"default:sandstonebrick","default_sandstone_brick", "Sandstone Brick", {cracky = 2, not_in_creative_inventory=1}}, + {"default:stonebrick","default_stone_brick", "Stone Brick", {cracky = 2, not_in_creative_inventory=1}}, + {"default:desert_stonebrick","default_desert_stone_brick", "Desert Stone Brick", {cracky = 2, not_in_creative_inventory=1}}, + } + +for i in ipairs (default_material) do + local item = default_material [i][1] + local mat = default_material [i][2] + local desc = default_material [i][3] + local gro = default_material [i][4] + +minetest.register_node("mychisel:vertical_"..mat.."1", { + description = "Vertical "..desc.."1", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_vtint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = vert1, + selection_box = vert1, + on_place = minetest.rotate_node, +}) + +minetest.register_node("mychisel:vertical_"..mat.."2", { + description = "Vertical "..desc.."2", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_vtint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = vert2, + selection_box = vert2 +}) + +minetest.register_node("mychisel:vertical_"..mat.."3", { + description = "Vertical "..desc.."3", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_vtint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = vert3, + selection_box = vert3 +}) + +minetest.register_node("mychisel:vertical_"..mat.."4", { + description = "Vertical "..desc.."4", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_vtint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = vert4, + selection_box = vert4 +}) + +minetest.register_node("mychisel:chiseled_"..mat.."1", { + description = "Chiseled"..desc.."1", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint1.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = chis1, + selection_box = chis1, +}) + +minetest.register_node("mychisel:chiseled_"..mat.."2", { + description = "Chiseled"..desc.."2", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint2.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = chis2, + selection_box = chis2 +}) + +minetest.register_node("mychisel:chiseled_"..mat.."3", { + description = "Chiseled"..desc.."3", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint3.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = chis3, + selection_box = chis3 +}) + +minetest.register_node("mychisel:chiseled_"..mat.."4", { + description = "Chiseled"..desc.."4", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint4.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = chis4, + selection_box = chis4 +}) + +minetest.register_node("mychisel:horizontal_"..mat.."1", { + description = "Horizontal "..desc.."1", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_htint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = hori1, + selection_box = hori1 +}) + +minetest.register_node("mychisel:horizontal_"..mat.."2", { + description = "Horizontal"..desc.."2", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_htint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = hori2, + selection_box = hori2 +}) + +minetest.register_node("mychisel:horizontal_"..mat.."3", { + description = "Horizontal"..desc.."3", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_htint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = hori3, + selection_box = hori3 +}) + +minetest.register_node("mychisel:horizontal_"..mat.."4", { + description = "Horizontal"..desc.."4", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_htint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = hori4, + selection_box = hori4 +}) + +minetest.register_node("mychisel:cross_"..mat.."1", { + description = "cross "..desc.."1", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = cross1, + selection_box = cross1 +}) + +minetest.register_node("mychisel:cross_"..mat.."2", { + description = "cross"..desc.."2", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = cross2, + selection_box = cross2 +}) + +minetest.register_node("mychisel:cross_"..mat.."3", { + description = "cross"..desc.."3", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = cross3, + selection_box = cross3 +}) + +minetest.register_node("mychisel:cross_"..mat.."4", { + description = "cross"..desc.."4", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_ctint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = cross4, + selection_box = cross4 +}) + +minetest.register_node("mychisel:square_"..mat.."1", { + description = "cross "..desc.."1", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_stint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = squar1, + selection_box = squar1 +}) + +minetest.register_node("mychisel:square_"..mat.."2", { + description = "cross"..desc.."2", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_stint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = squar2, + selection_box = squar2 +}) + +minetest.register_node("mychisel:square_"..mat.."3", { + description = "cross"..desc.."3", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_stint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = squar3, + selection_box = squar3 +}) + +minetest.register_node("mychisel:square_"..mat.."4", { + description = "cross"..desc.."4", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", mat..".png", mat..".png", + mat..".png^mychisel_stint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = squar4, + selection_box = squar4 + +}) + +minetest.register_node("mychisel:square_"..mat.."4", { + description = "cross"..desc.."4", + drawtype = "nodebox", + tiles = { + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png", + mat..".png^mychisel_stint.png", + }, + paramtype = "light", + paramtype2 = "facedir", + drop = item, + groups = gro, + node_box = squar4, + selection_box = squar4 + +}) + +minetest.register_node("mychisel:chisel_deco", { + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + tiles = { + "default_steel_block.png", + "default_wood.png", + "mychisel_chisel.png", + "mychisel_chisel.png", + "mychisel_chisel.png", + "mychisel_chisel.png" + }, + groups = { + snappy=3, + flammable=2, + not_in_creative_inventory=1 + }, + node_box = { + type = "fixed", + fixed = { + {-0.125, -0.5, -0.125, 0.125, 0.25, 0.125}, -- NodeBox1 + {-0.1875, 0.25, -0.1875, 0.1875, 0.5, 0.1875}, -- NodeBox2 + } + }, + sounds = default.node_sound_wood_defaults(), + on_dig = function(pos, node, digger) + if digger:is_player() and digger:get_inventory() then + local meta = minetest.env:get_meta(pos) + local wear_out = meta:get_int("wear") + digger:get_inventory():add_item("main", {name="mychisel:chisel", count=1, wear=wear_out, metadata=""}) + end + minetest.remove_node(pos) + end, +}) + +end diff --git a/mods/mychisel/nodes.lua.diff b/mods/mychisel/nodes.lua.diff new file mode 100644 index 0000000..eb01855 --- /dev/null +++ b/mods/mychisel/nodes.lua.diff @@ -0,0 +1,55 @@ +591a592,609 +> mat..".png", mat..".png", mat..".png", +> mat..".png^mychisel_stint.png", +> }, +> paramtype = "light", +> paramtype2 = "facedir", +> drop = item, +> groups = gro, +> node_box = squar4, +> selection_box = squar4 +> +> }) +> +> minetest.register_node("mychisel:square_"..mat.."4", { +> description = "cross"..desc.."4", +> drawtype = "nodebox", +> tiles = { +> mat..".png", +> mat..".png", +603a622,656 +> }) +> +> minetest.register_node("mychisel:chisel_deco", { +> drawtype = "nodebox", +> paramtype = "light", +> paramtype2 = "facedir", +> tiles = { +> "default_steel_block.png", +> "default_wood.png", +> "mychisel_chisel.png", +> "mychisel_chisel.png", +> "mychisel_chisel.png", +> "mychisel_chisel.png" +> }, +> groups = { +> snappy=3, +> flammable=2, +> not_in_creative_inventory=1 +> }, +> node_box = { +> type = "fixed", +> fixed = { +> {-0.125, -0.5, -0.125, 0.125, 0.25, 0.125}, -- NodeBox1 +> {-0.1875, 0.25, -0.1875, 0.1875, 0.5, 0.1875}, -- NodeBox2 +> } +> }, +> sounds = default.node_sound_wood_defaults(), +> on_dig = function(pos, node, digger) +> if digger:is_player() and digger:get_inventory() then +> local meta = minetest.env:get_meta(pos) +> local wear_out = meta:get_int("wear") +> digger:get_inventory():add_item("main", {name="mychisel:chisel", count=1, wear=wear_out, metadata=""}) +> end +> minetest.remove_node(pos) +> end, diff --git a/mods/mychisel/screenshot.png b/mods/mychisel/screenshot.png new file mode 100644 index 0000000..74f679e Binary files /dev/null and b/mods/mychisel/screenshot.png differ diff --git a/mods/mychisel/textures/default_steel_block.png b/mods/mychisel/textures/default_steel_block.png new file mode 100644 index 0000000..8a5c885 Binary files /dev/null and b/mods/mychisel/textures/default_steel_block.png differ diff --git a/mods/mychisel/textures/default_wood.png b/mods/mychisel/textures/default_wood.png new file mode 100644 index 0000000..1e1660d Binary files /dev/null and b/mods/mychisel/textures/default_wood.png differ diff --git a/mods/mychisel/textures/mychisel_chisel.png b/mods/mychisel/textures/mychisel_chisel.png new file mode 100644 index 0000000..5c7cdfc Binary files /dev/null and b/mods/mychisel/textures/mychisel_chisel.png differ diff --git a/mods/mychisel/textures/mychisel_ctint.png b/mods/mychisel/textures/mychisel_ctint.png new file mode 100644 index 0000000..3cb7ab7 Binary files /dev/null and b/mods/mychisel/textures/mychisel_ctint.png differ diff --git a/mods/mychisel/textures/mychisel_ctint1.png b/mods/mychisel/textures/mychisel_ctint1.png new file mode 100644 index 0000000..42c3138 Binary files /dev/null and b/mods/mychisel/textures/mychisel_ctint1.png differ diff --git a/mods/mychisel/textures/mychisel_ctint2.png b/mods/mychisel/textures/mychisel_ctint2.png new file mode 100644 index 0000000..4073339 Binary files /dev/null and b/mods/mychisel/textures/mychisel_ctint2.png differ diff --git a/mods/mychisel/textures/mychisel_ctint3.png b/mods/mychisel/textures/mychisel_ctint3.png new file mode 100644 index 0000000..54c5bf0 Binary files /dev/null and b/mods/mychisel/textures/mychisel_ctint3.png differ diff --git a/mods/mychisel/textures/mychisel_ctint4.png b/mods/mychisel/textures/mychisel_ctint4.png new file mode 100644 index 0000000..7c90b1b Binary files /dev/null and b/mods/mychisel/textures/mychisel_ctint4.png differ diff --git a/mods/mychisel/textures/mychisel_htint.png b/mods/mychisel/textures/mychisel_htint.png new file mode 100644 index 0000000..ef4a9d1 Binary files /dev/null and b/mods/mychisel/textures/mychisel_htint.png differ diff --git a/mods/mychisel/textures/mychisel_parti.png b/mods/mychisel/textures/mychisel_parti.png new file mode 100644 index 0000000..9350e67 Binary files /dev/null and b/mods/mychisel/textures/mychisel_parti.png differ diff --git a/mods/mychisel/textures/mychisel_stint.png b/mods/mychisel/textures/mychisel_stint.png new file mode 100644 index 0000000..a97b999 Binary files /dev/null and b/mods/mychisel/textures/mychisel_stint.png differ diff --git a/mods/mychisel/textures/mychisel_vtint.png b/mods/mychisel/textures/mychisel_vtint.png new file mode 100644 index 0000000..f466f56 Binary files /dev/null and b/mods/mychisel/textures/mychisel_vtint.png differ diff --git a/mods/plants_lib/depends.txt b/mods/plants_lib/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/plants_lib/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/plants_lib/init.lua b/mods/plants_lib/init.lua new file mode 100644 index 0000000..604f2ef --- /dev/null +++ b/mods/plants_lib/init.lua @@ -0,0 +1,433 @@ +-- Plantlife library mod by Vanessa Ezekowitz +-- last revision, 2013-01-24 +-- +-- License: WTFPL +-- +-- I got the temperature map idea from "hmmmm", values used for it came from +-- Splizard's snow mod. +-- + +-- Various settings - most of these probably won't need to be changed + +plantslib = {} + +local DEBUG = false --... except if you want to spam the console with debugging info :-) + +plantslib.plantlife_seed_diff = 329 -- needs to be global so other mods can see it + +local perlin_octaves = 3 +local perlin_persistence = 0.6 +local perlin_scale = 100 + +local temperature_seeddiff = 112 +local temperature_octaves = 3 +local temperature_persistence = 0.5 +local temperature_scale = 150 + +local humidity_seeddiff = 9130 +local humidity_octaves = 3 +local humidity_persistence = 0.5 +local humidity_scale = 250 + +--PerlinNoise(seed, octaves, persistence, scale) + +plantslib.perlin_temperature = PerlinNoise(temperature_seeddiff, temperature_octaves, temperature_persistence, temperature_scale) +plantslib.perlin_humidity = PerlinNoise(humidity_seeddiff, humidity_octaves, humidity_persistence, humidity_scale) + +-- Local functions + +math.randomseed(os.time()) + +function plantslib:is_node_loaded(node_pos) + n = minetest.env:get_node_or_nil(node_pos) + if (not n) or (n.name == "ignore") then + return false + end + return true +end + +function plantslib:dbg(msg) + if DEBUG then + print("[Plantlife] "..msg) + minetest.log("verbose", "[Plantlife] "..msg) + end +end + +function plantslib:set_defaults(biome) + biome.seed_diff = biome.seed_diff or 0 + biome.min_elevation = biome.min_elevation or -31000 + biome.max_elevation = biome.max_elevation or 31000 + biome.temp_min = biome.temp_min or 1 + biome.temp_max = biome.temp_max or -1 + biome.humidity_min = biome.humidity_min or 1 + biome.humidity_max = biome.humidity_max or -1 + biome.plantlife_limit = biome.plantlife_limit or 0.1 + biome.near_nodes_vertical = biome.near_nodes_vertical or 1 + +-- specific to on-generate + + biome.neighbors = biome.neighbors or biome.surface + biome.near_nodes_size = biome.near_nodes_size or 0 + biome.near_nodes_count = biome.near_nodes_count or 1 + biome.rarity = biome.rarity or 50 + biome.max_count = biome.max_count or 5 + if biome.check_air ~= false then biome.check_air = true end + +-- specific to abm spawner + biome.seed_diff = biome.seed_diff or 0 + biome.light_min = biome.light_min or 0 + biome.light_max = biome.light_max or 15 + biome.depth_max = biome.depth_max or 1 + biome.facedir = biome.facedir or 0 +end + +-- Spawn plants using the map generator + +function plantslib:register_generate_plant(biomedef, node_or_function_or_model) + plantslib:dbg("Registered mapgen spawner:") + plantslib:dbg(dump(biomedef)) + + minetest.register_on_generated(plantslib:search_for_surfaces(minp, maxp, biomedef, node_or_function_or_model)) +end + +function plantslib:search_for_surfaces(minp, maxp, biomedef, node_or_function_or_model) + return function(minp, maxp, blockseed) + + local biome = biomedef + plantslib:set_defaults(biome) + + plantslib:dbg("Started checking generated mapblock volume...") + local searchnodes = minetest.env:find_nodes_in_area(minp, maxp, biome.surface) + local in_biome_nodes = {} + local num_in_biome_nodes = 0 + for i in ipairs(searchnodes) do + local pos = searchnodes[i] + local p_top = { x = pos.x, y = pos.y + 1, z = pos.z } + local perlin1 = minetest.env:get_perlin(biome.seed_diff, perlin_octaves, perlin_persistence, perlin_scale) + local noise1 = perlin1:get2d({x=p_top.x, y=p_top.z}) + local noise2 = plantslib.perlin_temperature:get2d({x=p_top.x, y=p_top.z}) + local noise3 = plantslib.perlin_humidity:get2d({x=p_top.x+150, y=p_top.z+50}) + if (not biome.depth or minetest.env:get_node({ x = pos.x, y = pos.y-biome.depth-1, z = pos.z }).name ~= biome.surface) + and (not biome.check_air or (biome.check_air and minetest.env:get_node(p_top).name == "air")) + and pos.y >= biome.min_elevation + and pos.y <= biome.max_elevation + and noise1 > biome.plantlife_limit + and noise2 <= biome.temp_min + and noise2 >= biome.temp_max + and noise3 <= biome.humidity_min + and noise3 >= biome.humidity_max + and (not biome.ncount or table.getn(minetest.env:find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, biome.neighbors)) > biome.ncount) + and (not biome.near_nodes or table.getn(minetest.env:find_nodes_in_area({x=pos.x-biome.near_nodes_size, y=pos.y-biome.near_nodes_vertical, z=pos.z-biome.near_nodes_size}, {x=pos.x+biome.near_nodes_size, y=pos.y+biome.near_nodes_vertical, z=pos.z+biome.near_nodes_size}, biome.near_nodes)) >= biome.near_nodes_count) + and math.random(1,100) > biome.rarity + and (not biome.below_nodes or string.find(dump(biome.below_nodes), minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name) ) + then + table.insert(in_biome_nodes, pos) + num_in_biome_nodes = num_in_biome_nodes + 1 + end + end + + plantslib:dbg("Found "..num_in_biome_nodes.." surface nodes of type(s) "..dump(biome.surface).." in 5x5x5 mapblock volume at {"..dump(minp)..":"..dump(maxp).."} to check.") + + if num_in_biome_nodes > 0 then + plantslib:dbg("Calculated maximum of "..math.min(biome.max_count*3, num_in_biome_nodes).." nodes to be checked in that list.") + for i = 1, math.min(biome.max_count, num_in_biome_nodes) do + local tries = 0 + local spawned = false + while tries < 2 and not spawned do + local pos = in_biome_nodes[math.random(1, num_in_biome_nodes)] + if biome.spawn_replace_node then + pos.y = pos.y-1 + end + local p_top = { x = pos.x, y = pos.y + 1, z = pos.z } + if not(biome.avoid_radius and biome.avoid_nodes) or not minetest.env:find_node_near(p_top, biome.avoid_radius + math.random(-1.5,1.5), biome.avoid_nodes) then + spawned = true + if biome.delete_above then + minetest.env:remove_node(p_top) + minetest.env:remove_node({x=p_top.x, y=p_top.y+1, z=p_top.z}) + end + + if biome.delete_above_surround then + minetest.env:remove_node({x=p_top.x-1, y=p_top.y, z=p_top.z}) + minetest.env:remove_node({x=p_top.x+1, y=p_top.y, z=p_top.z}) + minetest.env:remove_node({x=p_top.x, y=p_top.y, z=p_top.z-1}) + minetest.env:remove_node({x=p_top.x, y=p_top.y, z=p_top.z+1}) + + minetest.env:remove_node({x=p_top.x-1, y=p_top.y+1, z=p_top.z}) + minetest.env:remove_node({x=p_top.x+1, y=p_top.y+1, z=p_top.z}) + minetest.env:remove_node({x=p_top.x, y=p_top.y+1, z=p_top.z-1}) + minetest.env:remove_node({x=p_top.x, y=p_top.y+1, z=p_top.z+1}) + end + + if biome.spawn_replace_node then + minetest.env:remove_node(pos) + end + + if type(node_or_function_or_model) == "table" then + plantslib:dbg("Spawn tree at {"..dump(pos).."}") + plantslib:generate_tree(pos, node_or_function_or_model) + + elseif type(node_or_function_or_model) == "string" then + if not minetest.registered_nodes[node_or_function_or_model] then + plantslib:dbg("Call function: "..node_or_function_or_model.."("..dump(pos)..")") + assert(loadstring(node_or_function_or_model.."("..dump(pos)..")"))() + else + plantslib:dbg("Add node: "..node_or_function_or_model.." at ("..dump(p_top)..")") + minetest.env:add_node(p_top, { name = node_or_function_or_model }) + end + end + else + tries = tries + 1 + plantslib:dbg("No room to spawn object at {"..dump(pos).."} -- trying again elsewhere") + end + end + if tries == 2 then + plantslib:dbg("Unable to spawn that object. Giving up on it.") + end + end + end + plantslib:dbg("Finished checking generated area.") + end +end + +-- The spawning ABM + +function plantslib:spawn_on_surfaces(sd,sp,sr,sc,ss,sa) + + local biome = {} + + if type(sd) ~= "table" then + biome.spawn_delay = sd -- old api expects ABM interval param here. + biome.spawn_plants = {sp} + biome.avoid_radius = sr + biome.spawn_chance = sc + biome.spawn_surfaces = {ss} + biome.avoid_nodes = sa + else + biome = sd + end + + plantslib:set_defaults(biome) + biome.spawn_plants_count = table.getn(biome.spawn_plants) + + plantslib:dbg("Registered spawning ABM:") + plantslib:dbg(dump(biome)) + plantslib:dbg("Number of trigger nodes in this ABM: "..biome.spawn_plants_count ) + + minetest.register_abm({ + nodenames = biome.spawn_surfaces, + interval = biome.spawn_delay, + chance = biome.spawn_chance, + neighbors = biome.neighbors, + action = function(pos, node, active_object_count, active_object_count_wider) + local p_top = { x = pos.x, y = pos.y + 1, z = pos.z } + local n_top = minetest.env:get_node(p_top) + local perlin1 = minetest.env:get_perlin(biome.seed_diff, perlin_octaves, perlin_persistence, perlin_scale) + local noise1 = perlin1:get2d({x=p_top.x, y=p_top.z}) + local noise2 = plantslib.perlin_temperature:get2d({x=p_top.x, y=p_top.z}) + local noise3 = plantslib.perlin_humidity:get2d({x=p_top.x+150, y=p_top.z+50}) + if noise1 > biome.plantlife_limit + and noise2 <= biome.temp_min + and noise2 >= biome.temp_max + and noise3 <= biome.humidity_min + and noise3 >= biome.humidity_max + and plantslib:is_node_loaded(p_top) then + local n_light = minetest.env:get_node_light(p_top, nil) + if (not(biome.avoid_nodes and biome.avoid_radius) or not minetest.env:find_node_near(p_top, biome.avoid_radius + math.random(-1.5,2), biome.avoid_nodes)) + and n_light >= biome.light_min + and n_light <= biome.light_max + and (not(biome.neighbors and biome.ncount) or table.getn(minetest.env:find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, biome.neighbors)) > biome.ncount ) + and (not(biome.near_nodes and biome.near_nodes_count and biome.near_nodes_size) or table.getn(minetest.env:find_nodes_in_area({x=pos.x-biome.near_nodes_size, y=pos.y-biome.near_nodes_vertical, z=pos.z-biome.near_nodes_size}, {x=pos.x+biome.near_nodes_size, y=pos.y+biome.near_nodes_vertical, z=pos.z+biome.near_nodes_size}, biome.near_nodes)) >= biome.near_nodes_count) + and (not(biome.air_count and biome.air_size) or table.getn(minetest.env:find_nodes_in_area({x=p_top.x-biome.air_size, y=p_top.y, z=p_top.z-biome.air_size}, {x=p_top.x+biome.air_size, y=p_top.y, z=p_top.z+biome.air_size}, "air")) >= biome.air_count) + and pos.y >= biome.min_elevation + and pos.y <= biome.max_elevation + then + local walldir = plantslib:find_adjacent_wall(p_top, biome.verticals_list) + if biome.alt_wallnode and walldir then + if n_top.name == "air" then + plantslib:dbg("Spawn: "..biome.alt_wallnode.." on top of ("..dump(pos)..") against wall "..walldir) + minetest.env:add_node(p_top, { name = biome.alt_wallnode, param2 = walldir }) + end + else + local currentsurface = minetest.env:get_node(pos).name + if currentsurface ~= "default:water_source" + or (currentsurface == "default:water_source" and table.getn(minetest.env:find_nodes_in_area({x=pos.x, y=pos.y-biome.depth_max-1, z=pos.z}, {x=pos.x, y=pos.y, z=pos.z}, {"default:dirt", "default:dirt_with_grass", "default:sand"})) > 0 ) + then + local rnd = math.random(1, biome.spawn_plants_count) + local plant_to_spawn = biome.spawn_plants[rnd] + plantslib:dbg("Chose entry number "..rnd.." of "..biome.spawn_plants_count) + local fdir = biome.facedir + if biome.random_facedir then + fdir = math.random(biome.random_facedir[1],biome.random_facedir[2]) + plantslib:dbg("Gave it a random facedir: "..fdir) + end + if type(spawn_plants) == "string" then + plantslib:dbg("Call function: "..spawn_plants.."("..dump(pos)..")") + assert(loadstring(spawn_plants.."("..dump(pos)..")"))() + elseif not biome.spawn_on_side and not biome.spawn_on_bottom and not biome.spawn_replace_node then + if n_top.name == "air" then + plantslib:dbg("Spawn: "..plant_to_spawn.." on top of ("..dump(pos).."); facedir="..fdir) + minetest.env:add_node(p_top, { name = plant_to_spawn, param2 = fdir }) + end + elseif biome.spawn_replace_node then + + plantslib:dbg("Spawn: "..plant_to_spawn.." to replace "..minetest.env:get_node(pos).name.." at ("..dump(pos)..")") + minetest.env:add_node(pos, { name = plant_to_spawn, param2 = fdir }) + + elseif biome.spawn_on_side then + local onside = plantslib:find_open_side(pos) + if onside then + plantslib:dbg("Spawn: "..plant_to_spawn.." at side of ("..dump(pos).."), facedir "..onside.facedir.."") + minetest.env:add_node(onside.newpos, { name = plant_to_spawn, param2 = onside.facedir }) + end + elseif biome.spawn_on_bottom then + if minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "air" then + plantslib:dbg("Spawn: "..plant_to_spawn.." on bottom of ("..dump(pos)..")") + minetest.env:add_node({x=pos.x, y=pos.y-1, z=pos.z}, { name = plant_to_spawn, param2 = fdir} ) + end + end + end + end + end + end + end + }) +end + +-- The growing ABM + +function plantslib:grow_plants(opts) + + local options = opts + + options.height_limit = options.height_limit or 5 + options.ground_nodes = options.ground_nodes or { "default:dirt_with_grass" } + options.grow_nodes = options.grow_nodes or { "default:dirt_with_grass" } + options.seed_diff = options.seed_diff or 0 + + plantslib:dbg("Registered growing ABM:") + plantslib:dbg(dump(options)) + + minetest.register_abm({ + nodenames = { options.grow_plant }, + interval = options.grow_delay, + chance = options.grow_chance, + action = function(pos, node, active_object_count, active_object_count_wider) + local p_top = {x=pos.x, y=pos.y+1, z=pos.z} + local p_bot = {x=pos.x, y=pos.y-1, z=pos.z} + local n_top = minetest.env:get_node(p_top) + local n_bot = minetest.env:get_node(p_bot) + local root_node = minetest.env:get_node({x=pos.x, y=pos.y-options.height_limit, z=pos.z}) + local walldir = nil + if options.need_wall and options.verticals_list then + walldir = plantslib:find_adjacent_wall(p_top, options.verticals_list) + end + if n_top.name == "air" and (not options.need_wall or (options.need_wall and walldir)) + then + -- corner case for changing short junglegrass + -- to dry shrub in desert + if n_bot.name == options.dry_early_node and options.grow_plant == "junglegrass:short" then + plantslib:dbg("Die: "..options.grow_plant.." becomes default:dry_shrub at ("..dump(pos)..")") + minetest.env:add_node(pos, { name = "default:dry_shrub" }) + + elseif options.grow_vertically and walldir then + if plantslib:search_downward(pos, options.height_limit, options.ground_nodes) then + plantslib:dbg("Grow "..options.grow_plant.." vertically to "..dump(p_top)) + minetest.env:add_node(p_top, { name = options.grow_plant, param2 = walldir}) + end + + elseif not options.grow_result and not options.grow_function then + plantslib:dbg("Die: "..options.grow_plant.." at ("..dump(pos)..")") + minetest.env:remove_node(pos) + + else + plantslib:replace_object(pos, options.grow_result, options.grow_function, options.facedir, options.seed_diff) + end + end + end + }) +end + +-- Function to decide how to replace a plant - either grow it, replace it with +-- a tree, run a function, or die with an error. + +function plantslib:replace_object(pos, replacement, grow_function, walldir, seeddiff) + local growtype = type(grow_function) + plantslib:dbg("replace_object called, growtype="..dump(grow_function)) + if growtype == "table" then + plantslib:dbg("Grow: spawn tree at "..dump(pos)) + minetest.env:remove_node(pos) + plantslib:grow_tree(pos, grow_function) + return + elseif growtype == "string" then + local perlin1 = minetest.env:get_perlin(seeddiff, perlin_octaves, perlin_persistence, perlin_scale) + local noise1 = perlin1:get2d({x=pos.x, y=pos.z}) + local noise2 = plantslib.perlin_temperature:get2d({x=pos.x, y=pos.z}) + plantslib:dbg("Grow: call function "..grow_function.."("..dump(pos)..","..noise1..","..noise2..","..dump(walldir)..")") + assert(loadstring(grow_function.."("..dump(pos)..","..noise1..","..noise2..","..dump(walldir)..")"))() + return + elseif growtype == "nil" then + plantslib:dbg("Grow: place "..replacement.." at ("..dump(pos)..") on wall "..dump(walldir)) + minetest.env:add_node(pos, { name = replacement, param2 = walldir}) + return + elseif growtype ~= "nil" and growtype ~= "string" and growtype ~= "table" then + error("Invalid grow function "..dump(grow_function).." used on object at ("..dump(pos)..")") + end +end + +-- function to decide if a node has a wall that's in verticals_list{} +-- returns wall direction of valid node, or nil if invalid. + +function plantslib:find_adjacent_wall(pos, verticals) + local verts = dump(verticals) + if string.find(verts, minetest.env:get_node({ x=pos.x-1, y=pos.y, z=pos.z }).name) then return 3 end + if string.find(verts, minetest.env:get_node({ x=pos.x+1, y=pos.y, z=pos.z }).name) then return 2 end + if string.find(verts, minetest.env:get_node({ x=pos.x , y=pos.y, z=pos.z-1 }).name) then return 5 end + if string.find(verts, minetest.env:get_node({ x=pos.x , y=pos.y, z=pos.z+1 }).name) then return 4 end + return nil +end + +-- Function to search downward from the given position, looking for the first +-- node that matches the ground table. Returns the new position, or nil if +-- height limit is exceeded before finding it. + +function plantslib:search_downward(pos, heightlimit, ground) + for i = 0, heightlimit do + if string.find(dump(ground), minetest.env:get_node({x=pos.x, y=pos.y-i, z = pos.z}).name) then + return {x=pos.x, y=pos.y-i, z = pos.z} + end + end + return false +end + +function plantslib:find_open_side(pos) + if minetest.env:get_node({ x=pos.x-1, y=pos.y, z=pos.z }).name == "air" then + return {newpos = { x=pos.x-1, y=pos.y, z=pos.z }, facedir = 2} + end + if minetest.env:get_node({ x=pos.x+1, y=pos.y, z=pos.z }).name == "air" then + return {newpos = { x=pos.x+1, y=pos.y, z=pos.z }, facedir = 3} + end + if minetest.env:get_node({ x=pos.x, y=pos.y, z=pos.z-1 }).name == "air" then + return {newpos = { x=pos.x, y=pos.y, z=pos.z-1 }, facedir = 4} + end + if minetest.env:get_node({ x=pos.x, y=pos.y, z=pos.z+1 }).name == "air" then + return {newpos = { x=pos.x, y=pos.y, z=pos.z+1 }, facedir = 5} + end + return nil +end + +-- spawn_tree() on generate is routed through here so that other mods can hook +-- into it. + +function plantslib:generate_tree(pos, node_or_function_or_model) + minetest.env:spawn_tree(pos, node_or_function_or_model) +end + +-- and this one's for the call used in the growing code + +function plantslib:grow_tree(pos, node_or_function_or_model) + minetest.env:spawn_tree(pos, node_or_function_or_model) +end + + + +print("[Plantlife Library] Loaded") diff --git a/mods/player_api/README.txt b/mods/player_api/README.txt new file mode 100644 index 0000000..1f28ad9 --- /dev/null +++ b/mods/player_api/README.txt @@ -0,0 +1,20 @@ +Minetest Game mod: player_api +============================ +See license.txt for license information. + +Provides an API to allow multiple mods to set player models and textures. +Also sets the default model, texture, and player flags. + +Authors of source code +---------------------- +Originally by celeron55, Perttu Ahola (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) + +Authors of media (textures, models and sounds) +---------------------------------------------- + +MirceaKitsune (CC BY-SA 3.0): + character.x + +Jordach (CC BY-SA 3.0): + character.png diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua new file mode 100644 index 0000000..00fa2ae --- /dev/null +++ b/mods/player_api/api.lua @@ -0,0 +1,135 @@ +-- Minetest 0.4 mod: player +-- See README.txt for licensing and other information. + +player_api = {} + +-- Player animation blending +-- Note: This is currently broken due to a bug in Irrlicht, leave at 0 +local animation_blend = 0 + +player_api.registered_models = { } + +-- Local for speed. +local models = player_api.registered_models + +function player_api.register_model(name, def) + models[name] = def +end + +-- Player stats and animations +local player_model = {} +local player_textures = {} +local player_anim = {} +local player_sneak = {} +player_api.player_attached = {} + +function player_api.get_animation(player) + local name = player:get_player_name() + return { + model = player_model[name], + textures = player_textures[name], + animation = player_anim[name], + } +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() + local model = models[model_name] + if model then + if player_model[name] == model_name then + return + end + player:set_properties({ + mesh = model_name, + textures = player_textures[name] or model.textures, + visual = "mesh", + visual_size = model.visual_size or {x=1, y=1}, + collisionbox = model.collisionbox or {-0.3, 0.0, -0.3, 0.3, 1.77, 0.3}, + }) + player_api.set_animation(player, "stand") + else + player:set_properties({ + textures = { "player.png", "player_back.png", }, + visual = "upright_sprite", + collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.75, 0.3}, + }) + end + player_model[name] = model_name +end + +function player_api.set_textures(player, textures) + local name = player:get_player_name() + local model = models[player_model[name]] + local model_textures = model and model.textures or nil + player_textures[name] = textures or model_textures + player:set_properties({textures = textures or model_textures,}) +end + +function player_api.set_animation(player, anim_name, speed) + local name = player:get_player_name() + if player_anim[name] == anim_name then + return + end + local model = player_model[name] and models[player_model[name]] + if not (model and model.animations[anim_name]) then + return + end + local anim = model.animations[anim_name] + player_anim[name] = anim_name + player:set_animation(anim, speed or model.animation_speed, animation_blend) +end + +minetest.register_on_leaveplayer(function(player) + local name = player:get_player_name() + player_model[name] = nil + player_anim[name] = nil + player_textures[name] = nil +end) + +-- Localize for better performance. +local player_set_animation = player_api.set_animation +local player_attached = player_api.player_attached + +-- Check each player and apply animations +minetest.register_globalstep(function(dtime) + for _, player in pairs(minetest.get_connected_players()) do + local name = player:get_player_name() + local model_name = player_model[name] + local model = model_name and models[model_name] + if model and not player_attached[name] then + local controls = player:get_player_control() + local walking = false + local animation_speed_mod = model.animation_speed or 30 + + -- Determine if the player is walking + if controls.up or controls.down or controls.left or controls.right then + walking = true + end + + -- Determine if the player is sneaking, and reduce animation speed if so + if controls.sneak then + animation_speed_mod = animation_speed_mod / 2 + end + + -- Apply animations based on what the player is doing + if player:get_hp() == 0 then + player_set_animation(player, "lay") + elseif walking then + if player_sneak[name] ~= controls.sneak then + player_anim[name] = nil + player_sneak[name] = controls.sneak + end + if controls.LMB then + player_set_animation(player, "walk_mine", animation_speed_mod) + else + player_set_animation(player, "walk", animation_speed_mod) + end + elseif controls.LMB then + player_set_animation(player, "mine") + else + player_set_animation(player, "stand", animation_speed_mod) + end + end + end +end) diff --git a/mods/player_api/init.lua b/mods/player_api/init.lua new file mode 100644 index 0000000..61d43bd --- /dev/null +++ b/mods/player_api/init.lua @@ -0,0 +1,27 @@ +dofile(minetest.get_modpath("player_api") .. "/api.lua") + +-- Default player appearance +player_api.register_model("character.b3d", { + animation_speed = 30, + textures = {"character.png", }, + animations = { + -- Standard animations. + stand = { x= 0, y= 79, }, + lay = { x=162, y=166, }, + walk = { x=168, y=187, }, + mine = { x=189, y=198, }, + walk_mine = { x=200, y=219, }, + sit = { x= 81, y=160, }, + }, + collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.77, 0.3}, +}) + +-- Update appearance when the player joins +minetest.register_on_joinplayer(function(player) + player_api.player_attached[player:get_player_name()] = false + player_api.set_model(player, "character.b3d") + player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30) + + player:hud_set_hotbar_image("gui_hotbar.png") + player:hud_set_hotbar_selected_image("gui_hotbar_selected.png") +end) diff --git a/mods/player_api/models/character.b3d b/mods/player_api/models/character.b3d new file mode 100644 index 0000000..fb693bc Binary files /dev/null and b/mods/player_api/models/character.b3d differ diff --git a/mods/player_api/models/character.blend b/mods/player_api/models/character.blend new file mode 100644 index 0000000..be40608 Binary files /dev/null and b/mods/player_api/models/character.blend differ diff --git a/mods/player_api/models/character.png b/mods/player_api/models/character.png new file mode 100644 index 0000000..0502178 Binary files /dev/null and b/mods/player_api/models/character.png differ diff --git a/mods/player_api/sounds/player_damage.ogg b/mods/player_api/sounds/player_damage.ogg new file mode 100644 index 0000000..7888087 Binary files /dev/null and b/mods/player_api/sounds/player_damage.ogg differ diff --git a/mods/player_api/textures/gui_hotbar.png b/mods/player_api/textures/gui_hotbar.png new file mode 100644 index 0000000..73fb3ca Binary files /dev/null and b/mods/player_api/textures/gui_hotbar.png differ diff --git a/mods/player_api/textures/gui_hotbar_selected.png b/mods/player_api/textures/gui_hotbar_selected.png new file mode 100644 index 0000000..40bafe6 Binary files /dev/null and b/mods/player_api/textures/gui_hotbar_selected.png differ diff --git a/mods/player_api/textures/player.png b/mods/player_api/textures/player.png new file mode 100644 index 0000000..6d61c43 Binary files /dev/null and b/mods/player_api/textures/player.png differ diff --git a/mods/player_api/textures/player_back.png b/mods/player_api/textures/player_back.png new file mode 100644 index 0000000..5e9ef05 Binary files /dev/null and b/mods/player_api/textures/player_back.png differ diff --git a/mods/protector/README.md b/mods/protector/README.md new file mode 100644 index 0000000..93ebbba --- /dev/null +++ b/mods/protector/README.md @@ -0,0 +1,6 @@ +Protector +===================================================================== +Main: gloomie & Zeg9 & TenPlus1 +Lisc: MIT +Text: MIT +Link: https://github.com/tenplus1/protector diff --git a/mods/protector/README.md.diff b/mods/protector/README.md.diff new file mode 100644 index 0000000..25f30c9 --- /dev/null +++ b/mods/protector/README.md.diff @@ -0,0 +1,128 @@ +1,120c1,6 +< Protector Redo mod [protect] +< +< Protector redo for minetest is a mod that protects a players builds by placing +< a block that stops other players from digging or placing blocks in that area. +< +< based on glomie's mod, remade by Zeg9 and rewritten by TenPlus1. +< +< https://forum.minetest.net/viewtopic.php?f=11&t=9376 +< +< Change log: +< +< - 0.1 - Initial release +< - 0.2 - Texture update +< - 0.3 - Added Protection Logo to blend in with player builds +< - 0.4 - Code tweak for 0.4.10+ +< - 0.5 - Added protector.radius variable in init.lua (default: 5) +< - 0.6 - Added Protected Doors (wood and steel) and Protected Chest +< - 0.7 - Protected Chests now have "To Chest" and "To Inventory" buttons to copy +< contents across, also chests can be named +< - 0.8 - Updated to work with Minetest 0.4.12, simplified textures +< - 0.9 - Tweaked code +< - 1.0 - Only owner can remove protector +< - 1.1 - Set 'protector_pvp = true' in minetest.conf to disable pvp in protected +< areas except your own, also setting protector_pvp_spawn higher than 0 will +< disable pvp around spawn area with the radius you entered +< - 1.2 - Shift and click support added with Minetest 0.4.13 to quickly copy stacks +< to and from protected chest +< - 1.3 - Moved protector on_place into node itself, protector zone display changed +< from 10 to 5 seconds, general code tidy +< - 1.4 - Changed protector recipes to give single item instead of 4, added + button +< to interface, tweaked and tidied code, added admin command /delprot to remove +< protectors in bulk from banned/old players +< - 1.5 - Added much requested protected trapdoor +< - 1.6 - Added protector_drop (true or false) and protector_hurt (hurt by this num) +< variables to minetest.conf settings to stop players breaking protected +< areas by dropping tools and hurting player. +< - 1.7 - Included an edited version of WTFPL doors mod since protected doors didn't +< work with the doors mod in the latest daily build... Now it's fine :) +< added support for "protection_bypass" privelage. +< - 1.8 - Added 'protector_flip' setting to stop players using lag to grief into +< another players house, it flips them around to stop them digging. +< - 1.9 - Renamed 'protector_pvp_spawn' setting to 'protector_spawn' which protects +< an area around static spawnpoint and disables pvp if active. +< (note: previous name can still be used) +< - 2.0 - Added protector placement tool (thanks to Shara) so that players can easily +< stand on a protector, face in a direction and it places a new one at a set +< distance to cover protection radius. Added /protector_show command (thanks agaran) +< Protectors and chest cannot be moved by mesecon pistons or machines. +< - 2.1 - Added 'protector_night_pvp' setting so night-time becomes a free for all and +< players can hurt one another even inside protected areas (not spawn protected) +< - 2.2 - Updated protector tool so that player only needs to stand nearby (2 block radius) +< It can also place vertically (up and down) as well. New protector recipe added. +< - 2.3 - Localise many of the protector functions and tidy code. +< - 2.4 - Update to newer functions, Minetest 0.4.16 needed to run now. +< - 2.5 - Added HUD text to show when player is inside a protected area (updates every 5 seconds) +< +< Lucky Blocks: 10 +< +< +< Usage: (requires server privelage) +< +< list names to remove +< +< /protector_remove +< +< remove specific user names +< +< /protector_remove name1 name2 +< +< remove all names from list +< +< /protector_remove - +< +< Whenever a player is near any protectors with name1 or name2 then it will be +< replaced by an air block. +< +< +< show owner name to replace +< +< /protector_replace +< +< replace owner with new name +< +< /protector_replace owner new_owner +< +< reset name list +< +< /protector_replace - +< +< +< show protected areas of your nearby protectors (max of 5) +< /protector_show +< +< +< The following lines can be added to your minetest.conf file to configure specific features of the mod: +< +< protector_radius = 5 +< - Sets the area around each protection node so that other players cannot dig, place or enter through protected doors or chests. +< +< protector_pvp = true +< - true or false this setting disabled pvp inside of protected areas for all players apart from those listed on the protector node. +< +< protector_night_pvp = false +< - when true this setting enables pvp at night time only, even inside protected areas, requires protector_pvp to be active to work. +< +< protector_spawn = 10 +< - Sets an area 10 nodes around static spawnpoint that is protected. +< +< protector_hurt = 2 +< - When set to above 0, players digging in protected areas will be hurt by 2 health points (or whichever number it's set to) +< +< protector_flip = true +< - When true players who dig inside a protected area will flipped around to stop them using lag to grief into someone else's build +< +< +< Protector Tool +< +< Can be crafted with a protector surrounded by steel ingots and is used to place new protectors at a set distance of protector.radius in all directions including up and down simply by looking in a direction. +< +< Use by standing near an existing protector, looking in a direction and using as a tool, hold sneak/shift to place new protector containing member list from inside nearest one. +--- +> Protector +> ===================================================================== +> Main: gloomie & Zeg9 & TenPlus1 +> Lisc: MIT +> Text: MIT +> Link: https://github.com/tenplus1/protector diff --git a/mods/protector/admin.lua b/mods/protector/admin.lua new file mode 100644 index 0000000..e73412c --- /dev/null +++ b/mods/protector/admin.lua @@ -0,0 +1,146 @@ + +local S = protector.intllib + +protector.removal_names = "" +protector.replace_names = "" + +minetest.register_chatcommand("protector_remove", { + params = "", + description = S("Remove Protectors around players (separate names with spaces)"), + privs = {server = true}, + func = function(name, param) + + if not param or param == "" then + + minetest.chat_send_player(name, + "Protector Names to remove: " + .. protector.removal_names) + + return + end + + if param == "-" then + + minetest.chat_send_player(name, + S("Name List Reset")) + + protector.removal_names = "" + + return + end + + protector.removal_names = param + + end, +}) + + +minetest.register_chatcommand("protector_replace", { + params = " ", + description = S("Replace Protector Owner with name provided"), + privs = {server = true}, + func = function(name, param) + + -- reset list to empty + if param == "-" then + + minetest.chat_send_player(name, S("Name List Reset")) + + protector.replace_names = "" + + return + end + + -- show name info + if param == "" + and protector.replace_names ~= "" then + + local names = protector.replace_names:split(" ") + + minetest.chat_send_player(name, + "Replacing Protector name '" .. (names[1] or "") + .. "' with '" .. (names[2] or "").. "'") + + return + end + + protector.replace_names = param + + end, +}) + + +minetest.register_abm({ + nodenames = {"protector:protect", "protector:protect2"}, + interval = 8, + chance = 1, + catch_up = false, + action = function(pos, node) + + if protector.removal_names == "" + and protector.replace_names == "" then + return + end + + local meta = minetest.get_meta(pos) ; if not meta then return end + local owner = meta:get_string("owner") + --local members = meta:get_string("members") + + if protector.removal_names ~= "" then + + local names = protector.removal_names:split(" ") + + for _, n in pairs(names) do + + if n == owner then + minetest.set_node(pos, {name = "air"}) + end + end + end + + if protector.replace_names ~= "" then + + local names = protector.replace_names:split(" ") + + if names[1] and names[2] and owner == names[1] then + + meta:set_string("owner", names[2]) + meta:set_string("infotext", "Protection (owned by " .. names[2] .. ")") + end + + end + end +}) + + +-- show protection areas of nearby protectors owned by you (thanks agaran) +minetest.register_chatcommand("protector_show", { + params = "", + description = "Show protected areas of your nearby protectors", + privs = {}, + func = function(name, param) + + local player = minetest.get_player_by_name(name) + local pos = player:get_pos() + local r = protector.radius -- max protector range. + + -- find the protector nodes + local pos = minetest.find_nodes_in_area( + {x = pos.x - r, y = pos.y - r, z = pos.z - r}, + {x = pos.x + r, y = pos.y + r, z = pos.z + r}, + {"protector:protect", "protector:protect2"}) + + local meta, owner + + -- show a maximum of 5 protected areas only + for n = 1, math.min(#pos, 5) do + + meta = minetest.get_meta(pos[n]) + owner = meta:get_string("owner") or "" + + if owner == name then + minetest.add_entity(pos[n], "protector:display") + end + end + end +}) diff --git a/mods/protector/depends.txt b/mods/protector/depends.txt new file mode 100644 index 0000000..4713add --- /dev/null +++ b/mods/protector/depends.txt @@ -0,0 +1,4 @@ +default +intllib? +lucky_block? +mesecons_mvps? diff --git a/mods/protector/description.txt b/mods/protector/description.txt new file mode 100644 index 0000000..587fee8 --- /dev/null +++ b/mods/protector/description.txt @@ -0,0 +1 @@ +Lets players craft special blocks to protect their builds or disable PVP in areas. \ No newline at end of file diff --git a/mods/protector/doors_chest.lua b/mods/protector/doors_chest.lua new file mode 100644 index 0000000..054797d --- /dev/null +++ b/mods/protector/doors_chest.lua @@ -0,0 +1,688 @@ + +-- Since the doors mod has changed in the latest daily builds I have taken the +-- WTFPL licenced code from the old doors mod and included an edited version +-- within this mod for local use. + +local S = protector.intllib + +-- Registers a door +function register_door(name, def) + def.groups.not_in_creative_inventory = 1 + + local box = {{-0.5, -0.5, -0.5, 0.5, 0.5, -0.5+1.5/16}} + + def.node_box_bottom = box + def.node_box_top = box + def.selection_box_bottom = box + def.selection_box_top = box + def.sound_close_door = "doors_door_close" + def.sound_open_door = "doors_door_open" + + minetest.register_craftitem(name, { + description = def.description, + inventory_image = def.inventory_image, + + on_place = function(itemstack, placer, pointed_thing) + if not pointed_thing.type == "node" then + return itemstack + end + + local ptu = pointed_thing.under + local nu = minetest.get_node(ptu) + if minetest.registered_nodes[nu.name] + and minetest.registered_nodes[nu.name].on_rightclick then + return minetest.registered_nodes[nu.name].on_rightclick(ptu, nu, placer, itemstack) + end + + local pt = pointed_thing.above + local pt2 = {x=pt.x, y=pt.y, z=pt.z} + pt2.y = pt2.y+1 + if + not minetest.registered_nodes[minetest.get_node(pt).name].buildable_to or + not minetest.registered_nodes[minetest.get_node(pt2).name].buildable_to or + not placer or + not placer:is_player() + then + return itemstack + end + + if minetest.is_protected(pt, placer:get_player_name()) or + minetest.is_protected(pt2, placer:get_player_name()) then + minetest.record_protection_violation(pt, placer:get_player_name()) + return itemstack + end + + local p2 = minetest.dir_to_facedir(placer:get_look_dir()) + local pt3 = {x=pt.x, y=pt.y, z=pt.z} + if p2 == 0 then + pt3.x = pt3.x-1 + elseif p2 == 1 then + pt3.z = pt3.z+1 + elseif p2 == 2 then + pt3.x = pt3.x+1 + elseif p2 == 3 then + pt3.z = pt3.z-1 + end + if minetest.get_item_group(minetest.get_node(pt3).name, "door") == 0 then + minetest.set_node(pt, {name=name.."_b_1", param2=p2}) + minetest.set_node(pt2, {name=name.."_t_1", param2=p2}) + else + minetest.set_node(pt, {name=name.."_b_2", param2=p2}) + minetest.set_node(pt2, {name=name.."_t_2", param2=p2}) + minetest.get_meta(pt):set_int("right", 1) + minetest.get_meta(pt2):set_int("right", 1) + end + + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end, + }) + + local tt = def.tiles_top + local tb = def.tiles_bottom + + local function after_dig_node(pos, name, digger) + local node = minetest.get_node(pos) + if node.name == name then + minetest.node_dig(pos, node, digger) + end + end + + local function on_rightclick(pos, dir, check_name, replace, replace_dir, params) + pos.y = pos.y+dir + if minetest.get_node(pos).name ~= check_name then + return + end + local p2 = minetest.get_node(pos).param2 + p2 = params[p2+1] + + minetest.swap_node(pos, {name=replace_dir, param2=p2}) + + pos.y = pos.y-dir + minetest.swap_node(pos, {name=replace, param2=p2}) + + local snd_1 = def.sound_close_door + local snd_2 = def.sound_open_door + if params[1] == 3 then + snd_1 = def.sound_open_door + snd_2 = def.sound_close_door + end + + if minetest.get_meta(pos):get_int("right") ~= 0 then + minetest.sound_play(snd_1, {pos = pos, gain = 0.3, max_hear_distance = 10}) + else + minetest.sound_play(snd_2, {pos = pos, gain = 0.3, max_hear_distance = 10}) + end + end + + local function on_rotate(pos, node, dir, user, check_name, mode, new_param2) + + if mode ~= screwdriver.ROTATE_FACE then + return false + end + + pos.y = pos.y + dir + if not minetest.get_node(pos).name == check_name then + return false + end + if minetest.is_protected(pos, user:get_player_name()) then + minetest.record_protection_violation(pos, user:get_player_name()) + return false + end + + local node2 = minetest.get_node(pos) + node2.param2 = (node2.param2 + 1) % 4 + minetest.swap_node(pos, node2) + + pos.y = pos.y - dir + node.param2 = (node.param2 + 1) % 4 + minetest.swap_node(pos, node) + return true + end + + minetest.register_node(name.."_b_1", { + tiles = {tb[2], tb[2], tb[2], tb[2], tb[1], tb[1].."^[transformfx"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + drop = name, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = def.node_box_bottom + }, + selection_box = { + type = "fixed", + fixed = def.selection_box_bottom + }, + groups = def.groups, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + pos.y = pos.y+1 + after_dig_node(pos, name.."_t_1", digger) + end, + + on_rightclick = function(pos, node, clicker) + if not minetest.is_protected(pos, clicker:get_player_name()) then + on_rightclick(pos, 1, name.."_t_1", name.."_b_2", name.."_t_2", {1,2,3,0}) + end + end, + + on_rotate = function(pos, node, user, mode, new_param2) + return on_rotate(pos, node, 1, user, name.."_t_1", mode) + end, + + sounds = def.sounds, + sunlight_propagates = def.sunlight, + on_blast = function() end, + }) + + minetest.register_node(name.."_t_1", { + tiles = {tt[2], tt[2], tt[2], tt[2], tt[1], tt[1].."^[transformfx"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + drop = "", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = def.node_box_top + }, + selection_box = { + type = "fixed", + fixed = def.selection_box_top + }, + groups = def.groups, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + pos.y = pos.y-1 + after_dig_node(pos, name.."_b_1", digger) + end, + + on_rightclick = function(pos, node, clicker) + if not minetest.is_protected(pos, clicker:get_player_name()) then + on_rightclick(pos, -1, name.."_b_1", name.."_t_2", name.."_b_2", {1,2,3,0}) + end + end, + + on_rotate = function(pos, node, user, mode, new_param2) + return on_rotate(pos, node, -1, user, name.."_b_1", mode) + end, + + sounds = def.sounds, + sunlight_propagates = def.sunlight, + on_blast = function() end, + }) + + minetest.register_node(name.."_b_2", { + tiles = {tb[2], tb[2], tb[2], tb[2], tb[1].."^[transformfx", tb[1]}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + drop = name, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = def.node_box_bottom + }, + selection_box = { + type = "fixed", + fixed = def.selection_box_bottom + }, + groups = def.groups, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + pos.y = pos.y+1 + after_dig_node(pos, name.."_t_2", digger) + end, + + on_rightclick = function(pos, node, clicker) + if not minetest.is_protected(pos, clicker:get_player_name()) then + on_rightclick(pos, 1, name.."_t_2", name.."_b_1", name.."_t_1", {3,0,1,2}) + end + end, + + on_rotate = function(pos, node, user, mode, new_param2) + return on_rotate(pos, node, 1, user, name.."_t_2", mode) + end, + + sounds = def.sounds, + sunlight_propagates = def.sunlight, + on_blast = function() end, + }) + + minetest.register_node(name.."_t_2", { + tiles = {tt[2], tt[2], tt[2], tt[2], tt[1].."^[transformfx", tt[1]}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + drop = "", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = def.node_box_top + }, + selection_box = { + type = "fixed", + fixed = def.selection_box_top + }, + groups = def.groups, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + pos.y = pos.y-1 + after_dig_node(pos, name.."_b_2", digger) + end, + + on_rightclick = function(pos, node, clicker) + if not minetest.is_protected(pos, clicker:get_player_name()) then + on_rightclick(pos, -1, name.."_b_2", name.."_t_1", name.."_b_1", {3,0,1,2}) + end + end, + + on_rotate = function(pos, node, user, mode, new_param2) + return on_rotate(pos, node, -1, user, name.."_b_2", mode) + end, + + sounds = def.sounds, + sunlight_propagates = def.sunlight, + on_blast = function() end, + }) + +end + +-- Protected Wooden Door + +local name = "protector:door_wood" + +register_door(name, { + description = S("Protected Wooden Door"), + inventory_image = "doors_wood.png^protector_logo.png", + groups = { + snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, + unbreakable = 1, --door = 1 + }, + tiles_bottom = {"doors_wood_b.png^protector_logo.png", "doors_brown.png"}, + tiles_top = {"doors_wood_a.png", "doors_brown.png"}, + sounds = default.node_sound_wood_defaults(), + sunlight = false, +}) + +minetest.register_craft({ + output = name, + recipe = { + {"group:wood", "group:wood"}, + {"group:wood", "default:copper_ingot"}, + {"group:wood", "group:wood"} + } +}) + +minetest.register_craft({ + output = name, + recipe = { + {"doors:door_wood", "default:copper_ingot"} + } +}) + +-- Protected Steel Door + +local name = "protector:door_steel" + +register_door(name, { + description = S("Protected Steel Door"), + inventory_image = "doors_steel.png^protector_logo.png", + groups = { + snappy = 1, bendy = 2, cracky = 1, + level = 2, unbreakable = 1, -- door = 1 + }, + tiles_bottom = {"doors_steel_b.png^protector_logo.png", "doors_grey.png"}, + tiles_top = {"doors_steel_a.png", "doors_grey.png"}, + sounds = default.node_sound_wood_defaults(), + sunlight = false, +}) + +minetest.register_craft({ + output = name, + recipe = { + {"default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:copper_ingot"}, + {"default:steel_ingot", "default:steel_ingot"} + } +}) + +minetest.register_craft({ + output = name, + recipe = { + {"doors:door_steel", "default:copper_ingot"} + } +}) + +----trapdoor---- + +function register_trapdoor(name, def) + local name_closed = name + local name_opened = name.."_open" + + def.on_rightclick = function (pos, node, clicker, itemstack, pointed_thing) + if minetest.is_protected(pos, clicker:get_player_name()) then + return + end + local newname = node.name == name_closed and name_opened or name_closed + local sound = false + if node.name == name_closed then sound = "doors_door_open" end + if node.name == name_opened then sound = "doors_door_close" end + if sound then + minetest.sound_play(sound, {pos = pos, gain = 0.3, max_hear_distance = 10}) + end + minetest.swap_node(pos, {name = newname, param1 = node.param1, param2 = node.param2}) + end + + -- Common trapdoor configuration + def.drawtype = "nodebox" + def.paramtype = "light" + def.paramtype2 = "facedir" + def.is_ground_content = false + + local def_opened = table.copy(def) + local def_closed = table.copy(def) + + def_closed.node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5} + } + def_closed.selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5} + } + def_closed.tiles = { def.tile_front, def.tile_front, def.tile_side, def.tile_side, + def.tile_side, def.tile_side } + + def_opened.node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5} + } + def_opened.selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5} + } + def_opened.tiles = { def.tile_side, def.tile_side, + def.tile_side .. '^[transform3', + def.tile_side .. '^[transform1', + def.tile_front, def.tile_front } + + def_opened.drop = name_closed + def_opened.groups.not_in_creative_inventory = 1 + + minetest.register_node(name_opened, def_opened) + minetest.register_node(name_closed, def_closed) +end + +-- Protected Wooden Trapdoor + +register_trapdoor("protector:trapdoor", { + description = S("Protected Trapdoor"), + inventory_image = "doors_trapdoor.png^protector_logo.png", + wield_image = "doors_trapdoor.png^protector_logo.png", + tile_front = "doors_trapdoor.png^protector_logo.png", + tile_side = "doors_trapdoor_side.png", + groups = { + snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, + unbreakable = 1, --door = 1 + }, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = 'protector:trapdoor 2', + recipe = { + {'group:wood', 'default:copper_ingot', 'group:wood'}, + {'group:wood', 'group:wood', 'group:wood'}, + {'', '', ''}, + } +}) + +minetest.register_craft({ + output = "protector:trapdoor", + recipe = { + {"doors:trapdoor", "default:copper_ingot"} + } +}) + +-- Protected Steel Trapdoor + +register_trapdoor("protector:trapdoor_steel", { + description = S("Protected Steel Trapdoor"), + inventory_image = "doors_trapdoor_steel.png^protector_logo.png", + wield_image = "doors_trapdoor_steel.png^protector_logo.png", + tile_front = "doors_trapdoor_steel.png^protector_logo.png", + tile_side = "doors_trapdoor_steel_side.png", + groups = { + snappy = 1, bendy = 2, cracky = 1, melty = 2, level = 2, + unbreakable = 1, --door = 1 + }, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = 'protector:trapdoor_steel', + recipe = { + {'default:copper_ingot', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:steel_ingot'}, + } +}) + +minetest.register_craft({ + output = "protector:trapdoor_steel", + recipe = { + {"doors:trapdoor_steel", "default:copper_ingot"} + } +}) + +-- Protected Chest + +minetest.register_node("protector:chest", { + description = S("Protected Chest"), + tiles = { + "default_chest_top.png", "default_chest_top.png", + "default_chest_side.png", "default_chest_side.png", + "default_chest_side.png", "default_chest_front.png^protector_logo.png" + }, + paramtype2 = "facedir", + groups = {choppy = 2, oddly_breakable_by_hand = 2, unbreakable = 1}, + legacy_facedir_simple = true, + is_ground_content = false, + sounds = default.node_sound_wood_defaults(), + + on_construct = function(pos) + + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + + meta:set_string("infotext", S("Protected Chest")) + meta:set_string("name", "") + inv:set_size("main", 8 * 4) + end, + + can_dig = function(pos,player) + + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + + if inv:is_empty("main") then + + if not minetest.is_protected(pos, player:get_player_name()) then + return true + end + end + end, + + on_metadata_inventory_put = function(pos, listname, index, stack, player) + + minetest.log("action", S("@1 moves stuff to protected chest at @2", + player:get_player_name(), minetest.pos_to_string(pos))) + end, + + on_metadata_inventory_take = function(pos, listname, index, stack, player) + + minetest.log("action", S("@1 takes stuff from protected chest at @2", + player:get_player_name(), minetest.pos_to_string(pos))) + end, + + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + + minetest.log("action", S("@1 moves stuff inside protected chest at @2", + player:get_player_name(), minetest.pos_to_string(pos))) + end, + + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + + if minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + + return stack:get_count() + end, + + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + + if minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + + return stack:get_count() + end, + + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + + if minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + + return count + end, + + on_rightclick = function(pos, node, clicker) + + if minetest.is_protected(pos, clicker:get_player_name()) then + return + end + + local meta = minetest.get_meta(pos) + + if not meta then + return + end + + local spos = pos.x .. "," .. pos.y .. "," ..pos.z + local formspec = "size[8,9]" + .. default.gui_bg + .. default.gui_bg_img + .. default.gui_slots + .. "list[nodemeta:".. spos .. ";main;0,0.3;8,4;]" + .. "button[0,4.5;2,0.25;toup;" .. S("To Chest") .. "]" + .. "field[2.3,4.8;4,0.25;chestname;;" + .. meta:get_string("name") .. "]" + .. "button[6,4.5;2,0.25;todn;" .. S("To Inventory") .. "]" + .. "list[current_player;main;0,5;8,1;]" + .. "list[current_player;main;0,6.08;8,3;8]" + .. "listring[nodemeta:" .. spos .. ";main]" + .. "listring[current_player;main]" + + minetest.show_formspec( + clicker:get_player_name(), + "protector:chest_" .. minetest.pos_to_string(pos), + formspec) + end, + + on_blast = function() end, +}) + +-- Protected Chest formspec buttons + +minetest.register_on_player_receive_fields(function(player, formname, fields) + + if string.sub(formname, 0, string.len("protector:chest_")) ~= "protector:chest_" then + return + end + + local pos_s = string.sub(formname,string.len("protector:chest_") + 1) + local pos = minetest.string_to_pos(pos_s) + + if minetest.is_protected(pos, player:get_player_name()) then + return + end + + local meta = minetest.get_meta(pos) ; if not meta then return end + local chest_inv = meta:get_inventory() ; if not chest_inv then return end + local player_inv = player:get_inventory() + local leftover + + if fields.toup then + + -- copy contents of players inventory to chest + for i, v in ipairs(player_inv:get_list("main") or {}) do + + if chest_inv:room_for_item("main", v) then + + leftover = chest_inv:add_item("main", v) + + player_inv:remove_item("main", v) + + if leftover + and not leftover:is_empty() then + player_inv:add_item("main", v) + end + end + end + + elseif fields.todn then + + -- copy contents of chest to players inventory + for i, v in ipairs(chest_inv:get_list("main") or {}) do + + if player_inv:room_for_item("main", v) then + + leftover = player_inv:add_item("main", v) + + chest_inv:remove_item("main", v) + + if leftover + and not leftover:is_empty() then + chest_inv:add_item("main", v) + end + end + end + + elseif fields.chestname then + + -- change chest infotext to display name + if fields.chestname ~= "" then + + meta:set_string("name", fields.chestname) + meta:set_string("infotext", + S("Protected Chest (@1)", fields.chestname)) + else + meta:set_string("infotext", S("Protected Chest")) + end + + end +end) + +-- Protected Chest recipes + +minetest.register_craft({ + output = 'protector:chest', + recipe = { + {'group:wood', 'group:wood', 'group:wood'}, + {'group:wood', 'default:copper_ingot', 'group:wood'}, + {'group:wood', 'group:wood', 'group:wood'}, + } +}) + +minetest.register_craft({ + output = 'protector:chest', + recipe = { + {'default:chest', 'default:copper_ingot', ''}, + } +}) diff --git a/mods/protector/hud.lua b/mods/protector/hud.lua new file mode 100644 index 0000000..041104b --- /dev/null +++ b/mods/protector/hud.lua @@ -0,0 +1,60 @@ + +local radius = (tonumber(minetest.setting_get("protector_radius")) or 5) +local hud = {} +local hud_timer = 0 + +minetest.register_globalstep(function(dtime) + + hud_timer = hud_timer + dtime + if hud_timer < 5 then + return + end + hud_timer = 0 + + for _, player in pairs(minetest.get_connected_players()) do + + local name = player:get_player_name() + local pos = vector.round(player:getpos()) + local hud_text = "" + + local protectors = minetest.find_nodes_in_area( + {x=pos.x -radius , y=pos.y -radius , z=pos.z -radius}, + {x=pos.x +radius , y=pos.y +radius , z=pos.z +radius}, + {"protector:protect","protector:protect2"}) + + if #protectors > 0 then + local npos = protectors[1] + local meta = minetest.get_meta(npos) + local nodeowner = meta:get_string("owner") + + hud_text = "Owner: " .. nodeowner + end + + if not hud[name] then + + hud[name] = {} + + hud[name].id = player:hud_add({ + hud_elem_type = "text", + name = "Protector Area", + number = 0xFFFF22, + position = {x=0, y=0.95}, + offset = {x=8, y=-8}, + text = hud_text, + scale = {x=200, y=60}, + alignment = {x=1, y=-1}, + }) + + return + + else + + player:hud_change(hud[name].id, "text", hud_text) + end + end +end) + +minetest.register_on_leaveplayer(function(player) + hud[player:get_player_name()] = nil +end) + diff --git a/mods/protector/init.lua b/mods/protector/init.lua new file mode 100644 index 0000000..2ecb31b --- /dev/null +++ b/mods/protector/init.lua @@ -0,0 +1,639 @@ + +-- get minetest.conf settings +protector = {} +protector.mod = "redo" +protector.radius = tonumber(minetest.settings:get("protector_radius")) or 5 +protector.flip = minetest.settings:get_bool("protector_flip") or false +protector.hurt = tonumber(minetest.settings:get("protector_hurt")) or 0 +protector.spawn = tonumber(minetest.settings:get("protector_spawn") + or minetest.settings:get("protector_pvp_spawn")) or 0 + + +-- get static spawn position +local statspawn = minetest.string_to_pos(minetest.settings:get("static_spawnpoint")) + or {x = 0, y = 2, z = 0} + + +-- Intllib +local S +if minetest.get_modpath("intllib") then + S = intllib.Getter() +else + S = function(s, a, ...) a = {a, ...} + return s:gsub("@(%d+)", function(n) + return a[tonumber(n)] + end) + end + +end +protector.intllib = S + + +-- return list of members as a table +local get_member_list = function(meta) + + return meta:get_string("members"):split(" ") +end + + +-- write member list table in protector meta as string +local set_member_list = function(meta, list) + + meta:set_string("members", table.concat(list, " ")) +end + + +-- check for owner name +local is_owner = function(meta, name) + + return name == meta:get_string("owner") +end + + +-- check for member name +local is_member = function (meta, name) + + for _, n in pairs(get_member_list(meta)) do + + if n == name then + return true + end + end + + return false +end + + +-- add player name to table as member +local add_member = function(meta, name) + + -- does name already exist? + if is_owner(meta, name) + or is_member(meta, name) then + return + end + + local list = get_member_list(meta) + + table.insert(list, name) + + set_member_list(meta, list) +end + + +-- remove player name from table +local del_member = function(meta, name) + + local list = get_member_list(meta) + + for i, n in pairs(list) do + + if n == name then + table.remove(list, i) + break + end + end + + set_member_list(meta, list) +end + + +-- protector interface +local protector_formspec = function(meta) + + local formspec = "size[8,7]" + .. default.gui_bg + .. default.gui_bg_img + .. default.gui_slots + .. "label[2.5,0;" .. S("-- Protector interface --") .. "]" + .. "label[0,1;" .. S("PUNCH node to show protected area") .. "]" + .. "label[0,2;" .. S("Members:") .. "]" + .. "button_exit[2.5,6.2;3,0.5;close_me;" .. S("Close") .. "]" + + local members = get_member_list(meta) + local npp = 12 -- max users added to protector list + local i = 0 + + for n = 1, #members do + + if i < npp then + + -- show username + formspec = formspec .. "button[" .. (i % 4 * 2) + .. "," .. math.floor(i / 4 + 3) + .. ";1.5,.5;protector_member;" .. members[n] .. "]" + + -- username remove button + .. "button[" .. (i % 4 * 2 + 1.25) .. "," + .. math.floor(i / 4 + 3) + .. ";.75,.5;protector_del_member_" .. members[n] .. ";X]" + end + + i = i + 1 + end + + if i < npp then + + -- user name entry field + formspec = formspec .. "field[" .. (i % 4 * 2 + 1 / 3) .. "," + .. (math.floor(i / 4 + 3) + 1 / 3) + .. ";1.433,.5;protector_add_member;;]" + + -- username add button + .."button[" .. (i % 4 * 2 + 1.25) .. "," + .. math.floor(i / 4 + 3) .. ";.75,.5;protector_submit;+]" + + end + + return formspec +end + + +-- check if pos is inside a protected spawn area +local inside_spawn = function(pos, radius) + + if protector.spawn <= 0 then + return false + end + + if pos.x < statspawn.x + radius + and pos.x > statspawn.x - radius + and pos.y < statspawn.y + radius + and pos.y > statspawn.y - radius + and pos.z < statspawn.z + radius + and pos.z > statspawn.z - radius then + + return true + end + + return false +end + + +-- Infolevel: +-- 0 for no info +-- 1 for "This area is owned by !" if you can't dig +-- 2 for "This area is owned by . +-- 3 for checking protector overlaps + +protector.can_dig = function(r, pos, digger, onlyowner, infolevel) + + if not digger or not pos then + return false + end + + -- protector_bypass privileged users can override protection + if infolevel == 1 + and minetest.check_player_privs(digger, {protection_bypass = true}) then + return true + end + + -- infolevel 3 is only used to bypass priv check, change to 1 now + if infolevel == 3 then infolevel = 1 end + + -- is spawn area protected ? + if inside_spawn(pos, protector.spawn) then + + minetest.chat_send_player(digger, + S("Spawn @1 has been protected up to a @2 block radius.", + minetest.pos_to_string(statspawn), protector.spawn)) + + return false + end + + -- find the protector nodes + local pos = minetest.find_nodes_in_area( + {x = pos.x - r, y = pos.y - r, z = pos.z - r}, + {x = pos.x + r, y = pos.y + r, z = pos.z + r}, + {"protector:protect", "protector:protect2"}) + + local meta, owner, members + + for n = 1, #pos do + + meta = minetest.get_meta(pos[n]) + owner = meta:get_string("owner") or "" + members = meta:get_string("members") or "" + + -- node change and digger isn't owner + if infolevel == 1 and owner ~= digger then + + -- and you aren't on the member list + if onlyowner or not is_member(meta, digger) then + + minetest.chat_send_player(digger, + S("This area is owned by @1!", owner)) + + return false + end + end + + -- when using protector as tool, show protector information + if infolevel == 2 then + + minetest.chat_send_player(digger, S("This area is owned by @1.", owner)) + + minetest.chat_send_player(digger, + S("Protection located at: @1", minetest.pos_to_string(pos[n]))) + + if members ~= "" then + + minetest.chat_send_player(digger, S("Members: @1.", members)) + end + + return false + end + + end + + -- show when you can build on unprotected area + if infolevel == 2 then + + if #pos < 1 then + + minetest.chat_send_player(digger, S("This area is not protected.")) + end + + minetest.chat_send_player(digger, S("You can build here.")) + end + + return true +end + + +local old_is_protected = minetest.is_protected + +-- check for protected area, return true if protected and digger isn't on list +function minetest.is_protected(pos, digger) + + digger = digger or "" -- nil check + + -- is area protected against digger? + if not protector.can_dig(protector.radius, pos, digger, false, 1) then + + local player = minetest.get_player_by_name(digger) + + if player and player:is_player() then + + -- hurt player if protection violated + if protector.hurt > 0 and player:get_hp() > 0 then + player:set_hp(player:get_hp() - protector.hurt) + end + + -- flip player when protection violated + if protector.flip then + -- yaw + 180° + local yaw = player:get_look_horizontal() + math.pi + --local yaw = player:get_look_yaw() + math.pi + + if yaw > 2 * math.pi then + yaw = yaw - 2 * math.pi + end + + --player:set_look_horizontal(yaw) + player:set_look_yaw(yaw) + + -- invert pitch + player:set_look_vertical(-player:get_look_vertical()) + --player:set_look_pitch(-player:get_look_pitch()) + + -- if digging below player, move up to avoid falling through hole + local pla_pos = player:get_pos() + + if pos.y < pla_pos.y then + + player:setpos({ + x = pla_pos.x, + y = pla_pos.y + 0.8, + z = pla_pos.z + }) + end + end + end + + return true + end + + -- otherwise can dig or place + return old_is_protected(pos, digger) +end + + +-- make sure protection block doesn't overlap another protector's area +local check_overlap = function(itemstack, placer, pointed_thing) + + if pointed_thing.type ~= "node" then + return itemstack + end + + local pos = pointed_thing.above + local name = placer:get_player_name() + + -- make sure protector doesn't overlap onto protected spawn area + if inside_spawn(pos, protector.spawn + protector.radius) then + + minetest.chat_send_player(name, + S("Spawn @1 has been protected up to a @2 block radius.", + minetest.pos_to_string(statspawn), protector.spawn)) + + return itemstack + end + + -- make sure protector doesn't overlap any other player's area + if not protector.can_dig(protector.radius * 2, pos, name, true, 3) then + + minetest.chat_send_player(name, + S("Overlaps into above players protected area")) + + return itemstack + end + + return minetest.item_place(itemstack, placer, pointed_thing) + +end + + +-- protection node +minetest.register_node("protector:protect", { + description = S("Protection Block") .. " (" .. S("USE for area check") .. ")", + drawtype = "nodebox", + tiles = { + "moreblocks_circle_stone_bricks.png", + "moreblocks_circle_stone_bricks.png", + "moreblocks_circle_stone_bricks.png^protector_logo.png" + }, + sounds = default.node_sound_stone_defaults(), + groups = {dig_immediate = 2, unbreakable = 1}, + is_ground_content = false, + paramtype = "light", + light_source = 4, + + node_box = { + type = "fixed", + fixed = { + {-0.5 ,-0.5, -0.5, 0.5, 0.5, 0.5}, + } + }, + + on_place = check_overlap, + + after_place_node = function(pos, placer) + + local meta = minetest.get_meta(pos) + + meta:set_string("owner", placer:get_player_name() or "") + meta:set_string("infotext", S("Protection (owned by @1)", meta:get_string("owner"))) + meta:set_string("members", "") + end, + + on_use = function(itemstack, user, pointed_thing) + + if pointed_thing.type ~= "node" then + return + end + + protector.can_dig(protector.radius, pointed_thing.under, user:get_player_name(), false, 2) + end, + + on_rightclick = function(pos, node, clicker, itemstack) + + local meta = minetest.get_meta(pos) + + if meta + and protector.can_dig(1, pos, clicker:get_player_name(), true, 1) then + + minetest.show_formspec(clicker:get_player_name(), + "protector:node_" .. minetest.pos_to_string(pos), + protector_formspec(meta)) + end + end, + + on_punch = function(pos, node, puncher) + + if minetest.is_protected(pos, puncher:get_player_name()) then + return + end + + minetest.add_entity(pos, "protector:display") + end, + + can_dig = function(pos, player) + + return player and protector.can_dig(1, pos, player:get_player_name(), true, 1) + end, + + on_blast = function() end, +}) + +minetest.register_craft({ + output = "protector:protect", + recipe = { + {"default:stone", "default:stone", "default:stone"}, + {"default:stone", "default:gold_ingot", "default:stone"}, + {"default:stone", "default:stone", "default:stone"}, + } +}) + + +-- protection logo +minetest.register_node("protector:protect2", { + description = S("Protection Logo") .. " (" .. S("USE for area check") .. ")", + tiles = {"protector_logo.png"}, + wield_image = "protector_logo.png", + inventory_image = "protector_logo.png", + sounds = default.node_sound_stone_defaults(), + groups = {dig_immediate = 2, unbreakable = 1}, + paramtype = "light", + paramtype2 = "wallmounted", + legacy_wallmounted = true, + light_source = 4, + drawtype = "nodebox", + sunlight_propagates = true, + walkable = true, + node_box = { + type = "wallmounted", + wall_top = {-0.375, 0.4375, -0.5, 0.375, 0.5, 0.5}, + wall_bottom = {-0.375, -0.5, -0.5, 0.375, -0.4375, 0.5}, + wall_side = {-0.5, -0.5, -0.375, -0.4375, 0.5, 0.375}, + }, + selection_box = {type = "wallmounted"}, + + on_place = check_overlap, + + after_place_node = function(pos, placer) + + local meta = minetest.get_meta(pos) + + meta:set_string("owner", placer:get_player_name() or "") + meta:set_string("infotext", S("Protection (owned by @1)", meta:get_string("owner"))) + meta:set_string("members", "") + end, + + on_use = function(itemstack, user, pointed_thing) + + if pointed_thing.type ~= "node" then + return + end + + protector.can_dig(protector.radius, pointed_thing.under, user:get_player_name(), false, 2) + end, + + on_rightclick = function(pos, node, clicker, itemstack) + + local meta = minetest.get_meta(pos) + + if protector.can_dig(1, pos, clicker:get_player_name(), true, 1) then + + minetest.show_formspec(clicker:get_player_name(), + "protector:node_" .. minetest.pos_to_string(pos), protector_formspec(meta)) + end + end, + + on_punch = function(pos, node, puncher) + + if minetest.is_protected(pos, puncher:get_player_name()) then + return + end + + minetest.add_entity(pos, "protector:display") + end, + + can_dig = function(pos, player) + + return player and protector.can_dig(1, pos, player:get_player_name(), true, 1) + end, + + on_blast = function() end, +}) + +-- recipes to switch between protectors +minetest.register_craft({ + type = "shapeless", + output = "protector:protect", + recipe = {"protector:protect2"} +}) + +minetest.register_craft({ + type = "shapeless", + output = "protector:protect2", + recipe = {"protector:protect"} +}) + + +-- check formspec buttons or when name entered +minetest.register_on_player_receive_fields(function(player, formname, fields) + + -- protector formspec found + if string.sub(formname, 0, string.len("protector:node_")) == "protector:node_" then + + local pos_s = string.sub(formname, string.len("protector:node_") + 1) + local pos = minetest.string_to_pos(pos_s) + local meta = minetest.get_meta(pos) + + -- only owner can add names + if not protector.can_dig(1, pos, player:get_player_name(), true, 1) then + return + end + + -- add member [+] + if fields.protector_add_member then + + for _, i in pairs(fields.protector_add_member:split(" ")) do + add_member(meta, i) + end + end + + -- remove member [x] + for field, value in pairs(fields) do + + if string.sub(field, 0, + string.len("protector_del_member_")) == "protector_del_member_" then + + del_member(meta, + string.sub(field,string.len("protector_del_member_") + 1)) + end + end + + -- reset formspec until close button pressed + if not fields.close_me then + minetest.show_formspec(player:get_player_name(), formname, protector_formspec(meta)) + end + end +end) + + +-- display entity shown when protector node is punched +minetest.register_entity("protector:display", { + physical = false, + collisionbox = {0, 0, 0, 0, 0, 0}, + visual = "wielditem", + -- wielditem seems to be scaled to 1.5 times original node size + visual_size = {x = 1.0 / 1.5, y = 1.0 / 1.5}, + textures = {"protector:display_node"}, + timer = 0, + + on_step = function(self, dtime) + + self.timer = self.timer + dtime + + -- remove after 5 seconds + if self.timer > 5 then + self.object:remove() + end + end, +}) + + +-- Display-zone node, Do NOT place the display as a node, +-- it is made to be used as an entity (see above) + +local x = protector.radius +minetest.register_node("protector:display_node", { + tiles = {"protector_display.png"}, + use_texture_alpha = true, + walkable = false, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -- sides + {-(x+.55), -(x+.55), -(x+.55), -(x+.45), (x+.55), (x+.55)}, + {-(x+.55), -(x+.55), (x+.45), (x+.55), (x+.55), (x+.55)}, + {(x+.45), -(x+.55), -(x+.55), (x+.55), (x+.55), (x+.55)}, + {-(x+.55), -(x+.55), -(x+.55), (x+.55), (x+.55), -(x+.45)}, + -- top + {-(x+.55), (x+.45), -(x+.55), (x+.55), (x+.55), (x+.55)}, + -- bottom + {-(x+.55), -(x+.55), -(x+.55), (x+.55), -(x+.45), (x+.55)}, + -- middle (surround protector) + {-.55,-.55,-.55, .55,.55,.55}, + }, + }, + selection_box = { + type = "regular", + }, + paramtype = "light", + groups = {dig_immediate = 3, not_in_creative_inventory = 1}, + drop = "", +}) + + +local path = minetest.get_modpath("protector") + +dofile(path .. "/doors_chest.lua") +dofile(path .. "/pvp.lua") +dofile(path .. "/admin.lua") +dofile(path .. "/tool.lua") +dofile(path .. "/hud.lua") +dofile(path .. "/lucky_block.lua") + + +-- stop mesecon pistons from pushing protectors +if minetest.get_modpath("mesecons_mvps") then + mesecon.register_mvps_stopper("protector:protect") + mesecon.register_mvps_stopper("protector:protect2") + mesecon.register_mvps_stopper("protector:chest") +end + + +print (S("[MOD] Protector Redo loaded")) diff --git a/mods/protector/license.txt b/mods/protector/license.txt new file mode 100644 index 0000000..fec6f6a --- /dev/null +++ b/mods/protector/license.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 TenPlus1 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/mods/protector/locale/de.txt b/mods/protector/locale/de.txt new file mode 100644 index 0000000..4bdc3c4 --- /dev/null +++ b/mods/protector/locale/de.txt @@ -0,0 +1,44 @@ +# German Translation for protector mod +# Deutsche Ãœbersetzung der protector Mod +# last update: 2016/June/5 +# Author: Xanthin + +#admin.lua +Remove Protectors near players with names provided (separate names with spaces) = Entferne Stoerschuetzer von bestimmten Namen in der Naehe von Spielern (trenne Namen durch Leerzeichen) +Protector Names to remove: @1 = Stoerschutznamen zum Entfernen: @1 +Name List Reset = Namensliste zurueckgesetzt + +#doors_chest.lua +Protected Wooden Door = Geschützte Holztür +Protected Steel Door = Geschützte Stahltür +Protected Trapdoor = Geschützte Falltür +Protected Steel Trapdoor = Geschützte Stahlfalltür +Protected Chest = Geschützte Truhe +@1 moves stuff to protected chest at @2 = @1 verlagert Dinge in geschützte Truhe bei @2 +@1 takes stuff from protected chest at @2 = @1 nimmt Dinge aus geschützter Truhe bei @2 +To Chest = Zur Truhe +To Inventory = Zum Inventar +Protected Chest (@1) = Geschützte Truhe (@1) + +#init.lua +-- Protector interface -- = -- Störschutz-Interface -- +PUNCH node to show protected area = SCHLAGE Node, um geschützten Bereich anzuzeigen oder +USE for area check = BENUTZE für Bereichsprüfung +Members: = Mitglieder: +Close = Schließen +This area is owned by @1! = Dieses Gebiet gehoert @1! +This area is owned by @1. = Dieses Gebiet gehoert @1. +Protection located at: @1 = Stoerschutz befindet sich bei: @1 +Members: @1. = Mitglieder: @1. +This area is not protected. = Dieses Gebiet ist nicht geschuetzt. +You can build here. = Du kannst hier bauen. +Overlaps into above players protected area = Ueberlappt in geschuetzen Bereich eines Spielers +Protection Block = Störschutzblock +Protection (owned by @1) = Störschutz (gehört @1) +Protection Logo = Störschutzlogo +[MOD] Protector Redo loaded = [MOD] Protector Redo geladen + +#pvp.lua +[Protector] on_punchplayer called with nil objects = on_punchplayer wurde durch "nil objects" aufgerufen +[Protector] pvp_protect not active, update your version of Minetest = pvp_protect ist nicht aktiv, aktualisiere deine Minetestversion +[Protector] pvp_protect is disabled = pvp_protect ist ausgeschaltet \ No newline at end of file diff --git a/mods/protector/locale/ru.txt b/mods/protector/locale/ru.txt new file mode 100644 index 0000000..c331c7e --- /dev/null +++ b/mods/protector/locale/ru.txt @@ -0,0 +1,45 @@ +# Russian Translation for protector mod +# РуÑÑкий Перевод Ð´Ð»Ñ ÐœÐ¾Ð´Ð° "ÐŸÐµÑ€ÐµÐ´ÐµÐ»Ð°Ð½Ð½Ð°Ñ Ð—Ð°Ñ‰Ð¸Ñ‚Ð°" +# last update: 2017/October/15 +# Author: Doloment + + +#admin.lua +Remove Protectors near players with names provided (separate names with spaces) = Удалить защиту Ñ€Ñдом Ñ Ð¸Ð³Ñ€Ð¾ÐºÐ°Ð¼Ð¸ Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ (перечиÑлить, разделÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð°Ð¼Ð¸) +Protector Names to remove: @1 = Имена защит, подлежащих удалению: @1 +Name List Reset = Ð¡Ð±Ñ€Ð¾Ñ ÑпиÑка имен + +#doors_chest.lua +Protected Wooden Door = Ð—Ð°Ñ‰Ð¸Ñ‰ÐµÐ½Ð½Ð°Ñ ÑÐ±Ð»Ð¾Ð½ÐµÐ²Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ +Protected Steel Door = Ð—Ð°Ñ‰Ð¸Ñ‰ÐµÐ½Ð½Ð°Ñ ÑÑ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð²ÐµÑ€ÑŒ +Protected Trapdoor = Защищенный Ñблоневый люк +Protected Steel Trapdoor = Защищенный Ñтальной люк +Protected Chest = Защищенный Ñундук +@1 moves stuff to protected chest at @2 = @1 перемещает вещи в защищенный Ñундук на координатах @2 +@1 takes stuff from protected chest at @2 = @1 берет вещи из защищенного Ñундука на координатах @2 +To Chest = Ð’ Ñундук +To Inventory = Ð’ инвентрарь +Protected Chest (@1) = Защищенный Ñундук (@1) + +#init.lua +-- Protector interface -- = +PUNCH node to show protected area = СТУКÐУТЬ узел Ð´Ð»Ñ Ð¿Ð¾Ð´Ñведки защищенной территории +USE for area check = ЛКМ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ защищенной территории +Members: = УчаÑтники: +Close = Закрыть +This area is owned by @1! = Эта Ñ‚ÐµÑ€Ñ€Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€ÐµÐ½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ‚ @1! +This area is owned by @1. = Эта Ñ‚ÐµÑ€Ñ€Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€ÐµÐ½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ‚ @1. +Protection located at: @1 = Защита находитÑÑ Ð½Ð° координатах @1 +Members: @1. = УчаÑтники: @1. +This area is not protected. = Ð¢ÐµÑ€Ñ€Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ñвободна. +You can build here. = ЗдеÑÑŒ можно Ñтавить блоки. +Overlaps into above players protected area = Защитный блок не может быть уÑтановлен: переÑечение Ñ Ð¾Ð±Ð»Ð°ÑÑ‚Ñми, защищенными другими игроками +Protection Block = Защитный блок +Protection (owned by @1) = Защита игрока @1 +Protection Logo = Защитный знак +[MOD] Protector Redo loaded = [МОДИФИКÐЦИЯ] ÐœÐ¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ "ÐŸÐµÑ€ÐµÐ´ÐµÐ»Ð°Ð½Ð½Ð°Ñ Ð—Ð°Ñ‰Ð¸Ñ‚Ð°" загружена + +#pvp.lua +[Protector] on_punchplayer called with nil objects = [Защита] on_punchplayer вызвана Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼Ð¸ объектами +[Protector] pvp_protect not active, update your version of Minetest = [Защита] pvp_protect не активен, обновите верÑию Minetest +[Protector] pvp_protect is disabled = [Защита] pvp_protect отключен diff --git a/mods/protector/locale/template.txt b/mods/protector/locale/template.txt new file mode 100644 index 0000000..bd277e4 --- /dev/null +++ b/mods/protector/locale/template.txt @@ -0,0 +1,42 @@ +# Template for translations of protector mod +# last update: 2016/June/5 + +#admin.lua +Remove Protectors near players with names provided (separate names with spaces) = +Protector Names to remove: @1 = +Name List Reset = + +#doors_chest.lua +Protected Wooden Door = +Protected Steel Door = +Protected Trapdoor = +Protected Steel Trapdoor = +Protected Chest = +@1 moves stuff to protected chest at @2 = +@1 takes stuff from protected chest at @2 = +To Chest = +To Inventory = +Protected Chest (@1) = + +#init.lua +-- Protector interface -- = +PUNCH node to show protected area = +USE for area check = +Members: = +Close = +This area is owned by @1! = +This area is owned by @1. = +Protection located at: @1 = +Members: @1. = +This area is not protected. = +You can build here. = +Overlaps into above players protected area = +Protection Block = +Protection (owned by @1) = +Protection Logo = +[MOD] Protector Redo loaded = + +#pvp.lua +[Protector] on_punchplayer called with nil objects = +[Protector] pvp_protect not active, update your version of Minetest = +[Protector] pvp_protect is disabled = \ No newline at end of file diff --git a/mods/protector/locale/tr.txt b/mods/protector/locale/tr.txt new file mode 100644 index 0000000..9c3629e --- /dev/null +++ b/mods/protector/locale/tr.txt @@ -0,0 +1,42 @@ +# Turkish translation by mahmutelmas06 +# last update: 2016/June/5 + +#admin.lua +Remove Protectors near players with names provided (separate names with spaces) = Ismi verilen oyuncuların yanındaki korumaları kaldır. ( Ä°simleri boÅŸlukla ayır) +Protector Names to remove: @1 = Silinecek korumaların isimleri: @1 +Name List Reset = Ä°sim listesini sıfırla + +#doors_chest.lua +Protected Wooden Door = Korumalı ahÅŸap kapı +Protected Steel Door = Korumalı çelik kapı +Protected Trapdoor = Korumalı tuzak kapısı +Protected Steel Trapdoor = Korumalı çelik tuzak kapısı +Protected Chest = Korumalı sandık +@1 moves stuff to protected chest at @2 = @1 korumalı sandığa birÅŸeyler koydu @2 +@1 takes stuff from protected chest at @2 = @1 korumalı sandıktan birÅŸeyler aldı @2 +To Chest = Sandığa +To Inventory = Envantere +Protected Chest (@1) = Korumalı sandık (@1) + +#init.lua +-- Protector interface -- = +PUNCH node to show protected area = Korunan alanı göstermek için yumruk +USE for area check = Bölge kontrolü için kullan +Members: = Ãœyeler +Close = Kapat +This area is owned by @1! = Burasının sahibi @1! +This area is owned by @1. = Burasının sahibi @1. +Protection located at: @1 = Korumanın bulunduÄŸu yer @1 +Members: @1. = Ãœyeler @1. +This area is not protected. = Bu alan korumalı deÄŸildir. +You can build here. = Buraya inÅŸaa edebilirsiniz. +Overlaps into above players protected area = +Protection Block = Koruma kutusu +Protection (owned by @1) = Koruma (@1 sahibidir) +Protection Logo = Koruma arması +[MOD] Protector Redo loaded = [MOD] Protector Redo yüklendi + +#pvp.lua +[Protector] on_punchplayer called with nil objects = [Protector] on_punchplayer boÅŸ objelerle çaÄŸrıldı +[Protector] pvp_protect not active, update your version of Minetest = [Protector] pvp_protect aktif deÄŸil, Minetest sürümünüzü güncelleyin. +[Protector] pvp_protect is disabled = [Protector] pvp_protect kapatıldı. diff --git a/mods/protector/lucky_block.lua b/mods/protector/lucky_block.lua new file mode 100644 index 0000000..59c52c1 --- /dev/null +++ b/mods/protector/lucky_block.lua @@ -0,0 +1,18 @@ + +-- add lucky blocks + +if minetest.get_modpath("lucky_block") then + + lucky_block:add_blocks({ + {"dro", {"protector:protect"}, 3}, + {"dro", {"protector:protect2"}, 3}, + {"dro", {"protector:door_wood"}, 1}, + {"dro", {"protector:door_steel"}, 1}, + {"exp", 5, true}, + {"dro", {"protector:trapdoor"}, 1}, + {"dro", {"protector:trapdoor_steel"}, 1}, + {"dro", {"protector:tool"}, 1}, + {"dro", {"protector:chest"}, 1}, + {"exp"}, + }) +end diff --git a/mods/protector/mod.conf b/mods/protector/mod.conf new file mode 100644 index 0000000..8eb0aa8 --- /dev/null +++ b/mods/protector/mod.conf @@ -0,0 +1 @@ +name = protector \ No newline at end of file diff --git a/mods/protector/pvp.lua b/mods/protector/pvp.lua new file mode 100644 index 0000000..1382219 --- /dev/null +++ b/mods/protector/pvp.lua @@ -0,0 +1,70 @@ + +local S = protector.intllib + +-- get static spawn position +local statspawn = minetest.string_to_pos(minetest.settings:get("static_spawnpoint")) + or {x = 0, y = 2, z = 0} + +-- is pvp protection enabled +protector.pvp = minetest.settings:get_bool("protector_pvp") + +-- is night-only pvp enabled +protector.night_pvp = minetest.settings:get_bool("protector_night_pvp") + +-- disables PVP in your own protected areas +if minetest.settings:get_bool("enable_pvp") and protector.pvp then + + if minetest.register_on_punchplayer then + + minetest.register_on_punchplayer(function(player, hitter, + time_from_last_punch, tool_capabilities, dir, damage) + + if not player + or not hitter then + print(S("[Protector] on_punchplayer called with nil objects")) + end + + if not hitter:is_player() then + return false + end + + -- no pvp at spawn area + local pos = player:get_pos() + + if pos.x < statspawn.x + protector.spawn + and pos.x > statspawn.x - protector.spawn + and pos.y < statspawn.y + protector.spawn + and pos.y > statspawn.y - protector.spawn + and pos.z < statspawn.z + protector.spawn + and pos.z > statspawn.z - protector.spawn then + return true + end + + -- do we enable pvp at night time only ? + if protector.night_pvp then + + -- get time of day + local tod = minetest.get_timeofday() or 0 + + if tod > 0.2 and tod < 0.8 then + -- + else + return false + end + end + + -- is player being punched inside a protected area ? + if minetest.is_protected(pos, hitter:get_player_name()) then + return true + end + + return false + + end) + else + print(S("[Protector] pvp_protect not active, update your version of Minetest")) + + end +else + print(S("[Protector] pvp_protect is disabled")) +end diff --git a/mods/protector/screenshot.png b/mods/protector/screenshot.png new file mode 100644 index 0000000..641c5f2 Binary files /dev/null and b/mods/protector/screenshot.png differ diff --git a/mods/protector/textures/default_chest_front.png b/mods/protector/textures/default_chest_front.png new file mode 100644 index 0000000..f413279 Binary files /dev/null and b/mods/protector/textures/default_chest_front.png differ diff --git a/mods/protector/textures/default_chest_side.png b/mods/protector/textures/default_chest_side.png new file mode 100644 index 0000000..44a65a4 Binary files /dev/null and b/mods/protector/textures/default_chest_side.png differ diff --git a/mods/protector/textures/default_chest_top.png b/mods/protector/textures/default_chest_top.png new file mode 100644 index 0000000..1fbdbb9 Binary files /dev/null and b/mods/protector/textures/default_chest_top.png differ diff --git a/mods/protector/textures/doors_brown.png b/mods/protector/textures/doors_brown.png new file mode 100644 index 0000000..8c8e3d8 Binary files /dev/null and b/mods/protector/textures/doors_brown.png differ diff --git a/mods/protector/textures/doors_grey.png b/mods/protector/textures/doors_grey.png new file mode 100644 index 0000000..ad110c7 Binary files /dev/null and b/mods/protector/textures/doors_grey.png differ diff --git a/mods/protector/textures/doors_steel.png b/mods/protector/textures/doors_steel.png new file mode 100644 index 0000000..042a1bc Binary files /dev/null and b/mods/protector/textures/doors_steel.png differ diff --git a/mods/protector/textures/doors_steel_a.png b/mods/protector/textures/doors_steel_a.png new file mode 100644 index 0000000..84ff11d Binary files /dev/null and b/mods/protector/textures/doors_steel_a.png differ diff --git a/mods/protector/textures/doors_steel_b.png b/mods/protector/textures/doors_steel_b.png new file mode 100644 index 0000000..77ffbe3 Binary files /dev/null and b/mods/protector/textures/doors_steel_b.png differ diff --git a/mods/protector/textures/doors_trapdoor.png b/mods/protector/textures/doors_trapdoor.png new file mode 100644 index 0000000..e92c8b2 Binary files /dev/null and b/mods/protector/textures/doors_trapdoor.png differ diff --git a/mods/protector/textures/doors_trapdoor_side.png b/mods/protector/textures/doors_trapdoor_side.png new file mode 100644 index 0000000..c45d870 Binary files /dev/null and b/mods/protector/textures/doors_trapdoor_side.png differ diff --git a/mods/protector/textures/doors_trapdoor_steel.png b/mods/protector/textures/doors_trapdoor_steel.png new file mode 100644 index 0000000..4ba507d Binary files /dev/null and b/mods/protector/textures/doors_trapdoor_steel.png differ diff --git a/mods/protector/textures/doors_trapdoor_steel_side.png b/mods/protector/textures/doors_trapdoor_steel_side.png new file mode 100644 index 0000000..44c4344 Binary files /dev/null and b/mods/protector/textures/doors_trapdoor_steel_side.png differ diff --git a/mods/protector/textures/doors_wood.png b/mods/protector/textures/doors_wood.png new file mode 100644 index 0000000..d3a62ab Binary files /dev/null and b/mods/protector/textures/doors_wood.png differ diff --git a/mods/protector/textures/doors_wood_a.png b/mods/protector/textures/doors_wood_a.png new file mode 100644 index 0000000..86a747a Binary files /dev/null and b/mods/protector/textures/doors_wood_a.png differ diff --git a/mods/protector/textures/doors_wood_b.png b/mods/protector/textures/doors_wood_b.png new file mode 100644 index 0000000..9665098 Binary files /dev/null and b/mods/protector/textures/doors_wood_b.png differ diff --git a/mods/protector/textures/johnsmith/moreblocks_circle_stone_bricks.png b/mods/protector/textures/johnsmith/moreblocks_circle_stone_bricks.png new file mode 100644 index 0000000..17aed51 Binary files /dev/null and b/mods/protector/textures/johnsmith/moreblocks_circle_stone_bricks.png differ diff --git a/mods/protector/textures/johnsmith/protector_logo.png b/mods/protector/textures/johnsmith/protector_logo.png new file mode 100644 index 0000000..b9ac3d6 Binary files /dev/null and b/mods/protector/textures/johnsmith/protector_logo.png differ diff --git a/mods/protector/textures/license.txt b/mods/protector/textures/license.txt new file mode 100644 index 0000000..e9a2fb0 --- /dev/null +++ b/mods/protector/textures/license.txt @@ -0,0 +1,15 @@ + +following Textures created by Fernando Zapata (CC BY-SA 3.0): + door_wood.png + door_wood_a.png + door_wood_a_r.png + door_wood_b.png + door_wood_b_r.png + +following Textures created by BlockMen (WTFPL): + door_trapdoor.png + +following textures created by sofar (CC-BY-SA-3.0) + doors_trapdoor_steel.png + doors_trapdoor_steel_side.png + door_trapdoor_side.png diff --git a/mods/protector/textures/moreblocks_circle_stone_bricks.png b/mods/protector/textures/moreblocks_circle_stone_bricks.png new file mode 100644 index 0000000..1782c00 Binary files /dev/null and b/mods/protector/textures/moreblocks_circle_stone_bricks.png differ diff --git a/mods/protector/textures/protector_display.png b/mods/protector/textures/protector_display.png new file mode 100644 index 0000000..6d7ec7d Binary files /dev/null and b/mods/protector/textures/protector_display.png differ diff --git a/mods/protector/textures/protector_logo.png b/mods/protector/textures/protector_logo.png new file mode 100644 index 0000000..c6f6f51 Binary files /dev/null and b/mods/protector/textures/protector_logo.png differ diff --git a/mods/protector/tool.lua b/mods/protector/tool.lua new file mode 100644 index 0000000..864c35f --- /dev/null +++ b/mods/protector/tool.lua @@ -0,0 +1,124 @@ + +-- protector placement tool (thanks to Shara for code and idea) + +minetest.register_craftitem("protector:tool", { + description = "Protector Placer Tool (stand near protector, face direction and use)", + inventory_image = "protector_display.png^protector_logo.png", + stack_max = 1, + + on_use = function(itemstack, user, pointed_thing) + + local name = user:get_player_name() + + -- check for protector near player (2 block radius) + local pos = user:get_pos() + local pp = minetest.find_nodes_in_area( + vector.subtract(pos, 2), vector.add(pos, 2), + {"protector:protect", "protector:protect2"}) + + if #pp == 0 then return end -- none found + + pos = pp[1] -- take position of first protector found + + -- get members on protector + local meta = minetest.get_meta(pos) + local members = meta:get_string("members") or "" + + -- get direction player is facing + local dir = minetest.dir_to_facedir( user:get_look_dir() ) + local vec = {x = 0, y = 0, z = 0} + local gap = (protector.radius * 2) + 1 + local pit = user:get_look_pitch() + + -- set placement coords + if pit > 1.2 then + vec.y = gap -- up + elseif pit < -1.2 then + vec.y = -gap -- down + elseif dir == 0 then + vec.z = gap -- north + elseif dir == 1 then + vec.x = gap -- east + elseif dir == 2 then + vec.z = -gap -- south + elseif dir == 3 then + vec.x = -gap -- west + end + + -- new position + pos.x = pos.x + vec.x + pos.y = pos.y + vec.y + pos.z = pos.z + vec.z + + -- does placing a protector overlap existing area + if not protector.can_dig(protector.radius * 2, pos, + user:get_player_name(), true, 3) then + + minetest.chat_send_player(name, + "Overlaps into above players protected area") + + return + end + + -- does a protector already exist ? + if #minetest.find_nodes_in_area( + vector.subtract(pos, 1), vector.add(pos, 1), + {"protector:protect", "protector:protect2"}) > 0 then + + minetest.chat_send_player(name, "Protector already in place!") + return + end + + -- do we have protectors to use ? + local nod + local inv = user:get_inventory() + + if not inv:contains_item("main", "protector:protect") + and not inv:contains_item("main", "protector:protect2") then + minetest.chat_send_player(name, "No protectors available to place!") + return + end + + -- take protector (block first then logo) + if inv:contains_item("main", "protector:protect") then + + inv:remove_item("main", "protector:protect") + nod = "protector:protect" + + elseif inv:contains_item("main", "protector:protect2") then + + inv:remove_item("main", "protector:protect2") + nod = "protector:protect2" + end + + -- place protector + minetest.set_node(pos, {name = nod, param2 = 1}) + + -- set protector metadata + local meta = minetest.get_meta(pos) + + meta:set_string("owner", name) + meta:set_string("infotext", "Protection (owned by " .. name .. ")") + + -- copy members across if holding sneak when using tool + if user:get_player_control().sneak then + meta:set_string("members", members) + else + meta:set_string("members", "") + end + + minetest.chat_send_player(name, + "Protector placed at " .. minetest.pos_to_string(pos)) + + end, +}) + +-- tool recipe +minetest.register_craft({ + output = "protector:tool", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "protector:protect", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + } +}) diff --git a/mods/shutdown/init.lua b/mods/shutdown/init.lua new file mode 100644 index 0000000..68abf44 --- /dev/null +++ b/mods/shutdown/init.lua @@ -0,0 +1,6 @@ +minetest.register_chatcommand("shutdown", { + description = "Shutdown game.", + func = function ( name, param ) + minetest.request_shutdown() + end +}) diff --git a/mods/bucket.diff/license.txt.diff b/mods/skinsdb/.gitignore similarity index 100% rename from mods/bucket.diff/license.txt.diff rename to mods/skinsdb/.gitignore diff --git a/mods/skinsdb/API.md b/mods/skinsdb/API.md new file mode 100644 index 0000000..0e6b293 --- /dev/null +++ b/mods/skinsdb/API.md @@ -0,0 +1,78 @@ +# Skinsdb Interface + +## skins.get_player_skin(player) +Return the skin object assigned to the player. Returns defaout if nothins assigned + +## skins.assign_player_skin(player, skin) +Select the skin for the player. The "skin" parameter could be the skin key or the skin object + +## skins.update_player_skin(player) +Update selected skin visuals on player + +## skins.set_player_skin(player, skin) +``` +skins.assign_player_skin(player, skin) +skins.update_player_skin(player) +``` + +## skins.get_skinlist(assignment, select_unassigned) +Get a list of skin objects matching to the assignment. + +Supported assignments: + - "player:"..playername - Skins directly assigned to a player + +select_unassigned - Select all skins without assignment too (usually the "character_*" skins) + + +## skins.new(key, object) +Create and register a new skin object for given key + - key: Unique skins key, like "character_1" + - object: Optional. Could be a prepared object with redefinitions + +## skins.get(key) +Get existing skin object + +HINT: During build-up phase maybe the next statement is usefull +``` +local skin = skins.get(name) or skins.new(name) +``` + + +# Skin object + +## skin:get_key() +Get the unique skin key + +## skin:set_texture(texture) +Set the skin texture - usually at the init time only + +## skin:get_texture() +Get the skin texture for any reason. Note to apply them the skin:set_skin() should be used + +Could be redefined for dynamic texture generation + +## skin:set_preview(texture) +Set the skin preview - usually at the init time only + +## skin:get_preview() +Get the skin preview + +Could be redefined for dynamic preview texture generation + +## skin:set_skin(player) +Apply the skin to the player. Is called in skins.update_player_skin() + +## skin:set_meta(key, value) +Add a meta information to the skin object + +Note: the information is not stored, therefore should be filled each time during skins registration + +## skin:get_meta(key) +The next metadata keys are usually filled + - name - A name for the skin + - author - The skin author + - license - THe skin texture license + - assignment - is "player:playername" in case the skin is assigned to be privat for a player + +## skin:get_meta_string(key) +Same as get_meta() but does return "" instead of nil if the meta key does not exists diff --git a/mods/skinsdb/README.md b/mods/skinsdb/README.md new file mode 100644 index 0000000..e63c36b --- /dev/null +++ b/mods/skinsdb/README.md @@ -0,0 +1,10 @@ +Skinsdb +===================================================================== +Main: cornernote & Krock +Lisc: GPLv3 +Lisc: Unlicense + By Tirifto + liberate.sh + By jadedctrl + update_skins.sh +Link: https://notabug.org/jadedctrl/OCD3 diff --git a/mods/skinsdb/api.lua b/mods/skinsdb/api.lua new file mode 100644 index 0000000..549e79e --- /dev/null +++ b/mods/skinsdb/api.lua @@ -0,0 +1,34 @@ +-- get current skin +function skins.get_player_skin(player) + local skin = player:get_attribute("skinsdb:skin_key") + return skins.get(skin) or skins.get(skins.default) +end + +-- Assign skin to player +function skins.assign_player_skin(player, skin) + local skin_obj + local skin_key + if type(skin) == "string" then + skin_obj = skins.get(skin) or skins.get(skins.default) + else + skin_obj = skin + end + skin_key = skin_obj:get_key() + + if skin_key == skins.default then + skin_key = "" + end + player:set_attribute("skinsdb:skin_key", skin_key) +end + +-- update visuals +function skins.update_player_skin(player) + local skin = skins.get_player_skin(player) + skin:set_skin(player) +end + +-- Assign and update +function skins.set_player_skin(player, skin) + skins.assign_player_skin(player, skin) + skins.update_player_skin(player) +end diff --git a/mods/skinsdb/depends.txt b/mods/skinsdb/depends.txt new file mode 100644 index 0000000..6fac624 --- /dev/null +++ b/mods/skinsdb/depends.txt @@ -0,0 +1,4 @@ +intllib? +unified_inventory? +3d_armor? +sfinv? diff --git a/mods/skinsdb/init.lua b/mods/skinsdb/init.lua new file mode 100644 index 0000000..325aa94 --- /dev/null +++ b/mods/skinsdb/init.lua @@ -0,0 +1,40 @@ +-- Unified Skins for Minetest - based modified Bags from unfied_inventory and skins from inventory_plus + +-- Copyright (c) 2012 cornernote, Dean Montgomery +-- Rework 2017 by bell07 +-- License: GPLv3 +-- Boilerplate to support localized strings if intllib mod is installed. + +skins = {} +skins.modpath = minetest.get_modpath(minetest.get_current_modname()) +skins.default = "character" + +dofile(skins.modpath.."/skin_meta_api.lua") +dofile(skins.modpath.."/api.lua") +dofile(skins.modpath.."/skinlist.lua") + +-- Unified inventory page/integration +if minetest.get_modpath("unified_inventory") then + dofile(skins.modpath.."/unified_inventory_page.lua") +end + +if minetest.get_modpath("sfinv") then + dofile(skins.modpath.."/sfinv_page.lua") +end + +-- 3d_armor compatibility +if minetest.global_exists("armor") then + armor.get_player_skin = function(self, name) + local skin = skins.get_player_skin(minetest.get_player_by_name(name)) + return skin:get_texture() + end + armor.get_preview = function(self, name) + local skin = skins.get_player_skin(minetest.get_player_by_name(name)) + return skin:get_preview() + end +end + +-- Update skin on join +minetest.register_on_joinplayer(function(player) + skins.update_player_skin(player) +end) diff --git a/mods/skinsdb/liberate.sh b/mods/skinsdb/liberate.sh new file mode 100755 index 0000000..94142a0 --- /dev/null +++ b/mods/skinsdb/liberate.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# Author: Tirifto +# License: Public domain (see at the end) +# Description: This script will find any skins under known non-free +# licences, and will delete them. Numbering of the +# remaining files will not be changed. + +grep -l '^CC BY-NC-SA' meta/*.txt > 'remove-these-files-1.txt' + +if [ -s 'remove-these-files-1.txt' ] + + then + + sed -e 's@meta/@textures/@' -e 's@.txt@.png@' \ + 'remove-these-files-1.txt' > 'remove-these-files-2.txt' + + sed 's@.png@_preview.png@' \ + 'remove-these-files-2.txt' > 'remove-these-files-3.txt' + + rm `cat remove-these-files-1.txt` + rm `cat remove-these-files-2.txt` + rm `cat remove-these-files-3.txt` + + rm 'remove-these-files-1.txt' + rm 'remove-these-files-2.txt' + rm 'remove-these-files-3.txt' + +fi + +# This is free and unencumbered software released into the public domain. +# +# Anyone is free to copy, modify, publish, use, compile, sell, or +# distribute this software, either in source code form or as a compiled +# binary, for any purpose, commercial or non-commercial, and by any +# means. +# +# In jurisdictions that recognize copyright laws, the author or authors +# of this software dedicate any and all copyright interest in the +# software to the public domain. We make this dedication for the benefit +# of the public at large and to the detriment of our heirs and +# successors. We intend this dedication to be an overt act of +# relinquishment in perpetuity of all present and future rights to this +# software under copyright law. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. diff --git a/mods/skinsdb/locale/de.txt b/mods/skinsdb/locale/de.txt new file mode 100644 index 0000000..6ad87f3 --- /dev/null +++ b/mods/skinsdb/locale/de.txt @@ -0,0 +1,9 @@ +# Translation by Xanthin + +Raw texture = Rohtextur +Name = Name +Author = Autor +Change = Wechseln +Page = Seite +License = Lizenz +Description = Beschreibung diff --git a/mods/skinsdb/locale/template.txt b/mods/skinsdb/locale/template.txt new file mode 100644 index 0000000..6412b7f --- /dev/null +++ b/mods/skinsdb/locale/template.txt @@ -0,0 +1,9 @@ +# Template + +Raw texture = +Name = +Author = +Change = +Page = +License = +Description = diff --git a/mods/skinsdb/meta/character.txt b/mods/skinsdb/meta/character.txt new file mode 100755 index 0000000..b4599e6 --- /dev/null +++ b/mods/skinsdb/meta/character.txt @@ -0,0 +1,3 @@ +Sam 0 +Jordach +CC BY-SA 3.0 diff --git a/mods/skinsdb/meta/character_10.txt b/mods/skinsdb/meta/character_10.txt new file mode 100755 index 0000000..a7cf54b --- /dev/null +++ b/mods/skinsdb/meta/character_10.txt @@ -0,0 +1,3 @@ +Gavorche (MediaGoblin) +Tirifto +FAL 1.3 diff --git a/mods/skinsdb/meta/character_11.txt b/mods/skinsdb/meta/character_11.txt new file mode 100755 index 0000000..7b5eed7 --- /dev/null +++ b/mods/skinsdb/meta/character_11.txt @@ -0,0 +1,3 @@ +CharlieBrown +calher +IDK diff --git a/mods/skinsdb/meta/character_12.txt b/mods/skinsdb/meta/character_12.txt new file mode 100755 index 0000000..19985a4 --- /dev/null +++ b/mods/skinsdb/meta/character_12.txt @@ -0,0 +1,3 @@ +addi +addi +CC 0 (1.0) diff --git a/mods/skinsdb/meta/character_13.txt b/mods/skinsdb/meta/character_13.txt new file mode 100755 index 0000000..788fc9c --- /dev/null +++ b/mods/skinsdb/meta/character_13.txt @@ -0,0 +1,3 @@ +Witch +loupicate +CC BY-SA 3.0 diff --git a/mods/skinsdb/meta/character_14.txt b/mods/skinsdb/meta/character_14.txt new file mode 100644 index 0000000..2987323 --- /dev/null +++ b/mods/skinsdb/meta/character_14.txt @@ -0,0 +1,3 @@ +Tree +Evergreen +CC-BY-SA 3.0 diff --git a/mods/skinsdb/meta/character_15.txt b/mods/skinsdb/meta/character_15.txt new file mode 100644 index 0000000..a049a74 --- /dev/null +++ b/mods/skinsdb/meta/character_15.txt @@ -0,0 +1,3 @@ +B +sdzen +CC BY-SA 3.0 diff --git a/mods/skinsdb/meta/character_2.txt b/mods/skinsdb/meta/character_2.txt new file mode 100755 index 0000000..efc1752 --- /dev/null +++ b/mods/skinsdb/meta/character_2.txt @@ -0,0 +1,3 @@ +Tirifto +Tirifto +FAL 1.3 diff --git a/mods/skinsdb/meta/character_3.txt b/mods/skinsdb/meta/character_3.txt new file mode 100755 index 0000000..95e0b1d --- /dev/null +++ b/mods/skinsdb/meta/character_3.txt @@ -0,0 +1,3 @@ +Momo Kisaragi +Tirifto +FAL 1.3 diff --git a/mods/skinsdb/meta/character_4.txt b/mods/skinsdb/meta/character_4.txt new file mode 100755 index 0000000..df4f01c --- /dev/null +++ b/mods/skinsdb/meta/character_4.txt @@ -0,0 +1,3 @@ +Richard Stallman +Tirifto +FAL 1.3 diff --git a/mods/skinsdb/meta/character_5.txt b/mods/skinsdb/meta/character_5.txt new file mode 100755 index 0000000..38b4055 --- /dev/null +++ b/mods/skinsdb/meta/character_5.txt @@ -0,0 +1,3 @@ +St. Ignucius +Tirifto +FAL 1.3 diff --git a/mods/skinsdb/meta/character_6.txt b/mods/skinsdb/meta/character_6.txt new file mode 100755 index 0000000..64cccad --- /dev/null +++ b/mods/skinsdb/meta/character_6.txt @@ -0,0 +1,3 @@ +Smart gnu +Tirifto +FAL 1.3 diff --git a/mods/skinsdb/meta/character_7.txt b/mods/skinsdb/meta/character_7.txt new file mode 100755 index 0000000..eca7abd --- /dev/null +++ b/mods/skinsdb/meta/character_7.txt @@ -0,0 +1,3 @@ +Tux (Linux) +Tirifto +FAL 1.3 diff --git a/mods/skinsdb/meta/character_8.txt b/mods/skinsdb/meta/character_8.txt new file mode 100755 index 0000000..c2289e8 --- /dev/null +++ b/mods/skinsdb/meta/character_8.txt @@ -0,0 +1,3 @@ +Freedo (Linux-libre) +Tirifto +FAL 1.3 diff --git a/mods/skinsdb/meta/character_9.txt b/mods/skinsdb/meta/character_9.txt new file mode 100755 index 0000000..9097e57 --- /dev/null +++ b/mods/skinsdb/meta/character_9.txt @@ -0,0 +1,3 @@ +Flying fish (LibertyBSD) +Tirifto +FAL 1.3 diff --git a/mods/skinsdb/mod.conf b/mods/skinsdb/mod.conf new file mode 100644 index 0000000..d264a64 --- /dev/null +++ b/mods/skinsdb/mod.conf @@ -0,0 +1 @@ +name = skinsdb diff --git a/mods/skinsdb/sfinv_page.lua b/mods/skinsdb/sfinv_page.lua new file mode 100644 index 0000000..c62e7e7 --- /dev/null +++ b/mods/skinsdb/sfinv_page.lua @@ -0,0 +1,117 @@ +local S +if minetest.get_modpath("intllib") then + S = intllib.Getter() +else + S = function(s) return s end +end + +-- generate the current formspec +local function get_formspec(player, context) + local name = player:get_player_name() + local skin = skins.get_player_skin(player) + local texture = skin:get_texture() + local m_name = skin:get_meta_string("name") + local m_author = skin:get_meta_string("author") + local m_license = skin:get_meta_string("license") + -- overview page + local formspec = "image[0,.75;1,2;"..skin:get_preview().."]" + if texture then + formspec = formspec.."label[6,.5;"..S("Raw texture")..":]" + .."image[6,1;2,1;"..skin:get_texture().."]" + end + if m_name ~= "" then + formspec = formspec.."label[2,.5;"..S("Name")..": "..minetest.formspec_escape(m_name).."]" + end + if m_author ~= "" then + formspec = formspec.."label[2,1;"..S("Author")..": "..minetest.formspec_escape(m_author).."]" + end + if m_license ~= "" then + formspec = formspec.."label[2,1.5;"..S("License")..": "..minetest.formspec_escape(m_license).."]" + end + + local page = 1 + if context.skins_page then + page = context.skins_page + else + page = skin:get_meta("inv_page") or 1 + end + + for i = (page-1)*16+1, page*16 do + local skin = context.skins_list[i] + if not skin then + break + end + + local index_p = skin:get_meta("inv_page_index") + local x = (index_p-1) % 8 + local y + if index_p > 8 then + y = 5.5 + else + y = 3.2 + end + formspec = formspec.."image_button["..x..","..y..";1,2;".. + skin:get_preview()..";skins_set$"..i..";]".. + "tooltip[skins_set$"..i..";"..minetest.formspec_escape(skin:get_meta_string("name")).."]" + end + + if context.total_pages > 1 then + local page_prev = page - 1 + local page_next = page + 1 + if page_prev < 1 then + page_prev = context.total_pages + end + if page_next > context.total_pages then + page_next = 1 + end + local page_list = "" + context.dropdown_values = {} + for pg=1, context.total_pages do + local pagename = S("Page").." "..pg.."/"..context.total_pages + context.dropdown_values[pagename] = pg + if pg > 1 then page_list = page_list.."," end + page_list = page_list..pagename + end + formspec = formspec + .."button[0,8.3;1,.5;skins_page$"..page_prev..";<<]" + .."dropdown[1,8.16;6.5,.5;skins_selpg;"..page_list..";"..page.."]" + .."button[7,8.3;1,.5;skins_page$"..page_next..";>>]" + end + return formspec +end + +sfinv.register_page("skins:overview", { + title = "Skins", + get = function(self, player, context) + -- collect skins data + context.skins_list = skins.get_skinlist("player:"..player:get_player_name(), true) + context.total_pages = 1 + for i, skin in ipairs(context.skins_list ) do + local page = math.floor((i-1) / 16)+1 + skin:set_meta("inv_page", page) + skin:set_meta("inv_page_index", (i-1)%16+1) + context.total_pages = page + end + -- generate first formspec + return sfinv.make_formspec(player, context, get_formspec(player, context)) + end, + on_player_receive_fields = function(self, player, context, fields) + for field, _ in pairs(fields) do + local current = string.split(field, "$", 2) + if current[1] == "skins_set" then + skins.set_player_skin(player, context.skins_list[tonumber(current[2])]) + sfinv.set_player_inventory_formspec(player) + return + elseif current[1] == "skins_page" then + context.skins_page = tonumber(current[2]) + sfinv.set_player_inventory_formspec(player) + return + end + end + if fields.skins_selpg then + context.skins_page = tonumber(context.dropdown_values[fields.skins_selpg]) + sfinv.set_player_inventory_formspec(player) + return + end + end +}) diff --git a/mods/skinsdb/skin_meta_api.lua b/mods/skinsdb/skin_meta_api.lua new file mode 100644 index 0000000..5219e1d --- /dev/null +++ b/mods/skinsdb/skin_meta_api.lua @@ -0,0 +1,71 @@ +skins.meta = {} + +local skin_class = {} +skin_class.__index = skin_class +----------------------- +-- Class methods +----------------------- +-- constructor +function skins.new(key, object) + assert(key, 'Unique skins key required, like "character_1"') + local self = object or {} + setmetatable(self, skin_class) + self.__index = skin_class + + self._key = key + self._sort_id = 0 + skins.meta[key] = self + return self +end + +-- getter +function skins.get(key) + return skins.meta[key] +end + +-- Skin methods +-- In this implementation it is just access to attrubutes wrapped +-- but this way allow to redefine the functionality for more complex skins provider +function skin_class:get_key() + return self._key +end + +function skin_class:set_meta(key, value) + self[key] = value +end + +function skin_class:get_meta(key) + return self[key] +end + +function skin_class:get_meta_string(key) + return tostring(self:get_meta(key) or "") +end + +function skin_class:set_texture(value) + self._texture = value +end + +function skin_class:get_texture() + return self._texture +end + +function skin_class:set_preview(value) + self._preview = value +end + +function skin_class:get_preview() + return self._preview or "player.png" +end + +function skin_class:set_skin(player) + player:set_properties({ + visual_size = { + x = 1, + y = 1 + } + }) + player:set_properties({ + textures = {self:get_texture()}, + }) +end diff --git a/mods/skinsdb/skinlist.lua b/mods/skinsdb/skinlist.lua new file mode 100644 index 0000000..5d29fe4 --- /dev/null +++ b/mods/skinsdb/skinlist.lua @@ -0,0 +1,67 @@ + +local skins_dir_list = minetest.get_dir_list(skins.modpath.."/textures") + +for _, fn in pairs(skins_dir_list) do + local nameparts = string.gsub(fn, "[.]", "_"):split("_") + + local name, sort_id, assignment, is_preview + if nameparts[1] == "character" then + if tonumber(nameparts[2]) == nil then --default skin character.png + sort_id = 5000 + name = "character" + is_preview = (nameparts[2] == "preview") + else + sort_id = tonumber(nameparts[2])+5000 + name = "character_"..nameparts[2] + is_preview = (nameparts[3] == "preview") + end + elseif nameparts[1] == "player" then + assignment = "player:"..nameparts[2] + name = "player_"..nameparts[2] + if tonumber(nameparts[3]) then + sort_id = tonumber(nameparts[3]) + is_preview = (nameparts[4] == "preview") + name = name.."_"..nameparts[3] + else + sort_id = 1 + is_preview = (nameparts[3] == "preview") + end + end + + if name then + local skin_obj = skins.get(name) or skins.new(name) + if is_preview then + skin_obj:set_preview(fn) + else + skin_obj:set_texture(fn) + skin_obj:set_meta("_sort_id", sort_id) + if assignment then + skin_obj:set_meta("assignment", assignment) + end + local file = io.open(skins.modpath.."/meta/"..name..".txt", "r") + if file then + local data = string.split(file:read("*all"), "\n", 3) + file:close() + skin_obj:set_meta("name", data[1]) + skin_obj:set_meta("author", data[2]) + skin_obj:set_meta("license", data[3]) + else + skin_obj:set_meta("name", name) + end + end + end +end + +-- get skinlist. If assignment given ("mod:wardrobe" or "player:bell07") select skins matches the assignment. select_unassigned selects the skins without any assignment too +function skins.get_skinlist(assignment, select_unassigned) + local skinslist = {} + for _, skin in pairs(skins.meta) do + if not assignment or + assignment == skin:get_meta("assignment") or + (select_unassigned and skin:get_meta("assignment") == nil) then + table.insert(skinslist, skin) + end + end + table.sort(skinslist, function(a,b) return a:get_meta("_sort_id") < b:get_meta("_sort_id") end) + return skinslist +end diff --git a/mods/skinsdb/textures/character.png b/mods/skinsdb/textures/character.png new file mode 100755 index 0000000..24d794a Binary files /dev/null and b/mods/skinsdb/textures/character.png differ diff --git a/mods/skinsdb/textures/character_10.png b/mods/skinsdb/textures/character_10.png new file mode 100755 index 0000000..50c8c5c Binary files /dev/null and b/mods/skinsdb/textures/character_10.png differ diff --git a/mods/skinsdb/textures/character_10_preview.png b/mods/skinsdb/textures/character_10_preview.png new file mode 100755 index 0000000..d0a1c96 Binary files /dev/null and b/mods/skinsdb/textures/character_10_preview.png differ diff --git a/mods/skinsdb/textures/character_11.png b/mods/skinsdb/textures/character_11.png new file mode 100755 index 0000000..4b26ccd Binary files /dev/null and b/mods/skinsdb/textures/character_11.png differ diff --git a/mods/skinsdb/textures/character_11_preview.png b/mods/skinsdb/textures/character_11_preview.png new file mode 100755 index 0000000..0551d59 Binary files /dev/null and b/mods/skinsdb/textures/character_11_preview.png differ diff --git a/mods/skinsdb/textures/character_12.png b/mods/skinsdb/textures/character_12.png new file mode 100755 index 0000000..e705f66 Binary files /dev/null and b/mods/skinsdb/textures/character_12.png differ diff --git a/mods/skinsdb/textures/character_12_preview.png b/mods/skinsdb/textures/character_12_preview.png new file mode 100755 index 0000000..7d26291 Binary files /dev/null and b/mods/skinsdb/textures/character_12_preview.png differ diff --git a/mods/skinsdb/textures/character_13.png b/mods/skinsdb/textures/character_13.png new file mode 100644 index 0000000..8bdfa83 Binary files /dev/null and b/mods/skinsdb/textures/character_13.png differ diff --git a/mods/skinsdb/textures/character_13_preview.png b/mods/skinsdb/textures/character_13_preview.png new file mode 100755 index 0000000..dc4e876 Binary files /dev/null and b/mods/skinsdb/textures/character_13_preview.png differ diff --git a/mods/skinsdb/textures/character_14.png b/mods/skinsdb/textures/character_14.png new file mode 100644 index 0000000..4179ce7 Binary files /dev/null and b/mods/skinsdb/textures/character_14.png differ diff --git a/mods/skinsdb/textures/character_14_preview.png b/mods/skinsdb/textures/character_14_preview.png new file mode 100644 index 0000000..d40b73f Binary files /dev/null and b/mods/skinsdb/textures/character_14_preview.png differ diff --git a/mods/skinsdb/textures/character_15.png b/mods/skinsdb/textures/character_15.png new file mode 100644 index 0000000..e623374 Binary files /dev/null and b/mods/skinsdb/textures/character_15.png differ diff --git a/mods/skinsdb/textures/character_15_preview.png b/mods/skinsdb/textures/character_15_preview.png new file mode 100644 index 0000000..4418b92 Binary files /dev/null and b/mods/skinsdb/textures/character_15_preview.png differ diff --git a/mods/skinsdb/textures/character_2.png b/mods/skinsdb/textures/character_2.png new file mode 100755 index 0000000..f2f48f0 Binary files /dev/null and b/mods/skinsdb/textures/character_2.png differ diff --git a/mods/skinsdb/textures/character_2_preview.png b/mods/skinsdb/textures/character_2_preview.png new file mode 100755 index 0000000..4fad4ef Binary files /dev/null and b/mods/skinsdb/textures/character_2_preview.png differ diff --git a/mods/skinsdb/textures/character_3.png b/mods/skinsdb/textures/character_3.png new file mode 100755 index 0000000..f7b19ae Binary files /dev/null and b/mods/skinsdb/textures/character_3.png differ diff --git a/mods/skinsdb/textures/character_3_preview.png b/mods/skinsdb/textures/character_3_preview.png new file mode 100755 index 0000000..cd9560e Binary files /dev/null and b/mods/skinsdb/textures/character_3_preview.png differ diff --git a/mods/skinsdb/textures/character_4.png b/mods/skinsdb/textures/character_4.png new file mode 100755 index 0000000..54f1657 Binary files /dev/null and b/mods/skinsdb/textures/character_4.png differ diff --git a/mods/skinsdb/textures/character_4_preview.png b/mods/skinsdb/textures/character_4_preview.png new file mode 100755 index 0000000..a261655 Binary files /dev/null and b/mods/skinsdb/textures/character_4_preview.png differ diff --git a/mods/skinsdb/textures/character_5.png b/mods/skinsdb/textures/character_5.png new file mode 100755 index 0000000..92ae4f0 Binary files /dev/null and b/mods/skinsdb/textures/character_5.png differ diff --git a/mods/skinsdb/textures/character_5_preview.png b/mods/skinsdb/textures/character_5_preview.png new file mode 100755 index 0000000..de8a706 Binary files /dev/null and b/mods/skinsdb/textures/character_5_preview.png differ diff --git a/mods/skinsdb/textures/character_6.png b/mods/skinsdb/textures/character_6.png new file mode 100755 index 0000000..3e72dee Binary files /dev/null and b/mods/skinsdb/textures/character_6.png differ diff --git a/mods/skinsdb/textures/character_6_preview.png b/mods/skinsdb/textures/character_6_preview.png new file mode 100755 index 0000000..d1da1ae Binary files /dev/null and b/mods/skinsdb/textures/character_6_preview.png differ diff --git a/mods/skinsdb/textures/character_7.png b/mods/skinsdb/textures/character_7.png new file mode 100755 index 0000000..1848a99 Binary files /dev/null and b/mods/skinsdb/textures/character_7.png differ diff --git a/mods/skinsdb/textures/character_7_preview.png b/mods/skinsdb/textures/character_7_preview.png new file mode 100755 index 0000000..91c83ff Binary files /dev/null and b/mods/skinsdb/textures/character_7_preview.png differ diff --git a/mods/skinsdb/textures/character_8.png b/mods/skinsdb/textures/character_8.png new file mode 100755 index 0000000..fe488de Binary files /dev/null and b/mods/skinsdb/textures/character_8.png differ diff --git a/mods/skinsdb/textures/character_8_preview.png b/mods/skinsdb/textures/character_8_preview.png new file mode 100755 index 0000000..32add0e Binary files /dev/null and b/mods/skinsdb/textures/character_8_preview.png differ diff --git a/mods/skinsdb/textures/character_9.png b/mods/skinsdb/textures/character_9.png new file mode 100755 index 0000000..cde47e2 Binary files /dev/null and b/mods/skinsdb/textures/character_9.png differ diff --git a/mods/skinsdb/textures/character_9_preview.png b/mods/skinsdb/textures/character_9_preview.png new file mode 100755 index 0000000..85f18fb Binary files /dev/null and b/mods/skinsdb/textures/character_9_preview.png differ diff --git a/mods/skinsdb/textures/character_placeholder_preview.png b/mods/skinsdb/textures/character_placeholder_preview.png new file mode 100644 index 0000000..d84dc04 Binary files /dev/null and b/mods/skinsdb/textures/character_placeholder_preview.png differ diff --git a/mods/skinsdb/textures/character_preview.png b/mods/skinsdb/textures/character_preview.png new file mode 100755 index 0000000..62a9ff2 Binary files /dev/null and b/mods/skinsdb/textures/character_preview.png differ diff --git a/mods/skinsdb/textures/skins_button.png b/mods/skinsdb/textures/skins_button.png new file mode 100755 index 0000000..69b042b Binary files /dev/null and b/mods/skinsdb/textures/skins_button.png differ diff --git a/mods/skinsdb/unified_inventory_page.lua b/mods/skinsdb/unified_inventory_page.lua new file mode 100644 index 0000000..58e8ae6 --- /dev/null +++ b/mods/skinsdb/unified_inventory_page.lua @@ -0,0 +1,126 @@ +local S +if minetest.get_modpath("intllib") then + S = intllib.Getter() +else + S = function(s) return s end +end + +local dropdown_values = {} +local skins_reftab = {} +local skins_list = skins.get_skinlist() +unified_inventory.register_page("skins", { + get_formspec = function(player) + local name = player:get_player_name() + local skin = skins.get_player_skin(player) + local texture = skin:get_texture() + local m_name = skin:get_meta_string("name") + local m_author = skin:get_meta_string("author") + local m_license = skin:get_meta_string("license") + local formspec = "background[0.06,0.99;7.92,7.52;ui_misc_form.png]".."image[0,.75;1,2;"..skin:get_preview().."]" + if texture then + formspec=formspec.."label[6,.5;"..S("Raw texture")..":]" + .."image[6,1;2,1;"..texture.."]" + end + if m_name ~= "" then + formspec = formspec.."label[2,.5;"..S("Name")..": "..minetest.formspec_escape(m_name).."]" + end + if m_author ~= "" then + formspec = formspec.."label[2,1;"..S("Author")..": "..minetest.formspec_escape(m_author).."]" + end + if m_license ~= "" then + formspec = formspec.."label[2,1.5;"..S("License")..": "..minetest.formspec_escape(m_license).."]" + end + + local page = skin:get_meta("inv_page") or 1 + formspec = formspec .. "button[.75,3;6.5,.5;skins_page$"..page..";"..S("Change").."]" + return {formspec=formspec} + end, +}) + +unified_inventory.register_button("skins", { + type = "image", + image = "skins_button.png", +}) + +-- Create all of the skin-picker pages. +local total_pages = 1 +for i, skin in ipairs(skins_list) do + local page = math.floor((i-1) / 16)+1 + skin:set_meta("inv_page", page) + skin:set_meta("inv_page_index", (i-1)%16+1) + total_pages = page +end + +for page=1, total_pages do + local formspec = "background[0.06,0.99;7.92,7.52;ui_misc_form.png]" + for i = (page-1)*16+1, page*16 do + local skin = skins_list[i] + if not skin then + break + end + + local index_p = skin:get_meta("inv_page_index") + local x = (index_p-1) % 8 + local y + if index_p > 8 then + y = 1.8 + else + y = -0.1 + end + formspec = (formspec.."image_button["..x..","..y..";1,2;".. + skin:get_preview()..";skins_set$"..i..";]".. + "tooltip[skins_set$"..i..";"..minetest.formspec_escape(skin:get_meta_string("name")).."]") + end + if total_pages > 1 then + local page_prev = page - 1 + local page_next = page + 1 + if page_prev < 1 then + page_prev = total_pages + end + if page_next > total_pages then + page_next = 1 + end + local page_list = "" + dropdown_values = {} + for pg=1, total_pages do + local pagename = S("Page").." "..pg.."/"..total_pages + dropdown_values[pagename] = pg + if pg > 1 then page_list = page_list.."," end + page_list = page_list..pagename + end + formspec = (formspec + .."button[0,3.8;1,.5;skins_page$"..page_prev..";<<]" + .."dropdown[1,3.68;6.5,.5;skins_selpg;"..page_list..";"..page.."]" + .."button[7,3.8;1,.5;skins_page$"..page_next..";>>]") + end + unified_inventory.register_page("skins_page$"..(page), { + get_formspec = function(player) + return {formspec=formspec} + end + }) +end + + +-- click button handlers +minetest.register_on_player_receive_fields(function(player, formname, fields) + if fields.skins then + unified_inventory.set_inventory_formspec(player, "craft") + return + end + for field, _ in pairs(fields) do + local current = string.split(field, "$", 2) + if current[1] == "skins_set" then + skins.set_player_skin(player, skins_list[tonumber(current[2])]) + unified_inventory.set_inventory_formspec(player, "skins") + return + elseif current[1] == "skins_page" then + unified_inventory.set_inventory_formspec(player, "skins_page$"..current[2]) + return + end + end + if fields.skins_selpg then + local page = dropdown_values[fields.skins_selpg] + unified_inventory.set_inventory_formspec(player, "skins_page$"..(page)) + return + end +end) diff --git a/mods/skinsdb/update_skins.sh b/mods/skinsdb/update_skins.sh new file mode 100644 index 0000000..9b74ba7 --- /dev/null +++ b/mods/skinsdb/update_skins.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +cd /root/.minetest/games/OCD3/mods/minetest-skinsdb + +# this tarball updates with new uploads every hour +wget https://libregamenight.xyz/minetest/skins.tar.gz +tar -zxvf skins.tar.gz +rm skins.tar.gz diff --git a/mods/spawn/init.lua b/mods/spawn/init.lua new file mode 100644 index 0000000..222cd9c --- /dev/null +++ b/mods/spawn/init.lua @@ -0,0 +1,17 @@ +-- GNU GPLv3+ +-- jadedctrl + +minetest.register_chatcommand("spawn", { + description = "Teleport to spawn", + func = function(player_name) + local player = minetest.get_player_by_name(player_name) + + if minetest.setting_get("static_spawnpoint") + then + player:setpos(minetest.string_to_pos(minetest.setting_get("static_spawnpoint"))) + else + minetest.chat_send_player(player_name, "No static spawn is set-- the gods can't help you now.") + minetest.chat_send_player(player_name, "It's time to take action: perhaps /killme, if you're in a bind?") + end + end +}) diff --git a/mods/sprint/COPYING b/mods/sprint/COPYING new file mode 100644 index 0000000..0e259d4 --- /dev/null +++ b/mods/sprint/COPYING @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/mods/sprint/README.md b/mods/sprint/README.md new file mode 100644 index 0000000..0d8d206 --- /dev/null +++ b/mods/sprint/README.md @@ -0,0 +1,7 @@ +Sprint +===================================================================== +Main: GunshipPenguin +Lisc: CC0 +Text: CC0 + By Tirifto +Link: https://github.com/GunshipPenguin/sprint diff --git a/mods/sprint/README.md.diff b/mods/sprint/README.md.diff new file mode 100644 index 0000000..94a6448 --- /dev/null +++ b/mods/sprint/README.md.diff @@ -0,0 +1,71 @@ +1,62c1,7 +< Sprint Mod For Minetest by GunshipPenguin +< +< Allows the player to sprint by either double tapping w or pressing e. +< By default, sprinting will make the player travel 80% faster and +< allow him/her to jump 10% higher. Also adds a stamina bar that goes +< down when the player sprints and goes up when he/she isn't +< sprinting. +< +< This mod is compatible with the HUD bars [hudbars] mod, but does +< not depend on it. In this care, a green HUD bar will be displayed, +< also showing a number. +< If this mod is not present, a standard statbar with 0-20 +< “half-arrows†is shown, which is a bit more coarse than the HUD +< bar version. +< +< +< Licence: CC0 (see COPYING file) +< +< --- +< +< This mod can be configured by changing the variables declared in +< the start of init.lua. The following is a brief explanation of each +< one. +< +< SPRINT_METHOD (default 1) +< +< What a player has to do to start sprinting. 0 = double tap w, 1 = press e. +< Note that if you have the fast privlige, and have the fast +< speed turned on, you will run very, very fast. You can toggle this +< by pressing j. +< +< SPRINT_SPEED (default 1.5) +< +< How fast the player will move when sprinting as opposed to normal +< movement speed. 1.0 represents normal speed so 1.5 would mean that a +< sprinting player would travel 50% faster than a walking player and +< 2.4 would mean that a sprinting player would travel 140% faster than +< a walking player. +< +< SPRINT_JUMP (default 1.1) +< +< How high the player will jump when sprinting as opposed to normal +< jump height. Same as SPRINT_SPEED, just controls jump height while +< sprinting rather than speed. +< +< SPRINT_STAMINA (default 20) +< +< How long the player can sprint for in seconds. Each player has a +< stamina variable assigned to them, it is initially set to +< SPRINT_STAMINA and can go no higher. When the player is sprinting, +< this variable ticks down once each second, and when it reaches 0, +< the player stops sprinting. It ticks back up when the player isn't +< sprinting and stops at SPRINT_STAMINA. Set this to a huge value if +< you want unlimited sprinting. +< +< SPRINT_TIMEOUT (default 0.5) +< +< Only used if SPRINT_METHOD = 0. +< How much time the player has after releasing w, to press w again and +< start sprinting. Setting this too high will result in unwanted +< sprinting and setting it too low will result in it being +< difficult/impossible to sprint. +--- +> Sprint +> ===================================================================== +> Main: GunshipPenguin +> Lisc: CC0 +> Text: CC0 +> By Tirifto +> Link: https://github.com/GunshipPenguin/sprint diff --git a/mods/sprint/depends.txt b/mods/sprint/depends.txt new file mode 100644 index 0000000..3e1d5c2 --- /dev/null +++ b/mods/sprint/depends.txt @@ -0,0 +1 @@ +hudbars? diff --git a/mods/sprint/esprint.lua b/mods/sprint/esprint.lua new file mode 100644 index 0000000..f103c7f --- /dev/null +++ b/mods/sprint/esprint.lua @@ -0,0 +1,125 @@ +--[[ +Sprint mod for Minetest by GunshipPenguin + +To the extent possible under law, the author(s) +have dedicated all copyright and related and neighboring rights +to this software to the public domain worldwide. This software is +distributed without any warranty. +]] + +local players = {} +local staminaHud = {} + +minetest.register_on_joinplayer(function(player) + local playerName = player:get_player_name() + + players[playerName] = { + sprinting = false, + timeOut = 0, + stamina = SPRINT_STAMINA, + shouldSprint = false, + } + if SPRINT_HUDBARS_USED then + hb.init_hudbar(player, "sprint") + else + players[playerName].hud = player:hud_add({ + hud_elem_type = "statbar", + position = {x=0.5,y=1}, + size = {x=24, y=24}, + text = "sprint_stamina_icon.png", + number = 20, + alignment = {x=0,y=1}, + offset = {x=-263, y=-110}, + } + ) + end +end) +minetest.register_on_leaveplayer(function(player) + local playerName = player:get_player_name() + players[playerName] = nil +end) +minetest.register_globalstep(function(dtime) + --Get the gametime + local gameTime = minetest.get_gametime() + + --Loop through all connected players + for playerName,playerInfo in pairs(players) do + local player = minetest.get_player_by_name(playerName) + if player ~= nil then + --Check if the player should be sprinting + if player:get_player_control()["aux1"] and player:get_player_control()["up"] then + players[playerName]["shouldSprint"] = true + else + players[playerName]["shouldSprint"] = false + end + + --If the player is sprinting, create particles behind him/her + if playerInfo["sprinting"] == true and gameTime % 0.1 == 0 then + local numParticles = math.random(1, 2) + local playerPos = player:getpos() + local playerNode = minetest.get_node({x=playerPos["x"], y=playerPos["y"]-1, z=playerPos["z"]}) + if playerNode["name"] ~= "air" then + for i=1, numParticles, 1 do + minetest.add_particle({ + pos = {x=playerPos["x"]+math.random(-1,1)*math.random()/2,y=playerPos["y"]+0.1,z=playerPos["z"]+math.random(-1,1)*math.random()/2}, + vel = {x=0, y=5, z=0}, + acc = {x=0, y=-13, z=0}, + expirationtime = math.random(), + size = math.random()+0.5, + collisiondetection = true, + vertical = false, + texture = "sprint_particle.png", + }) + end + end + end + + --Adjust player states + if players[playerName]["shouldSprint"] == true then --Stopped + setSprinting(playerName, true) + elseif players[playerName]["shouldSprint"] == false then + setSprinting(playerName, false) + end + + --Lower the player's stamina by dtime if he/she is sprinting and set his/her state to 0 if stamina is zero + if playerInfo["sprinting"] == true then + playerInfo["stamina"] = playerInfo["stamina"] - dtime + if playerInfo["stamina"] <= 0 then + playerInfo["stamina"] = 0 + setSprinting(playerName, false) + end + + --Increase player's stamina if he/she is not sprinting and his/her stamina is less than SPRINT_STAMINA + elseif playerInfo["sprinting"] == false and playerInfo["stamina"] < SPRINT_STAMINA then + playerInfo["stamina"] = playerInfo["stamina"] + dtime + end + -- Cap stamina at SPRINT_STAMINA + if playerInfo["stamina"] > SPRINT_STAMINA then + playerInfo["stamina"] = SPRINT_STAMINA + end + + --Update the players's hud sprint stamina bar + + if SPRINT_HUDBARS_USED then + hb.change_hudbar(player, "sprint", playerInfo["stamina"]) + else + local numBars = (playerInfo["stamina"]/SPRINT_STAMINA)*20 + player:hud_change(playerInfo["hud"], "number", numBars) + end + end + end +end) + +function setSprinting(playerName, sprinting) --Sets the state of a player (0=stopped/moving, 1=sprinting) + local player = minetest.get_player_by_name(playerName) + if players[playerName] then + players[playerName]["sprinting"] = sprinting + if sprinting == true then + player:set_physics_override({speed=SPRINT_SPEED,jump=SPRINT_JUMP}) + elseif sprinting == false then + player:set_physics_override({speed=1.0,jump=1.0}) + end + return true + end + return false +end diff --git a/mods/sprint/init.lua b/mods/sprint/init.lua new file mode 100644 index 0000000..582842d --- /dev/null +++ b/mods/sprint/init.lua @@ -0,0 +1,34 @@ +--[[ +Sprint mod for Minetest by GunshipPenguin + +To the extent possible under law, the author(s) +have dedicated all copyright and related and neighboring rights +to this software to the public domain worldwide. This software is +distributed without any warranty. +]] + +--Configuration variables, these are all explained in README.md +SPRINT_METHOD = 1 +SPRINT_SPEED = 2.0 +SPRINT_JUMP = 1.1 +SPRINT_STAMINA = 20 +SPRINT_TIMEOUT = 0.5 --Only used if SPRINT_METHOD = 0 + +if minetest.get_modpath("hudbars") ~= nil then + hb.register_hudbar("sprint", 0xFFFFFF, "Stamina", + { bar = "sprint_stamina_bar.png", icon = "sprint_stamina_icon.png" }, + SPRINT_STAMINA, SPRINT_STAMINA, + false, "%s: %.1f/%.1f") + SPRINT_HUDBARS_USED = true +else + SPRINT_HUDBARS_USED = false +end + +if SPRINT_METHOD == 0 then + dofile(minetest.get_modpath("sprint") .. "/wsprint.lua") +elseif SPRINT_METHOD == 1 then + dofile(minetest.get_modpath("sprint") .. "/esprint.lua") +else + minetest.log("error", "Sprint Mod - SPRINT_METHOD is not set properly, using e to sprint") + dofile(minetest.get_modpath("sprint") .. "/esprint.lua") +end diff --git a/mods/sprint/init.lua.diff b/mods/sprint/init.lua.diff new file mode 100644 index 0000000..a54584e --- /dev/null +++ b/mods/sprint/init.lua.diff @@ -0,0 +1,4 @@ +12c12 +< SPRINT_SPEED = 1.8 +--- +> SPRINT_SPEED = 2.0 diff --git a/mods/sprint/textures/sprint_particle.png b/mods/sprint/textures/sprint_particle.png new file mode 100644 index 0000000..fa784c0 Binary files /dev/null and b/mods/sprint/textures/sprint_particle.png differ diff --git a/mods/sprint/textures/sprint_stamina_bar.png b/mods/sprint/textures/sprint_stamina_bar.png new file mode 100644 index 0000000..1ca7a75 Binary files /dev/null and b/mods/sprint/textures/sprint_stamina_bar.png differ diff --git a/mods/sprint/textures/sprint_stamina_icon.png b/mods/sprint/textures/sprint_stamina_icon.png new file mode 100644 index 0000000..74b9eed Binary files /dev/null and b/mods/sprint/textures/sprint_stamina_icon.png differ diff --git a/mods/sprint/wsprint.lua b/mods/sprint/wsprint.lua new file mode 100644 index 0000000..3a832e2 --- /dev/null +++ b/mods/sprint/wsprint.lua @@ -0,0 +1,135 @@ +--[[ +Sprint mod for Minetest by GunshipPenguin + +To the extent possible under law, the author(s) +have dedicated all copyright and related and neighboring rights +to this software to the public domain worldwide. This software is +distributed without any warranty. +]] + +local players = {} +local staminaHud = {} + +minetest.register_on_joinplayer(function(player) + local playerName = player:get_player_name() + players[playerName] = { + state = 0, + timeOut = 0, + stamina = SPRINT_STAMINA, + moving = false, + } + + if SPRINT_HUDBARS_USED then + hb.init_hudbar(player, "sprint") + else + players[playerName].hud = player:hud_add({ + hud_elem_type = "statbar", + position = {x=0.5,y=1}, + size = {x=24, y=24}, + text = "sprint_stamina_icon.png", + number = 20, + alignment = {x=0,y=1}, + offset = {x=-263, y=-110}, + } + ) + end +end) +minetest.register_on_leaveplayer(function(player) + local playerName = player:get_player_name() + players[playerName] = nil +end) +minetest.register_globalstep(function(dtime) + --Get the gametime + local gameTime = minetest.get_gametime() + + --Loop through all connected players + for playerName,playerInfo in pairs(players) do + local player = minetest.get_player_by_name(playerName) + if player ~= nil then + --Check if they are moving or not + players[playerName]["moving"] = player:get_player_control()["up"] + + --If the player has tapped w longer than SPRINT_TIMEOUT ago, set his/her state to 0 + if playerInfo["state"] == 2 then + if playerInfo["timeOut"] + SPRINT_TIMEOUT < gameTime then + players[playerName]["timeOut"] = nil + setState(playerName, 0) + end + + --If the player is sprinting, create particles behind him/her + elseif playerInfo["state"] == 3 and gameTime % 0.1 == 0 then + local numParticles = math.random(1, 2) + local playerPos = player:getpos() + local playerNode = minetest.get_node({x=playerPos["x"], y=playerPos["y"]-1, z=playerPos["z"]}) + if playerNode["name"] ~= "air" then + for i=1, numParticles, 1 do + minetest.add_particle({ + pos = {x=playerPos["x"]+math.random(-1,1)*math.random()/2,y=playerPos["y"]+0.1,z=playerPos["z"]+math.random(-1,1)*math.random()/2}, + vel = {x=0, y=5, z=0}, + acc = {x=0, y=-13, z=0}, + expirationtime = math.random(), + size = math.random()+0.5, + collisiondetection = true, + vertical = false, + texture = "sprint_particle.png", + }) + end + end + end + + --Adjust player states + if players[playerName]["moving"] == false and playerInfo["state"] == 3 then --Stopped + setState(playerName, 0) + elseif players[playerName]["moving"] == true and playerInfo["state"] == 0 then --Moving + setState(playerName, 1) + elseif players[playerName]["moving"] == false and playerInfo["state"] == 1 then --Primed + setState(playerName, 2) + elseif players[playerName]["moving"] == true and playerInfo["state"] == 2 then --Sprinting + setState(playerName, 3) + end + + --Lower the player's stamina by dtime if he/she is sprinting and set his/her state to 0 if stamina is zero + if playerInfo["state"] == 3 then + playerInfo["stamina"] = playerInfo["stamina"] - dtime + if playerInfo["stamina"] <= 0 then + playerInfo["stamina"] = 0 + setState(playerName, 0) + end + + --Increase player's stamina if he/she is not sprinting and his/her stamina is less than SPRINT_STAMINA + elseif playerInfo["state"] ~= 3 and playerInfo["stamina"] < SPRINT_STAMINA then + playerInfo["stamina"] = playerInfo["stamina"] + dtime + end + -- Cap stamina at SPRINT_STAMINA + if playerInfo["stamina"] > SPRINT_STAMINA then + playerInfo["stamina"] = SPRINT_STAMINA + end + + --Update the players's hud sprint stamina bar + + if SPRINT_HUDBARS_USED then + hb.change_hudbar(player, "sprint", playerInfo["stamina"]) + else + local numBars = (playerInfo["stamina"]/SPRINT_STAMINA)*20 + player:hud_change(playerInfo["hud"], "number", numBars) + end + end + end +end) + +function setState(playerName, state) --Sets the state of a player (0=stopped, 1=moving, 2=primed, 3=sprinting) + local player = minetest.get_player_by_name(playerName) + local gameTime = minetest.get_gametime() + if players[playerName] then + players[playerName]["state"] = state + if state == 0 then--Stopped + player:set_physics_override({speed=1.0,jump=1.0}) + elseif state == 2 then --Primed + players[playerName]["timeOut"] = gameTime + elseif state == 3 then --Sprinting + player:set_physics_override({speed=SPRINT_SPEED,jump=SPRINT_JUMP}) + end + return true + end + return false +end diff --git a/mods/throwing/README.txt b/mods/throwing/README.txt new file mode 100644 index 0000000..11b3aab --- /dev/null +++ b/mods/throwing/README.txt @@ -0,0 +1,7 @@ +Throwing +===================================================================== +Main: PilzAdam +Lisc: WTFPL +Text: CC0 + By Tirifto +Link: https://github.com/minetest-mods/throwing diff --git a/mods/throwing/arrow.lua b/mods/throwing/arrow.lua new file mode 100644 index 0000000..1b922d6 --- /dev/null +++ b/mods/throwing/arrow.lua @@ -0,0 +1,86 @@ +minetest.register_craftitem("throwing:arrow", { + description = "Arrow", + inventory_image = "throwing_arrow.png", +}) + +minetest.register_node("throwing:arrow_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -- Shaft + {-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, + --Spitze + {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17}, + {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17}, + --Federn + {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17}, + {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17}, + {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17}, + {6.5/17, -1.5/17, -1.5/17, 7.5/17, -2.5/17, -2.5/17}, + + {7.5/17, 2.5/17, 2.5/17, 8.5/17, 3.5/17, 3.5/17}, + {8.5/17, -3.5/17, 3.5/17, 7.5/17, -2.5/17, 2.5/17}, + {8.5/17, 3.5/17, -3.5/17, 7.5/17, 2.5/17, -2.5/17}, + {7.5/17, -2.5/17, -2.5/17, 8.5/17, -3.5/17, -3.5/17}, + } + }, + tiles = {"throwing_arrow.png", "throwing_arrow.png", "throwing_arrow_back.png", "throwing_arrow_front.png", "throwing_arrow_2.png", "throwing_arrow.png"}, + groups = {not_in_creative_inventory=1}, +}) + +local THROWING_ARROW_ENTITY={ + physical = false, + timer=0, + visual = "wielditem", + visual_size = {x=0.1, y=0.1}, + textures = {"throwing:arrow_box"}, + lastpos={}, + collisionbox = {0,0,0,0,0,0}, +} + +THROWING_ARROW_ENTITY.on_step = function(self, dtime) + self.timer=self.timer+dtime + local pos = self.object:getpos() + local node = minetest.env:get_node(pos) + + if self.timer>0.2 then + local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "throwing:arrow_entity" and obj:get_luaentity().name ~= "__builtin:item" then + local damage = 3 + obj:punch(self.object, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=damage}, + }, nil) + self.object:remove() + end + else + local damage = 3 + obj:punch(self.object, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=damage}, + }, nil) + self.object:remove() + end + end + end + + if self.lastpos.x~=nil then + if node.name ~= "air" then + minetest.env:add_item(self.lastpos, 'throwing:arrow') + self.object:remove() + end + end + self.lastpos={x=pos.x, y=pos.y, z=pos.z} +end + +minetest.register_entity("throwing:arrow_entity", THROWING_ARROW_ENTITY) + +minetest.register_craft({ + output = 'throwing:arrow 16', + recipe = { + {'default:stick', 'default:stick', 'default:steel_ingot'}, + } +}) diff --git a/mods/throwing/build_arrow.lua b/mods/throwing/build_arrow.lua new file mode 100644 index 0000000..2ea1bf6 --- /dev/null +++ b/mods/throwing/build_arrow.lua @@ -0,0 +1,85 @@ +minetest.register_craftitem("throwing:arrow_build", { + description = "Build Arrow", + inventory_image = "throwing_arrow_build.png", +}) + +minetest.register_node("throwing:arrow_build_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -- Shaft + {-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, + --Spitze + {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17}, + {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17}, + --Federn + {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17}, + {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17}, + {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17}, + {6.5/17, -1.5/17, -1.5/17, 7.5/17, -2.5/17, -2.5/17}, + + {7.5/17, 2.5/17, 2.5/17, 8.5/17, 3.5/17, 3.5/17}, + {8.5/17, -3.5/17, 3.5/17, 7.5/17, -2.5/17, 2.5/17}, + {8.5/17, 3.5/17, -3.5/17, 7.5/17, 2.5/17, -2.5/17}, + {7.5/17, -2.5/17, -2.5/17, 8.5/17, -3.5/17, -3.5/17}, + } + }, + tiles = {"throwing_arrow_build.png", "throwing_arrow_build.png", "throwing_arrow_build_back.png", "throwing_arrow_build_front.png", "throwing_arrow_build_2.png", "throwing_arrow_build.png"}, + groups = {not_in_creative_inventory=1}, +}) + +local THROWING_ARROW_ENTITY={ + physical = false, + timer=0, + visual = "wielditem", + visual_size = {x=0.1, y=0.1}, + textures = {"throwing:arrow_build_box"}, + lastpos={}, + collisionbox = {0,0,0,0,0,0}, + node = "", +} + +THROWING_ARROW_ENTITY.on_step = function(self, dtime) + self.timer=self.timer+dtime + local pos = self.object:getpos() + local node = minetest.env:get_node(pos) + + if self.timer>0.2 then + local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 1) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "throwing:arrow_build_entity" and obj:get_luaentity().name ~= "__builtin:item" then + if self.node ~= "" then + minetest.env:set_node(self.lastpos, {name=self.node}) + end + self.object:remove() + end + else + if self.node ~= "" then + minetest.env:set_node(self.lastpos, {name=self.node}) + end + self.object:remove() + end + end + end + + if self.lastpos.x~=nil then + if node.name ~= "air" then + if self.node ~= "" then + minetest.env:set_node(self.lastpos, {name=self.node}) + end + self.object:remove() + end + end + self.lastpos={x=pos.x, y=pos.y, z=pos.z} +end + +minetest.register_entity("throwing:arrow_build_entity", THROWING_ARROW_ENTITY) + +minetest.register_craft({ + output = 'throwing:arrow_build', + recipe = { + {'default:stick', 'default:stick', 'default:shovel_steel'}, + } +}) diff --git a/mods/throwing/depends.txt b/mods/throwing/depends.txt new file mode 100644 index 0000000..252d665 --- /dev/null +++ b/mods/throwing/depends.txt @@ -0,0 +1,4 @@ +default +bucket +fire +farming diff --git a/mods/throwing/dig_arrow.lua b/mods/throwing/dig_arrow.lua new file mode 100644 index 0000000..e756a34 --- /dev/null +++ b/mods/throwing/dig_arrow.lua @@ -0,0 +1,81 @@ +minetest.register_craftitem("throwing:arrow_dig", { + description = "Dig Arrow", + inventory_image = "throwing_arrow_dig.png", +}) + +minetest.register_node("throwing:arrow_dig_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -- Shaft + {-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, + --Spitze + {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17}, + {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17}, + --Federn + {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17}, + {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17}, + {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17}, + {6.5/17, -1.5/17, -1.5/17, 7.5/17, -2.5/17, -2.5/17}, + + {7.5/17, 2.5/17, 2.5/17, 8.5/17, 3.5/17, 3.5/17}, + {8.5/17, -3.5/17, 3.5/17, 7.5/17, -2.5/17, 2.5/17}, + {8.5/17, 3.5/17, -3.5/17, 7.5/17, 2.5/17, -2.5/17}, + {7.5/17, -2.5/17, -2.5/17, 8.5/17, -3.5/17, -3.5/17}, + } + }, + tiles = {"throwing_arrow_dig.png", "throwing_arrow_dig.png", "throwing_arrow_dig_back.png", "throwing_arrow_dig_front.png", "throwing_arrow_dig_2.png", "throwing_arrow_dig.png"}, + groups = {not_in_creative_inventory=1}, +}) + +local THROWING_ARROW_ENTITY={ + physical = false, + timer=0, + visual = "wielditem", + visual_size = {x=0.1, y=0.1}, + textures = {"throwing:arrow_dig_box"}, + lastpos={}, + collisionbox = {0,0,0,0,0,0}, +} + +THROWING_ARROW_ENTITY.on_step = function(self, dtime) + self.timer=self.timer+dtime + local pos = self.object:getpos() + local node = minetest.env:get_node(pos) + + if self.timer>0.2 then + local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 1) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "throwing:arrow_dig_entity" and obj:get_luaentity().name ~= "__builtin:item" then + minetest.env:add_item(pos, 'throwing:arrow_dig') + minetest.env:remove_node(pos) + self.object:remove() + end + else + minetest.env:add_item(pos, 'throwing:arrow_dig') + minetest.env:remove_node(pos) + self.object:remove() + end + end + end + + if self.lastpos.x~=nil then + if node.name ~= "air" then + minetest.env:add_item(self.lastpos, 'throwing:arrow_dig') + minetest.env:remove_node(pos) + self.object:remove() + end + end + self.lastpos={x=pos.x, y=pos.y, z=pos.z} +end + +minetest.register_entity("throwing:arrow_dig_entity", THROWING_ARROW_ENTITY) + +minetest.register_craft({ + output = 'throwing:arrow_dig', + recipe = { + {'default:stick', 'default:stick', 'default:pick_steel'}, + } +}) diff --git a/mods/throwing/fire_arrow.lua b/mods/throwing/fire_arrow.lua new file mode 100644 index 0000000..6100ddd --- /dev/null +++ b/mods/throwing/fire_arrow.lua @@ -0,0 +1,121 @@ +minetest.register_craftitem("throwing:arrow_fire", { + description = "Fire Arrow", + inventory_image = "throwing_arrow_fire.png", +}) + +minetest.register_node("throwing:arrow_fire_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -- Shaft + {-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, + --Spitze + {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17}, + {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17}, + --Federn + {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17}, + {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17}, + {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17}, + {6.5/17, -1.5/17, -1.5/17, 7.5/17, -2.5/17, -2.5/17}, + + {7.5/17, 2.5/17, 2.5/17, 8.5/17, 3.5/17, 3.5/17}, + {8.5/17, -3.5/17, 3.5/17, 7.5/17, -2.5/17, 2.5/17}, + {8.5/17, 3.5/17, -3.5/17, 7.5/17, 2.5/17, -2.5/17}, + {7.5/17, -2.5/17, -2.5/17, 8.5/17, -3.5/17, -3.5/17}, + } + }, + tiles = {"throwing_arrow_fire.png", "throwing_arrow_fire.png", "throwing_arrow_fire_back.png", "throwing_arrow_fire_front.png", "throwing_arrow_fire_2.png", "throwing_arrow_fire.png"}, + groups = {not_in_creative_inventory=1}, +}) + +local THROWING_ARROW_ENTITY={ + physical = false, + timer=0, + visual = "wielditem", + visual_size = {x=0.1, y=0.1}, + textures = {"throwing:arrow_fire_box"}, + lastpos={}, + collisionbox = {0,0,0,0,0,0}, +} + +THROWING_ARROW_ENTITY.on_step = function(self, dtime) + self.timer=self.timer+dtime + local pos = self.object:getpos() + local node = minetest.env:get_node(pos) + + if self.timer>0.2 then + local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "throwing:arrow_fire_entity" and obj:get_luaentity().name ~= "__builtin:item" then + local damage = 5 + obj:punch(self.object, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=damage}, + }, nil) + self.object:remove() + end + else + local damage = 5 + obj:punch(self.object, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=damage}, + }, nil) + self.object:remove() + end + end + end + + if self.lastpos.x~=nil then + if node.name ~= "air" and node.name ~= "throwing:light" then + minetest.env:set_node(self.lastpos, {name="fire:basic_flame"}) + self.object:remove() + end + if math.floor(self.lastpos.x+0.5) ~= math.floor(pos.x+0.5) or math.floor(self.lastpos.y+0.5) ~= math.floor(pos.y+0.5) or math.floor(self.lastpos.z+0.5) ~= math.floor(pos.z+0.5) then + if minetest.env:get_node(self.lastpos).name == "throwing:light" then + minetest.env:remove_node(self.lastpos) + end + if minetest.env:get_node(pos).name == "air" then + minetest.env:set_node(pos, {name="throwing:light"}) + end + end + end + self.lastpos={x=pos.x, y=pos.y, z=pos.z} +end + +minetest.register_entity("throwing:arrow_fire_entity", THROWING_ARROW_ENTITY) + +minetest.register_craft({ + output = 'throwing:arrow_fire 4', + recipe = { + {'default:stick', 'default:stick', 'bucket:bucket_lava'}, + }, + replacements = { + {"bucket:bucket_lava", "bucket:bucket_empty"} + } +}) + +minetest.register_node("throwing:light", { + drawtype = "airlike", + paramtype = "light", + sunlight_propagates = true, + tiles = {"throwing_empty.png"}, + light_source = LIGHT_MAX-4, + selection_box = { + type = "fixed", + fixed = { + {0,0,0,0,0,0} + } + }, + groups = {not_in_creative_inventory=1} +}) + +minetest.register_abm({ + nodenames = {"throwing:light"}, + interval = 10, + chance = 1, + action = function(pos, node) + minetest.env:remove_node(pos) + end +}) diff --git a/mods/throwing/init.lua b/mods/throwing/init.lua new file mode 100644 index 0000000..0182c60 --- /dev/null +++ b/mods/throwing/init.lua @@ -0,0 +1,155 @@ +arrows = { + {"throwing:arrow", "throwing:arrow_entity"}, + {"throwing:arrow_fire", "throwing:arrow_fire_entity"}, + {"throwing:arrow_teleport", "throwing:arrow_teleport_entity"}, + {"throwing:arrow_dig", "throwing:arrow_dig_entity"}, + {"throwing:arrow_build", "throwing:arrow_build_entity"} +} + +local throwing_shoot_arrow = function(itemstack, player) + for _,arrow in ipairs(arrows) do + if player:get_inventory():get_stack("main", player:get_wield_index()+1):get_name() == arrow[1] then + if not minetest.setting_getbool("creative_mode") then + player:get_inventory():remove_item("main", arrow[1]) + end + local playerpos = player:getpos() + local obj = minetest.env:add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, arrow[2]) + local dir = player:get_look_dir() + obj:setvelocity({x=dir.x*19, y=dir.y*19, z=dir.z*19}) + obj:setacceleration({x=dir.x*-3, y=-10, z=dir.z*-3}) + obj:setyaw(player:get_look_yaw()+math.pi) + minetest.sound_play("throwing_sound", {pos=playerpos}) + if obj:get_luaentity().player == "" then + obj:get_luaentity().player = player + end + obj:get_luaentity().node = player:get_inventory():get_stack("main", 1):get_name() + return true + end + end + return false +end + +minetest.register_tool("throwing:bow_wood", { + description = "Wood Bow", + inventory_image = "throwing_bow_wood.png", + stack_max = 1, + on_use = function(itemstack, user, pointed_thing) + if throwing_shoot_arrow(itemstack, user, pointed_thing) then + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535/50) + end + end + return itemstack + end, +}) + +minetest.register_craft({ + output = 'throwing:bow_wood', + recipe = { + {'farming:string', 'group:wood', ''}, + {'farming:string', '', 'group:wood'}, + {'farming:string', 'group:wood', ''}, + } +}) + +minetest.register_tool("throwing:bow_stone", { + description = "Stone Bow", + inventory_image = "throwing_bow_stone.png", + stack_max = 1, + on_use = function(itemstack, user, pointed_thing) + if throwing_shoot_arrow(item, user, pointed_thing) then + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535/100) + end + end + return itemstack + end, +}) + +minetest.register_craft({ + output = 'throwing:bow_stone', + recipe = { + {'farming:string', 'default:cobble', ''}, + {'farming:string', '', 'default:cobble'}, + {'farming:string', 'default:cobble', ''}, + } +}) + +minetest.register_tool("throwing:bow_glass", { + description = "Glass Bow", + inventory_image = "throwing_bow_glass.png", + stack_max = 2, + on_use = function(itemstack, user, pointed_thing) + if throwing_shoot_arrow(item, user, pointed_thing) then + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535/75) + end + end + return itemstack + end, +}) + +minetest.register_craft({ + output = 'throwing:bow_glass', + recipe = { + {'farming:string', 'default:glass', ''}, + {'farming:string', '', 'default:glass'}, + {'farming:string', 'default:glass', ''}, + } +}) + +minetest.register_tool("throwing:bow_steel", { + description = "Steel Bow", + inventory_image = "throwing_bow_steel.png", + stack_max = 1, + on_use = function(itemstack, user, pointed_thing) + if throwing_shoot_arrow(item, user, pointed_thing) then + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535/200) + end + end + return itemstack + end, +}) + +minetest.register_craft({ + output = 'throwing:bow_steel', + recipe = { + {'farming:string', 'default:steel_ingot', ''}, + {'farming:string', '', 'default:steel_ingot'}, + {'farming:string', 'default:steel_ingot', ''}, + } +}) + +minetest.register_tool("throwing:bow_bronze", { + description = "Bronze Bow", + inventory_image = "throwing_bow_bronze.png", + stack_max = 1, + on_use = function(itemstack, user, pointed_thing) + if throwing_shoot_arrow(item, user, pointed_thing) then + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535/250) + end + end + return itemstack + end, +}) + +minetest.register_craft({ + output = 'throwing:bow_bronze', + recipe = { + {'farming:string', 'default:bronze_ingot', ''}, + {'farming:string', '', 'default:bronze_ingot'}, + {'farming:string', 'default:bronze_ingot', ''}, + } +}) + +dofile(minetest.get_modpath("throwing").."/arrow.lua") +dofile(minetest.get_modpath("throwing").."/fire_arrow.lua") +dofile(minetest.get_modpath("throwing").."/teleport_arrow.lua") +dofile(minetest.get_modpath("throwing").."/dig_arrow.lua") +dofile(minetest.get_modpath("throwing").."/build_arrow.lua") + +if minetest.setting_get("log_mods") then + minetest.log("action", "throwing loaded") +end diff --git a/mods/throwing/sounds/throwing_sound.ogg b/mods/throwing/sounds/throwing_sound.ogg new file mode 100644 index 0000000..c8911e5 Binary files /dev/null and b/mods/throwing/sounds/throwing_sound.ogg differ diff --git a/mods/throwing/teleport_arrow.lua b/mods/throwing/teleport_arrow.lua new file mode 100644 index 0000000..301cc5d --- /dev/null +++ b/mods/throwing/teleport_arrow.lua @@ -0,0 +1,88 @@ +minetest.register_craftitem("throwing:arrow_teleport", { + description = "Teleport Arrow", + inventory_image = "throwing_arrow_teleport.png", +}) + +minetest.register_node("throwing:arrow_teleport_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -- Shaft + {-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, + --Spitze + {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17}, + {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17}, + --Federn + {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17}, + {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17}, + {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17}, + {6.5/17, -1.5/17, -1.5/17, 7.5/17, -2.5/17, -2.5/17}, + + {7.5/17, 2.5/17, 2.5/17, 8.5/17, 3.5/17, 3.5/17}, + {8.5/17, -3.5/17, 3.5/17, 7.5/17, -2.5/17, 2.5/17}, + {8.5/17, 3.5/17, -3.5/17, 7.5/17, 2.5/17, -2.5/17}, + {7.5/17, -2.5/17, -2.5/17, 8.5/17, -3.5/17, -3.5/17}, + } + }, + tiles = {"throwing_arrow_teleport.png", "throwing_arrow_teleport.png", "throwing_arrow_teleport_back.png", "throwing_arrow_teleport_front.png", "throwing_arrow_teleport_2.png", "throwing_arrow_teleport.png"}, + groups = {not_in_creative_inventory=1}, +}) + +local THROWING_ARROW_ENTITY={ + physical = false, + timer=0, + visual = "wielditem", + visual_size = {x=0.1, y=0.1}, + textures = {"throwing:arrow_teleport_box"}, + lastpos={}, + collisionbox = {0,0,0,0,0,0}, + player = "", +} + +THROWING_ARROW_ENTITY.on_step = function(self, dtime) + self.timer=self.timer+dtime + local pos = self.object:getpos() + local node = minetest.env:get_node(pos) + + if self.timer>0.2 then + local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "throwing:arrow_teleport_entity" and obj:get_luaentity().name ~= "__builtin:item" then + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("throwing:arrow_teleport")) + end + self.object:remove() + end + else + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("throwing:arrow_teleport")) + end + self.object:remove() + end + end + end + + if self.lastpos.x~=nil then + if node.name ~= "air" then + if self.player ~= "" then + self.player:setpos(self.lastpos) + self.player:get_inventory():add_item("main", ItemStack("throwing:arrow_teleport")) + end + self.object:remove() + end + end + self.lastpos={x=pos.x, y=pos.y, z=pos.z} +end + +minetest.register_entity("throwing:arrow_teleport_entity", THROWING_ARROW_ENTITY) + +minetest.register_craft({ + output = 'throwing:arrow_teleport', + recipe = { + {'default:stick', 'default:stick', 'default:mese'}, + } +}) diff --git a/mods/throwing/textures/throwing_arrow.png b/mods/throwing/textures/throwing_arrow.png new file mode 100644 index 0000000..2ba9523 Binary files /dev/null and b/mods/throwing/textures/throwing_arrow.png differ diff --git a/mods/throwing/textures/throwing_arrow_2.png b/mods/throwing/textures/throwing_arrow_2.png new file mode 100644 index 0000000..2096ba5 Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_2.png differ diff --git a/mods/throwing/textures/throwing_arrow_back.png b/mods/throwing/textures/throwing_arrow_back.png new file mode 100644 index 0000000..9230f9c Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_back.png differ diff --git a/mods/throwing/textures/throwing_arrow_build.png b/mods/throwing/textures/throwing_arrow_build.png new file mode 100644 index 0000000..ae36b41 Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_build.png differ diff --git a/mods/throwing/textures/throwing_arrow_build_2.png b/mods/throwing/textures/throwing_arrow_build_2.png new file mode 100644 index 0000000..89ddf64 Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_build_2.png differ diff --git a/mods/throwing/textures/throwing_arrow_build_back.png b/mods/throwing/textures/throwing_arrow_build_back.png new file mode 100644 index 0000000..9230f9c Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_build_back.png differ diff --git a/mods/throwing/textures/throwing_arrow_build_front.png b/mods/throwing/textures/throwing_arrow_build_front.png new file mode 100644 index 0000000..64d0ce7 Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_build_front.png differ diff --git a/mods/throwing/textures/throwing_arrow_dig.png b/mods/throwing/textures/throwing_arrow_dig.png new file mode 100644 index 0000000..1f78027 Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_dig.png differ diff --git a/mods/throwing/textures/throwing_arrow_dig_2.png b/mods/throwing/textures/throwing_arrow_dig_2.png new file mode 100644 index 0000000..3bdb4c4 Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_dig_2.png differ diff --git a/mods/throwing/textures/throwing_arrow_dig_back.png b/mods/throwing/textures/throwing_arrow_dig_back.png new file mode 100644 index 0000000..9230f9c Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_dig_back.png differ diff --git a/mods/throwing/textures/throwing_arrow_dig_front.png b/mods/throwing/textures/throwing_arrow_dig_front.png new file mode 100644 index 0000000..ac1e3f3 Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_dig_front.png differ diff --git a/mods/throwing/textures/throwing_arrow_fire.png b/mods/throwing/textures/throwing_arrow_fire.png new file mode 100644 index 0000000..5c39115 Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_fire.png differ diff --git a/mods/throwing/textures/throwing_arrow_fire_2.png b/mods/throwing/textures/throwing_arrow_fire_2.png new file mode 100644 index 0000000..4a664d3 Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_fire_2.png differ diff --git a/mods/throwing/textures/throwing_arrow_fire_back.png b/mods/throwing/textures/throwing_arrow_fire_back.png new file mode 100644 index 0000000..9230f9c Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_fire_back.png differ diff --git a/mods/throwing/textures/throwing_arrow_fire_front.png b/mods/throwing/textures/throwing_arrow_fire_front.png new file mode 100644 index 0000000..a52b6a7 Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_fire_front.png differ diff --git a/mods/throwing/textures/throwing_arrow_front.png b/mods/throwing/textures/throwing_arrow_front.png new file mode 100644 index 0000000..8b6828e Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_front.png differ diff --git a/mods/throwing/textures/throwing_arrow_teleport.png b/mods/throwing/textures/throwing_arrow_teleport.png new file mode 100644 index 0000000..3e87b89 Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_teleport.png differ diff --git a/mods/throwing/textures/throwing_arrow_teleport_2.png b/mods/throwing/textures/throwing_arrow_teleport_2.png new file mode 100644 index 0000000..03c8443 Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_teleport_2.png differ diff --git a/mods/throwing/textures/throwing_arrow_teleport_back.png b/mods/throwing/textures/throwing_arrow_teleport_back.png new file mode 100644 index 0000000..9230f9c Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_teleport_back.png differ diff --git a/mods/throwing/textures/throwing_arrow_teleport_front.png b/mods/throwing/textures/throwing_arrow_teleport_front.png new file mode 100644 index 0000000..c6a539b Binary files /dev/null and b/mods/throwing/textures/throwing_arrow_teleport_front.png differ diff --git a/mods/throwing/textures/throwing_bow_bronze.png b/mods/throwing/textures/throwing_bow_bronze.png new file mode 100644 index 0000000..3e6ec52 Binary files /dev/null and b/mods/throwing/textures/throwing_bow_bronze.png differ diff --git a/mods/throwing/textures/throwing_bow_glass.png b/mods/throwing/textures/throwing_bow_glass.png new file mode 100644 index 0000000..4f48d34 Binary files /dev/null and b/mods/throwing/textures/throwing_bow_glass.png differ diff --git a/mods/throwing/textures/throwing_bow_steel.png b/mods/throwing/textures/throwing_bow_steel.png new file mode 100644 index 0000000..2fa4e02 Binary files /dev/null and b/mods/throwing/textures/throwing_bow_steel.png differ diff --git a/mods/throwing/textures/throwing_bow_stone.png b/mods/throwing/textures/throwing_bow_stone.png new file mode 100644 index 0000000..d863b94 Binary files /dev/null and b/mods/throwing/textures/throwing_bow_stone.png differ diff --git a/mods/throwing/textures/throwing_bow_wood.png b/mods/throwing/textures/throwing_bow_wood.png new file mode 100644 index 0000000..fc7320b Binary files /dev/null and b/mods/throwing/textures/throwing_bow_wood.png differ diff --git a/mods/throwing/textures/throwing_empty.png b/mods/throwing/textures/throwing_empty.png new file mode 100644 index 0000000..6232832 Binary files /dev/null and b/mods/throwing/textures/throwing_empty.png differ diff --git a/mods/walking_light/init.lua b/mods/walking_light/init.lua new file mode 100644 index 0000000..515a919 --- /dev/null +++ b/mods/walking_light/init.lua @@ -0,0 +1,144 @@ +local players = {} +local player_positions = {} +local last_wielded = {} + +function round(num) + return math.floor(num + 0.5) +end + +minetest.register_on_joinplayer(function(player) + local player_name = player:get_player_name() + table.insert(players, player_name) + last_wielded[player_name] = player:get_wielded_item():get_name() + local pos = player:getpos() + local rounded_pos = {x=round(pos.x),y=round(pos.y)+1,z=round(pos.z)} + local wielded_item = player:get_wielded_item():get_name() + if wielded_item ~= "default:torch" and wielded_item ~= "walking_light:pick_mese" then + -- Neuberechnung des Lichts erzwingen + minetest.env:add_node(rounded_pos,{type="node",name="default:cobble"}) + minetest.env:add_node(rounded_pos,{type="node",name="air"}) + end + player_positions[player_name] = {} + player_positions[player_name]["x"] = rounded_pos.x; + player_positions[player_name]["y"] = rounded_pos.y; + player_positions[player_name]["z"] = rounded_pos.z; +end) + +minetest.register_on_leaveplayer(function(player) + local player_name = player:get_player_name() + for i,v in ipairs(players) do + if v == player_name then + table.remove(players, i) + last_wielded[player_name] = nil + -- Neuberechnung des Lichts erzwingen + local pos = player:getpos() + local rounded_pos = {x=round(pos.x),y=round(pos.y)+1,z=round(pos.z)} + minetest.env:add_node(rounded_pos,{type="node",name="default:cobble"}) + minetest.env:add_node(rounded_pos,{type="node",name="air"}) + player_positions[player_name]["x"] = nil + player_positions[player_name]["y"] = nil + player_positions[player_name]["z"] = nil + player_positions[player_name]["m"] = nil + player_positions[player_name] = nil + end + end +end) + +minetest.register_globalstep(function(dtime) + for i,player_name in ipairs(players) do + local player = minetest.env:get_player_by_name(player_name) + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "default:torch" or wielded_item == "walking_light:pick_mese" then + -- Fackel ist in der Hand + local pos = player:getpos() + local rounded_pos = {x=round(pos.x),y=round(pos.y)+1,z=round(pos.z)} + if (last_wielded[player_name] ~= "default:torch" and last_wielded[player_name] ~= "walking_light:pick_mese") or (player_positions[player_name]["x"] ~= rounded_pos.x or player_positions[player_name]["y"] ~= rounded_pos.y or player_positions[player_name]["z"] ~= rounded_pos.z) then + -- Fackel gerade in die Hand genommen oder zu neuem Node bewegt + local is_air = minetest.env:get_node_or_nil(rounded_pos) + if is_air == nil or (is_air ~= nil and (is_air.name == "air" or is_air.name == "walking_light:light")) then + -- wenn an aktueller Position "air" ist, Fackellicht setzen + minetest.env:add_node(rounded_pos,{type="node",name="walking_light:light"}) + end + if (player_positions[player_name]["x"] ~= rounded_pos.x or player_positions[player_name]["y"] ~= rounded_pos.y or player_positions[player_name]["z"] ~= rounded_pos.z) then + -- wenn Position geänder, dann altes Licht löschen + local old_pos = {x=player_positions[player_name]["x"], y=player_positions[player_name]["y"], z=player_positions[player_name]["z"]} + -- Neuberechnung des Lichts erzwingen + local is_light = minetest.env:get_node_or_nil(old_pos) + if is_light ~= nil and is_light.name == "walking_light:light" then + minetest.env:add_node(old_pos,{type="node",name="default:cobble"}) + minetest.env:add_node(old_pos,{type="node",name="air"}) + end + end + -- gemerkte Position ist nun die gerundete neue Position + player_positions[player_name]["x"] = rounded_pos.x + player_positions[player_name]["y"] = rounded_pos.y + player_positions[player_name]["z"] = rounded_pos.z + end + + last_wielded[player_name] = wielded_item; + elseif last_wielded[player_name] == "default:torch" or last_wielded[player_name] == "walking_light:pick_mese" then + -- Fackel nicht in der Hand, aber beim letzten Durchgang war die Fackel noch in der Hand + local pos = player:getpos() + local rounded_pos = {x=round(pos.x),y=round(pos.y)+1,z=round(pos.z)} + repeat + local is_light = minetest.env:get_node_or_nil(rounded_pos) + if is_light ~= nil and is_light.name == "walking_light:light" then + -- minetest.env:remove_node(rounded_pos) + -- Erzwinge Neuberechnung des Lichts + minetest.env:add_node(rounded_pos,{type="node",name="default:cobble"}) + minetest.env:add_node(rounded_pos,{type="node",name="air"}) + end + until minetest.env:get_node_or_nil(rounded_pos) ~= "walking_light:light" + local old_pos = {x=player_positions[player_name]["x"], y=player_positions[player_name]["y"], z=player_positions[player_name]["z"]} + repeat + is_light = minetest.env:get_node_or_nil(old_pos) + if is_light ~= nil and is_light.name == "walking_light:light" then + -- minetest.env:remove_node(old_pos) + -- Erzwinge Neuberechnung des Lichts + minetest.env:add_node(old_pos,{type="node",name="default:cobble"}) + minetest.env:add_node(old_pos,{type="node",name="air"}) + end + until minetest.env:get_node_or_nil(old_pos) ~= "walking_light:light" + last_wielded[player_name] = wielded_item + end + end +end) + +minetest.register_node("walking_light:light", { + drawtype = "glasslike", + tile_images = {"walking_light.png"}, + -- tile_images = {"walking_light_debug.png"}, + inventory_image = minetest.inventorycube("walking_light.png"), + paramtype = "light", + walkable = false, + is_ground_content = true, + light_propagates = true, + sunlight_propagates = true, + light_source = 14, + selection_box = { + type = "fixed", + fixed = {0, 0, 0, 0, 0, 0}, + }, +}) +minetest.register_tool("walking_light:pick_mese", { + description = "Mese Pickaxe with light", + inventory_image = "walking_light_mesepick.png", + wield_image = "default_tool_mesepick.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=3, + groupcaps={ + cracky={times={[1]=2.0, [2]=1.0, [3]=0.5}, uses=20, maxlevel=3}, + crumbly={times={[1]=2.0, [2]=1.0, [3]=0.5}, uses=20, maxlevel=3}, + snappy={times={[1]=2.0, [2]=1.0, [3]=0.5}, uses=20, maxlevel=3} + } + }, +}) + +minetest.register_craft({ + output = 'walking_light:pick_mese', + recipe = { + {'default:torch'}, + {'default:pick_mese'}, + } +}) diff --git a/mods/walking_light/textures/walking_light.png b/mods/walking_light/textures/walking_light.png new file mode 100644 index 0000000..334cb07 Binary files /dev/null and b/mods/walking_light/textures/walking_light.png differ diff --git a/mods/walking_light/textures/walking_light_debug.png b/mods/walking_light/textures/walking_light_debug.png new file mode 100644 index 0000000..43e41bd Binary files /dev/null and b/mods/walking_light/textures/walking_light_debug.png differ diff --git a/mods/walking_light/textures/walking_light_mesepick.png b/mods/walking_light/textures/walking_light_mesepick.png new file mode 100644 index 0000000..9586a16 Binary files /dev/null and b/mods/walking_light/textures/walking_light_mesepick.png differ diff --git a/mods/weather/.gitignore b/mods/weather/.gitignore new file mode 100644 index 0000000..b25c15b --- /dev/null +++ b/mods/weather/.gitignore @@ -0,0 +1 @@ +*~ diff --git a/mods/weather/README b/mods/weather/README new file mode 100644 index 0000000..cb102d6 --- /dev/null +++ b/mods/weather/README @@ -0,0 +1,21 @@ +Weather +===================================================================== +Main: Jeija +Lisc: LGPL +Text: + Snow cover: WTFPL + Rain & snow: CC-BY-SA 3.0 + By TeddyDesTodes +Link: https://github.com/Jeija/minetest-mod-weather + + +Lightning +===================================================================== +Main: Auke Kok +Lisc: LGPL 2.1+ +Text: CC-BY-SA 4.0 +Audi: CC-BY-SA + thunder.1.ogg by hantorio + thunder.2.ogg by juskiddink + thunder.3.ogg by IllusiaProductions +Link: https://github.com/minetest-mods/lightning diff --git a/mods/weather/lightning/README b/mods/weather/lightning/README new file mode 100644 index 0000000..2a4c181 --- /dev/null +++ b/mods/weather/lightning/README @@ -0,0 +1,10 @@ +Lightning +===================================================================== +Main: Auke Kok +Lisc: LGPL 2.1+ +Text: CC-BY-SA 4.0 +Audi: CC-BY-SA + thunder.1.ogg by hantorio + thunder.2.ogg by juskiddink + thunder.3.ogg by IllusiaProductions +Link: https://github.com/minetest-mods/lightning diff --git a/mods/weather/lightning/depends.txt b/mods/weather/lightning/depends.txt new file mode 100644 index 0000000..09060cc --- /dev/null +++ b/mods/weather/lightning/depends.txt @@ -0,0 +1,2 @@ +default? +fire? diff --git a/mods/weather/lightning/description.txt b/mods/weather/lightning/description.txt new file mode 100644 index 0000000..98fdb36 --- /dev/null +++ b/mods/weather/lightning/description.txt @@ -0,0 +1 @@ +A mod that adds thunder and lightning effects. diff --git a/mods/weather/lightning/init.lua b/mods/weather/lightning/init.lua new file mode 100644 index 0000000..f6522fe --- /dev/null +++ b/mods/weather/lightning/init.lua @@ -0,0 +1,225 @@ + +--[[ + +Copyright (C) 2016 - Auke Kok + +"lightning" is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation; either version 2.1 +of the license, or (at your option) any later version. + +--]] + +lightning = {} + +lightning.interval_low = 17 +lightning.interval_high = 503 +lightning.range_h = 100 +lightning.range_v = 50 +lightning.size = 100 +-- disable this to stop lightning mod from striking +lightning.auto = true + +local rng = PcgRandom(32321123312123) + +local ps = {} +local ttl = 1 + +lightning.revertsky = function() + if ttl == 0 then + return + end + ttl = ttl - 1 + if ttl > 0 then + return + end + + for key, entry in pairs(ps) do + local sky = entry.sky + entry.p:set_sky(sky.bgcolor, sky.type, sky.textures) + end + + ps = {} +end + +minetest.register_globalstep(lightning.revertsky) + +-- select a random strike point, midpoint +local function choose_pos(pos) + if not pos then + local playerlist = minetest.get_connected_players() + local playercount = table.getn(playerlist) + + -- nobody on + if playercount == 0 then + return nil, nil + end + + local r = rng:next(1, playercount) + local randomplayer = playerlist[r] + pos = randomplayer:getpos() + + -- avoid striking underground + if pos.y < -20 then + return nil, nil + end + + pos.x = math.floor(pos.x - (lightning.range_h / 2) + rng:next(1, lightning.range_h)) + pos.y = pos.y + (lightning.range_v / 2) + pos.z = math.floor(pos.z - (lightning.range_h / 2) + rng:next(1, lightning.range_h)) + end + + local b, pos2 = minetest.line_of_sight(pos, {x = pos.x, y = pos.y - lightning.range_v, z = pos.z}, 1) + + -- nothing but air found + if b then + return nil, nil + end + + local n = minetest.get_node({x = pos2.x, y = pos2.y - 1/2, z = pos2.z}) + if n.name == "air" or n.name == "ignore" then + return nil, nil + end + + return pos, pos2 +end + +-- lightning strike API +-- * pos: optional, if not given a random pos will be chosen +-- * returns: bool - success if a strike happened +lightning.strike = function(pos) + if lightning.auto then + minetest.after(rng:next(lightning.interval_low, lightning.interval_high), lightning.strike) + end + + local pos2 + pos, pos2 = choose_pos(pos) + + if not pos then + return false + end + + minetest.add_particlespawner({ + amount = 1, + time = 0.2, + -- make it hit the top of a block exactly with the bottom + minpos = {x = pos2.x, y = pos2.y + (lightning.size / 2) + 1/2, z = pos2.z }, + maxpos = {x = pos2.x, y = pos2.y + (lightning.size / 2) + 1/2, z = pos2.z }, + minvel = {x = 0, y = 0, z = 0}, + maxvel = {x = 0, y = 0, z = 0}, + minacc = {x = 0, y = 0, z = 0}, + maxacc = {x = 0, y = 0, z = 0}, + minexptime = 0.2, + maxexptime = 0.2, + minsize = lightning.size * 10, + maxsize = lightning.size * 10, + collisiondetection = true, + vertical = true, + -- to make it appear hitting the node that will get set on fire, make sure + -- to make the texture lightning bolt hit exactly in the middle of the + -- texture (e.g. 127/128 on a 256x wide texture) + texture = "lightning_lightning_" .. rng:next(1,3) .. ".png", + -- 0.4.15+ + glow = 14, + }) + + minetest.sound_play({ pos = pos, name = "lightning_thunder", gain = 10, max_hear_distance = 500 }) + + -- damage nearby objects, player or not + for _, obj in ipairs(minetest.get_objects_inside_radius(pos, 5)) do + -- nil as param#1 is supposed to work, but core can't handle it. + obj:punch(obj, 1.0, {full_punch_interval = 1.0, damage_groups = {fleshy=8}}, nil) + end + + local playerlist = minetest.get_connected_players() + for i = 1, #playerlist do + local player = playerlist[i] + local sky = {} + + sky.bgcolor, sky.type, sky.textures = player:get_sky() + + local name = player:get_player_name() + if ps[name] == nil then + ps[name] = {p = player, sky = sky} + player:set_sky(0xffffff, "plain", {}) + end + end + + -- trigger revert of skybox + ttl = 5 + + -- set the air node above it on fire + pos2.y = pos2.y + 1/2 + if minetest.get_item_group(minetest.get_node({x = pos2.x, y = pos2.y - 1, z = pos2.z}).name, "liquid") < 1 then + if minetest.get_node(pos2).name == "air" then + -- only 1/4 of the time, something is changed + if rng:next(1,4) > 1 then + return + end + -- very rarely, potentially cause a fire + if fire and rng:next(1,1000) == 1 then + minetest.set_node(pos2, {name = "fire:basic_flame"}) + else + minetest.set_node(pos2, {name = "lightning:dying_flame"}) + end + end + end + + -- perform block modifications + if not default or rng:next(1,10) > 1 then + return + end + pos2.y = pos2.y - 1 + local n = minetest.get_node(pos2) + if minetest.get_item_group(n.name, "tree") > 0 then + minetest.set_node(pos2, { name = "default:coalblock"}) + elseif minetest.get_item_group(n.name, "sand") > 0 then + minetest.set_node(pos2, { name = "default:glass"}) + elseif minetest.get_item_group(n.name, "soil") > 0 then + minetest.set_node(pos2, { name = "default:gravel"}) + end +end + +-- a special fire node that doesn't burn anything, and automatically disappears +minetest.register_node("lightning:dying_flame", { + description = "Dying Flame", + drawtype = "firelike", + tiles = { + { + name = "fire_basic_flame_animated.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1 + }, + }, + }, + inventory_image = "fire_basic_flame.png", + paramtype = "light", + light_source = 14, + walkable = false, + buildable_to = true, + sunlight_propagates = true, + damage_per_second = 4, + groups = {dig_immediate = 3, not_in_creative_inventory=1}, + on_timer = function(pos) + minetest.remove_node(pos) + end, + drop = "", + + on_construct = function(pos) + minetest.get_node_timer(pos):start(rng:next(20, 40)) + if fire and fire.on_flame_add_at then + minetest.after(0.5, fire.on_flame_add_at, pos) + end + end, +}) + +-- if other mods disable auto lightning during initialization, don't trigger the first lightning. +minetest.after(5, function(dtime) + if lightning.auto then + minetest.after(rng:next(lightning.interval_low, + lightning.interval_high), lightning.strike) + end +end) diff --git a/mods/weather/lightning/mod.conf b/mods/weather/lightning/mod.conf new file mode 100644 index 0000000..948a407 --- /dev/null +++ b/mods/weather/lightning/mod.conf @@ -0,0 +1 @@ +name = lightning diff --git a/mods/weather/lightning/screenshot.png b/mods/weather/lightning/screenshot.png new file mode 100644 index 0000000..cfca4f0 Binary files /dev/null and b/mods/weather/lightning/screenshot.png differ diff --git a/mods/weather/lightning/sounds/lightning_thunder.1.ogg b/mods/weather/lightning/sounds/lightning_thunder.1.ogg new file mode 100644 index 0000000..18e0119 Binary files /dev/null and b/mods/weather/lightning/sounds/lightning_thunder.1.ogg differ diff --git a/mods/weather/lightning/sounds/lightning_thunder.2.ogg b/mods/weather/lightning/sounds/lightning_thunder.2.ogg new file mode 100644 index 0000000..c9e1b0d Binary files /dev/null and b/mods/weather/lightning/sounds/lightning_thunder.2.ogg differ diff --git a/mods/weather/lightning/sounds/lightning_thunder.3.ogg b/mods/weather/lightning/sounds/lightning_thunder.3.ogg new file mode 100644 index 0000000..3690d20 Binary files /dev/null and b/mods/weather/lightning/sounds/lightning_thunder.3.ogg differ diff --git a/mods/weather/lightning/textures/lightning_lightning_1.png b/mods/weather/lightning/textures/lightning_lightning_1.png new file mode 100644 index 0000000..37af59e Binary files /dev/null and b/mods/weather/lightning/textures/lightning_lightning_1.png differ diff --git a/mods/weather/lightning/textures/lightning_lightning_2.png b/mods/weather/lightning/textures/lightning_lightning_2.png new file mode 100644 index 0000000..7bab36b Binary files /dev/null and b/mods/weather/lightning/textures/lightning_lightning_2.png differ diff --git a/mods/weather/lightning/textures/lightning_lightning_3.png b/mods/weather/lightning/textures/lightning_lightning_3.png new file mode 100644 index 0000000..f090529 Binary files /dev/null and b/mods/weather/lightning/textures/lightning_lightning_3.png differ diff --git a/mods/weather/modpack.txt b/mods/weather/modpack.txt new file mode 100644 index 0000000..e69de29 diff --git a/mods/weather/weather/README b/mods/weather/weather/README new file mode 100644 index 0000000..8c597cd --- /dev/null +++ b/mods/weather/weather/README @@ -0,0 +1,9 @@ +Weather +===================================================================== +Main: Jeija +Lisc: LGPL +Text: + Snow cover: WTFPL + Rain & snow: CC-BY-SA 3.0 + By TeddyDesTodes +Link: https://github.com/Jeija/minetest-mod-weather diff --git a/mods/weather/weather/command.lua b/mods/weather/weather/command.lua new file mode 100644 index 0000000..b9c4a09 --- /dev/null +++ b/mods/weather/weather/command.lua @@ -0,0 +1,15 @@ +minetest.register_privilege("weather", { + description = "Change the weather", + give_to_singleplayer = false +}) + +-- Set weather +minetest.register_chatcommand("setweather", { + params = "", + description = "Set weather to rain, snow or none", -- full description + privs = {weather = true}, + func = function(name, param) + weather = param + save_weather() + end +}) diff --git a/mods/weather/weather/init.lua b/mods/weather/weather/init.lua new file mode 100644 index 0000000..8c4df6e --- /dev/null +++ b/mods/weather/weather/init.lua @@ -0,0 +1,51 @@ +-- Weather: +-- * rain +-- * snow +-- * wind (not implemented) + +assert(minetest.add_particlespawner, "I told you to run the latest GitHub!") + +addvectors = function (v1, v2) + return {x=v1.x+v2.x, y=v1.y+v2.y, z=v1.z+v2.z} +end + +save_weather = function () + local file = io.open(minetest.get_worldpath().."/weather", "w+") + file:write(weather) + file:close() +end + +read_weather = function () + local file = io.open(minetest.get_worldpath().."/weather", "r") + if not file then return end + local readweather = file:read() + file:close() + return readweather +end + +weather = read_weather() + +minetest.register_globalstep(function(dtime) + if weather == "rain" or weather == "snow" then + if math.random(1, 10000) == 1 then + weather = "none" + ttl = 5 + save_weather() + end + else + if math.random(1, 50000) == 1 then + weather = "rain" + save_weather() + end + if math.random(1, 50000) == 2 then + weather = "snow" + save_weather() + end + end +end) + +dofile(minetest.get_modpath("weather").."/rain.lua") +dofile(minetest.get_modpath("weather").."/snow.lua") +dofile(minetest.get_modpath("weather").."/command.lua") + + diff --git a/mods/weather/weather/rain.lua b/mods/weather/weather/rain.lua new file mode 100644 index 0000000..f234ecd --- /dev/null +++ b/mods/weather/weather/rain.lua @@ -0,0 +1,38 @@ +-- Rain +minetest.register_globalstep(function(dtime) + if weather ~= "rain" then return end + for _, player in ipairs(minetest.get_connected_players()) do + +-- -- Setting sky to dreary +-- local sky = {} +-- local ps = {} +-- +-- sky.bgcolor, sky.type, sky.textures = player:get_sky() +-- +-- local name = player:get_player_name() +-- if ps[name] == nil then +-- ps[name] = {p = player, sky = sky} +-- player:set_sky(0xffffff, "plain", {}) +-- end + + local ppos = player:get_pos() + + -- Make sure player is not in a cave/house... + if minetest.env:get_node_light(ppos, 0.5) ~= 15 then return end + + -- The actual rain + local minp = addvectors(ppos, {x=-20, y=7, z=-20}) + local maxp = addvectors(ppos, {x= 20, y=7, z= 20}) + + local vel = {x=0, y= -4, z=0} + local acc = {x=0, y=-9.81, z=0} + + minetest.add_particlespawner({amount=40, time=0.5, + minpos=minp, maxpos=maxp, + minvel=vel, maxvel=vel, + minacc=acc, maxacc=acc, + minexptime=0.8, maxexptime=0.8, + minsize=40, maxsize=40, + collisiondetection=false, vertical=true, texture="weather_rain.png", player=player:get_player_name()}) + end +end) diff --git a/mods/weather/weather/snow.lua b/mods/weather/weather/snow.lua new file mode 100644 index 0000000..c8108d6 --- /dev/null +++ b/mods/weather/weather/snow.lua @@ -0,0 +1,73 @@ +-- Snow +minetest.register_globalstep(function(dtime) + if weather ~= "snow" then return end + for _, player in ipairs(minetest.get_connected_players()) do + local ppos = player:getpos() + + -- Make sure player is not in a cave/house... + if minetest.env:get_node_light(ppos, 0.5) ~= 15 then return end + + local minp = addvectors(ppos, {x=-20, y=7, z=-20}) + local maxp = addvectors(ppos, {x= 20, y=7, z= 20}) + + local minp_deep = addvectors(ppos, {x=-10, y=3.2, z=-10}) + local maxp_deep = addvectors(ppos, {x= 10, y=2.6, z= 10}) + + local vel = {x=0, y= -0.5, z=0} + local acc = {x=0, y= -0.5, z=0} + + minetest.add_particlespawner(5, 0.5, + minp, maxp, + vel, vel, + acc, acc, + 5, 5, + 40, 40, + false, "weather_snow.png", player:get_player_name()) + + minetest.add_particlespawner(4, 0.5, + minp_deep, maxp_deep, + vel, vel, + acc, acc, + 4, 4, + 40, 40, + false, "weather_snow.png", player:get_player_name()) + end +end) + +local snow_box = +{ + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5} +} + +-- Snow cover +minetest.register_node("weather:snow_cover", { + tiles = {"weather_snow_cover.png"}, + drawtype = "nodebox", + paramtype = "light", + node_box = snow_box, + selection_box = snow_box, + groups = {not_in_creative_inventory = 1, crumbly = 3, attached_node = 1}, + drop = {} +}) + +--[[ Enable this section if you have a very fast PC +minetest.register_abm({ + nodenames = {"group:crumbly", "group:snappy", "group:cracky", "group:choppy"}, + neighbors = {"default:air"}, + interval = 10.0, + chance = 80, + action = function (pos, node, active_object_count, active_object_count_wider) + if weather == "snow" then + if minetest.registered_nodes[node.name].drawtype == "normal" + or minetest.registered_nodes[node.name].drawtype == "allfaces_optional" then + local np = addvectors(pos, {x=0, y=1, z=0}) + if minetest.env:get_node_light(np, 0.5) == 15 + and minetest.env:get_node(np).name == "air" then + minetest.env:add_node(np, {name="weather:snow_cover"}) + end + end + end + end +}) +]] diff --git a/mods/weather/weather/textures/weather_rain.png b/mods/weather/weather/textures/weather_rain.png new file mode 100644 index 0000000..39b153c Binary files /dev/null and b/mods/weather/weather/textures/weather_rain.png differ diff --git a/mods/weather/weather/textures/weather_snow.png b/mods/weather/weather/textures/weather_snow.png new file mode 100644 index 0000000..8c44f7a Binary files /dev/null and b/mods/weather/weather/textures/weather_snow.png differ diff --git a/mods/weather/weather/textures/weather_snow_cover.png b/mods/weather/weather/textures/weather_snow_cover.png new file mode 100644 index 0000000..9221a5a Binary files /dev/null and b/mods/weather/weather/textures/weather_snow_cover.png differ diff --git a/mods/wield3d/.gitignore b/mods/wield3d/.gitignore new file mode 100644 index 0000000..a57dbc9 --- /dev/null +++ b/mods/wield3d/.gitignore @@ -0,0 +1,7 @@ +## Generic ignorable patterns and files +*~ +.*.swp +*bak* +tags +*.vim + diff --git a/mods/wield3d/LICENSE.md b/mods/wield3d/LICENSE.md new file mode 100644 index 0000000..d7f31ff --- /dev/null +++ b/mods/wield3d/LICENSE.md @@ -0,0 +1,4 @@ +[mod] 3d wielded items [wield3d] +================================ + +Copyright (C) 2013 Stuart Jones - WTFPL diff --git a/mods/wield3d/README.md b/mods/wield3d/README.md new file mode 100644 index 0000000..3f67edb --- /dev/null +++ b/mods/wield3d/README.md @@ -0,0 +1,11 @@ +[mod] 3d wielded items [wield3d] +================================ + +decription: Visible 3d wielded items for Minetest + +depends: default + +Makes hand wielded items visible to other players. + +Please note this mod is currently not compatible with minetest-3d_armor or any other mod that changes the default character model. + diff --git a/mods/wield3d/depends.txt b/mods/wield3d/depends.txt new file mode 100644 index 0000000..3a7daa1 --- /dev/null +++ b/mods/wield3d/depends.txt @@ -0,0 +1,2 @@ +default + diff --git a/mods/wield3d/init.lua b/mods/wield3d/init.lua new file mode 100644 index 0000000..22cc753 --- /dev/null +++ b/mods/wield3d/init.lua @@ -0,0 +1,73 @@ +local update_time = 2 -- number of seconds between wielditem updates +local bone = "Armature_Wield_Item" + +dofile(minetest.get_modpath(minetest.get_current_modname()).."/rotation.lua") + +minetest.register_item("wield3d:hand", { + type = "none", + wield_image = "wield3d_trans.png", +}) + +minetest.register_entity("wield3d:wield_entity", { + initial_properties = { + physical = false, + collisionbox = {x=0, y=0, z=0}, + visual = "wielditem", + visual_size = {x=0.25, y=0.25}, + }, + wield_item = nil, + player = nil, + timer = 0, + rotation = 0, + on_step = function(self, dtime) + local player = self.player + if player == nil then + self.object:remove() + return + end + self.timer = self.timer + dtime + if self.timer < update_time then + return + end + self.timer = 0 + if minetest.env:get_player_by_name(player:get_player_name()) == nil then + self.object:remove() + return + end + local stack = player:get_wielded_item() + local item = stack:get_name() + if item == self.wield_item then + return + end + self.wield_item = item + if item == "" then + item = "wield3d:hand" + end + local rotation = wield3d_rotation[item] or 0 + if rotation ~= self.rotation then + self.object:setpos(player:getpos()) + self.object:set_detach() + self.object:set_attach(player, bone, {x=0, y=0, z=0}, {x=0, y=0, z=rotation}) + self.rotation = rotation + end + self.object:set_properties({textures={item}}) + end, +}) + +minetest.register_on_joinplayer(function(player) + minetest.after(1, function(player) + player:set_properties({ + visual = "mesh", + mesh = "wield3d_character.x", + visual_size = {x=1, y=1}, + }) + local pos = player:getpos() + local entity = minetest.env:add_entity(pos, "wield3d:wield_entity") + if entity ~= nil then + entity:set_attach(player, bone, {x=0, y=0, z=0}, {x=0, y=0, z=0}) + entity = entity:get_luaentity() + entity.player = player + end + end, player) +end) + diff --git a/mods/wield3d/models/wield3d_character.x b/mods/wield3d/models/wield3d_character.x new file mode 100644 index 0000000..e495a08 --- /dev/null +++ b/mods/wield3d/models/wield3d_character.x @@ -0,0 +1,7242 @@ +xof 0303txt 0032 + +template XSkinMeshHeader { + <3cf169ce-ff7c-44ab-93c0-f78f62d172e2> + WORD nMaxSkinWeightsPerVertex; + WORD nMaxSkinWeightsPerFace; + WORD nBones; +} + +template SkinWeights { + <6f0d123b-bad2-4167-a0d0-80224f25fabb> + STRING transformNodeName; + DWORD nWeights; + array DWORD vertexIndices[nWeights]; + array float weights[nWeights]; + Matrix4x4 matrixOffset; +} + +Frame Root { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000,-0.000000,-1.000000, 0.000000, + 0.000000, 1.000000,-0.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Frame Armature { + FrameTransformMatrix { + -1.000000,-0.000001, 0.000000, 0.000000, + 0.000001,-1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000, 0.000000,-10.000000, 1.000000;; + } + Frame Armature_Body { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000,-1.000000, 0.000000, 0.000000, + -0.000000, 0.000000, 6.750000, 1.000000;; + } + Frame Armature_Head { + FrameTransformMatrix { + -1.000000,-0.000000, 0.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + -0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 6.750000,-0.000000, 1.000000;; + } + } //End of Armature_Head + Frame Armature_Arm_Right { + FrameTransformMatrix { + 0.989214,-0.143886,-0.027450, 0.000000, + -0.143940,-0.989586,-0.000000, 0.000000, + -0.027164, 0.003951,-0.999623, 0.000000, + -2.000000, 6.750000,-0.000000, 1.000000;; + } + Frame Armature_Wield_Item { + FrameTransformMatrix { + -0.083563,-0.706832, 0.702428, 0.000000, + 0.120308, 0.692582, 0.711236, 0.000000, + -0.989213, 0.143940, 0.027163, 0.000000, + 0.001191, 6.349710, 2.794358, 1.000000;; + } + } //End of Armature_Wield_Item + } //End of Armature_Arm_Right + Frame Armature_Arm_Left { + FrameTransformMatrix { + 0.989214, 0.143886, 0.027450, 0.000000, + 0.143940,-0.989586,-0.000000, 0.000000, + 0.027164, 0.003951,-0.999623, 0.000000, + 2.000000, 6.750000,-0.000000, 1.000000;; + } + } //End of Armature_Arm_Left + Frame Armature_Leg_Left { + FrameTransformMatrix { + 1.000000, 0.000000,-0.000000, 0.000000, + -0.000000,-1.000000,-0.000000, 0.000000, + -0.000000, 0.000000,-1.000000, 0.000000, + 1.000000, 0.000000,-0.000001, 1.000000;; + } + } //End of Armature_Leg_Left + Frame Armature_Leg_Right { + FrameTransformMatrix { + 1.000000, 0.000000,-0.000000, 0.000000, + -0.000000,-1.000000,-0.000000, 0.000000, + -0.000000, 0.000000,-1.000000, 0.000000, + -1.000000, 0.000000,-0.000001, 1.000000;; + } + } //End of Armature_Leg_Right + } //End of Armature_Body + Frame Player { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Mesh { //Mesh Mesh + 168; + -2.000000;-1.000000; 6.750000;, + 2.000000;-1.000000; 6.750000;, + 2.000000;-1.000000;13.500000;, + -2.000000;-1.000000;13.500000;, + -2.000000; 1.000000; 6.750000;, + -2.000000;-1.000000; 6.750000;, + -2.000000;-1.000000;13.500000;, + -2.000000; 1.000000;13.500000;, + -2.000000; 1.000000;13.500000;, + 2.000000; 1.000000;13.500000;, + 2.000000; 1.000000; 6.750000;, + -2.000000; 1.000000; 6.750000;, + -2.000000;-1.000000; 6.750000;, + -2.000000; 1.000000; 6.750000;, + 2.000000; 1.000000; 6.750000;, + 2.000000;-1.000000; 6.750000;, + -2.000000; 1.000000;13.500000;, + -2.000000;-1.000000;13.500000;, + 2.000000;-1.000000;13.500000;, + 2.000000; 1.000000;13.500000;, + 0.000000; 1.000000; 6.750000;, + 0.000000; 1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 6.750000;, + -2.000000;-1.000000;13.500000;, + -4.000000;-1.000000;13.500000;, + -4.000000;-1.000000; 6.750000;, + -2.000000;-1.000000; 6.750000;, + -2.000000; 1.000000;13.500000;, + -2.000000;-1.000000;13.500000;, + -2.000000;-1.000000; 6.750000;, + -2.000000; 1.000000; 6.750000;, + 0.000000; 1.000000; 0.000000;, + -0.000000;-1.000000; 0.000000;, + -2.000000;-1.000000; 0.000000;, + -2.000000; 1.000000; 0.000000;, + -2.000000;-1.000000; 6.750000;, + -2.000000; 1.000000; 6.750000;, + -2.000000; 1.000000; 0.000000;, + -2.000000;-1.000000; 0.000000;, + 2.000000;-2.000000;17.500000;, + -2.000000;-2.000000;17.500000;, + -2.000000;-2.000000;13.500000;, + 2.000000;-2.000000;13.500000;, + -2.000000;-2.000000;17.500000;, + -2.000000; 2.000000;17.500000;, + -2.000000; 2.000000;13.500000;, + -2.000000;-2.000000;13.500000;, + -2.000000; 2.000000;17.500000;, + 2.000000; 2.000000;17.500000;, + 2.000000; 2.000000;13.500000;, + -2.000000; 2.000000;13.500000;, + 2.000000; 2.000000;13.500000;, + 2.000000;-2.000000;13.500000;, + -2.000000;-2.000000;13.500000;, + -2.000000; 2.000000;13.500000;, + -2.000000; 2.000000;17.500000;, + -2.000000;-2.000000;17.500000;, + 2.000000;-2.000000;17.500000;, + 2.000000; 2.000000;17.500000;, + 0.000000;-1.000000; 6.750000;, + -2.000000;-1.000000; 6.750000;, + -2.000000;-1.000000; 0.000000;, + -0.000000;-1.000000; 0.000000;, + 2.000000; 1.000000; 6.750000;, + 2.000000; 1.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 0.000000; 1.000000; 6.750000;, + -2.000000; 1.000000; 6.750000;, + 0.000000; 1.000000; 6.750000;, + 0.000000; 1.000000; 0.000000;, + -2.000000; 1.000000; 0.000000;, + 2.000000; 1.000000; 6.750000;, + 4.000000; 1.000000; 6.750000;, + 4.000000;-1.000000; 6.750000;, + 2.000000;-1.000000; 6.750000;, + 4.000000; 1.000000;13.500000;, + 2.000000; 1.000000;13.500000;, + 2.000000;-1.000000;13.500000;, + 4.000000;-1.000000;13.500000;, + 0.000000;-1.000000; 6.750000;, + 0.000000;-1.000000; 0.000000;, + 2.000000;-1.000000; 0.000000;, + 2.000000;-1.000000; 6.750000;, + 0.000000; 1.000000; 6.750000;, + 0.000000;-1.000000; 6.750000;, + -0.000000;-1.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 2.000000;-1.000000; 6.750000;, + 2.000000;-1.000000; 0.000000;, + 2.000000; 1.000000; 0.000000;, + 2.000000; 1.000000; 6.750000;, + 2.000000;-1.000000;13.500000;, + 2.000000;-1.000000; 6.750000;, + 2.000000; 1.000000; 6.750000;, + 2.000000; 1.000000;13.500000;, + 2.000000;-2.000000;17.500000;, + 2.000000;-2.000000;13.500000;, + 2.000000; 2.000000;13.500000;, + 2.000000; 2.000000;17.500000;, + -2.000000; 1.000000; 6.750000;, + -2.000000;-1.000000; 6.750000;, + 0.000000;-1.000000; 6.750000;, + 0.000000; 1.000000; 6.750000;, + -4.000000; 1.000000;13.500000;, + -2.000000; 1.000000;13.500000;, + -2.000000; 1.000000; 6.750000;, + -4.000000; 1.000000; 6.750000;, + -4.000000;-1.000000;13.500000;, + -4.000000; 1.000000;13.500000;, + -4.000000; 1.000000; 6.750000;, + -4.000000;-1.000000; 6.750000;, + 4.000000;-1.000000;13.500000;, + 4.000000;-1.000000; 6.750000;, + 4.000000; 1.000000; 6.750000;, + 4.000000; 1.000000;13.500000;, + -4.000000; 1.000000;13.500000;, + -4.000000;-1.000000;13.500000;, + -2.000000;-1.000000;13.500000;, + -2.000000; 1.000000;13.500000;, + 4.000000; 1.000000;13.500000;, + 4.000000; 1.000000; 6.750000;, + 2.000000; 1.000000; 6.750000;, + 2.000000; 1.000000;13.500000;, + 0.000000; 1.000000; 0.000000;, + 2.000000; 1.000000; 0.000000;, + 2.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 2.000000; 1.000000;13.500000;, + 2.000000; 1.000000; 6.750000;, + 2.000000;-1.000000; 6.750000;, + 2.000000;-1.000000;13.500000;, + -2.000000; 1.000000; 6.750000;, + -2.000000;-1.000000; 6.750000;, + -4.000000;-1.000000; 6.750000;, + -4.000000; 1.000000; 6.750000;, + 2.000000;-1.000000;13.500000;, + 2.000000;-1.000000; 6.750000;, + 4.000000;-1.000000; 6.750000;, + 4.000000;-1.000000;13.500000;, + 2.000000; 1.000000; 6.750000;, + 0.000000; 1.000000; 6.750000;, + 0.000000;-1.000000; 6.750000;, + 2.000000;-1.000000; 6.750000;, + 2.200000;-2.200000;17.700001;, + -2.200000;-2.200000;17.700001;, + -2.200000;-2.200000;13.300000;, + 2.200000;-2.200000;13.300000;, + -2.200000;-2.200000;17.700001;, + -2.200000; 2.200000;17.700001;, + -2.200000; 2.200000;13.300000;, + -2.200000;-2.200000;13.300000;, + -2.200000; 2.200000;17.700001;, + 2.200000; 2.200000;17.700001;, + 2.200000; 2.200000;13.300000;, + -2.200000; 2.200000;13.300000;, + 2.200000; 2.200000;13.300000;, + 2.200000;-2.200000;13.300000;, + -2.200000;-2.200000;13.300000;, + -2.200000; 2.200000;13.300000;, + -2.200000; 2.200000;17.700001;, + -2.200000;-2.200000;17.700001;, + 2.200000;-2.200000;17.700001;, + 2.200000; 2.200000;17.700001;, + 2.200000;-2.200000;17.700001;, + 2.200000;-2.200000;13.300000;, + 2.200000; 2.200000;13.300000;, + 2.200000; 2.200000;17.700001;; + 42; + 4;0;1;2;3;, + 4;4;5;6;7;, + 4;8;9;10;11;, + 4;12;13;14;15;, + 4;16;17;18;19;, + 4;20;21;22;23;, + 4;24;25;26;27;, + 4;28;29;30;31;, + 4;32;33;34;35;, + 4;36;37;38;39;, + 4;40;41;42;43;, + 4;44;45;46;47;, + 4;48;49;50;51;, + 4;52;53;54;55;, + 4;56;57;58;59;, + 4;60;61;62;63;, + 4;64;65;66;67;, + 4;68;69;70;71;, + 4;72;73;74;75;, + 4;76;77;78;79;, + 4;80;81;82;83;, + 4;84;85;86;87;, + 4;88;89;90;91;, + 4;92;93;94;95;, + 4;96;97;98;99;, + 4;100;101;102;103;, + 4;104;105;106;107;, + 4;108;109;110;111;, + 4;112;113;114;115;, + 4;116;117;118;119;, + 4;120;121;122;123;, + 4;124;125;126;127;, + 4;128;129;130;131;, + 4;132;133;134;135;, + 4;136;137;138;139;, + 4;140;141;142;143;, + 4;144;145;146;147;, + 4;148;149;150;151;, + 4;152;153;154;155;, + 4;156;157;158;159;, + 4;160;161;162;163;, + 4;164;165;166;167;; + MeshNormals { //Mesh Normals + 168; + -0.000000;-1.000000; 0.000000;, + -0.000000;-1.000000; 0.000000;, + -0.000000;-1.000000; 0.000000;, + -0.000000;-1.000000; 0.000000;, + -1.000000; 0.000000;-0.000000;, + -1.000000; 0.000000;-0.000000;, + -1.000000; 0.000000;-0.000000;, + -1.000000; 0.000000;-0.000000;, + 0.000000; 1.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + -0.000000; 0.000000;-1.000000;, + -0.000000; 0.000000;-1.000000;, + -0.000000; 0.000000;-1.000000;, + -0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 1.000000; 0.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + -0.000000; 1.000000; 0.000000;, + -0.000000; 1.000000; 0.000000;, + -0.000000; 1.000000; 0.000000;, + -0.000000; 1.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-0.000000; 1.000000;, + -0.000000;-1.000000; 0.000000;, + -0.000000;-1.000000; 0.000000;, + -0.000000;-1.000000; 0.000000;, + -0.000000;-1.000000; 0.000000;, + 1.000000;-0.000000; 0.000000;, + 1.000000;-0.000000; 0.000000;, + 1.000000;-0.000000; 0.000000;, + 1.000000;-0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + -0.000000; 1.000000; 0.000000;, + -0.000000; 1.000000; 0.000000;, + -0.000000; 1.000000; 0.000000;, + -0.000000; 1.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 1.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000000;-1.000000; 0.000000;, + -0.000000;-1.000000; 0.000000;, + -0.000000;-1.000000; 0.000000;, + -0.000000;-1.000000; 0.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000; 1.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;, + 1.000000; 0.000000; 0.000000;; + 42; + 4;0;1;2;3;, + 4;4;5;6;7;, + 4;8;9;10;11;, + 4;12;13;14;15;, + 4;16;17;18;19;, + 4;20;21;22;23;, + 4;24;25;26;27;, + 4;28;29;30;31;, + 4;32;33;34;35;, + 4;36;37;38;39;, + 4;40;41;42;43;, + 4;44;45;46;47;, + 4;48;49;50;51;, + 4;52;53;54;55;, + 4;56;57;58;59;, + 4;60;61;62;63;, + 4;64;65;66;67;, + 4;68;69;70;71;, + 4;72;73;74;75;, + 4;76;77;78;79;, + 4;80;81;82;83;, + 4;84;85;86;87;, + 4;88;89;90;91;, + 4;92;93;94;95;, + 4;96;97;98;99;, + 4;100;101;102;103;, + 4;104;105;106;107;, + 4;108;109;110;111;, + 4;112;113;114;115;, + 4;116;117;118;119;, + 4;120;121;122;123;, + 4;124;125;126;127;, + 4;128;129;130;131;, + 4;132;133;134;135;, + 4;136;137;138;139;, + 4;140;141;142;143;, + 4;144;145;146;147;, + 4;148;149;150;151;, + 4;152;153;154;155;, + 4;156;157;158;159;, + 4;160;161;162;163;, + 4;164;165;166;167;; + } //End of Mesh Normals + MeshMaterialList { //Mesh Material List + 1; + 42; + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0;; + Material Character { + 0.640000; 0.640000; 0.640000; 1.000000;; + 96.078431; + 0.000000; 0.000000; 0.000000;; + 0.000000; 0.000000; 0.000000;; + } + } //End of Mesh Material List + MeshTextureCoords { //Mesh UV Coordinates + 168; + 0.625000; 1.000000;, + 0.500000; 1.000000;, + 0.500000; 0.625000;, + 0.625000; 0.625000;, + 0.312500; 1.000000;, + 0.250000; 1.000000;, + 0.250000; 0.625000;, + 0.312500; 0.625000;, + 0.312500; 0.625000;, + 0.437500; 0.625000;, + 0.437500; 1.000000;, + 0.312500; 1.000000;, + 0.562500; 0.500000;, + 0.562500; 0.625000;, + 0.437500; 0.625000;, + 0.437500; 0.500000;, + 0.312500; 0.625000;, + 0.312500; 0.500000;, + 0.437500; 0.500000;, + 0.437500; 0.625000;, + 0.187500; 0.625000;, + 0.187500; 1.000000;, + 0.125000; 1.000000;, + 0.125000; 0.625000;, + 0.812500; 0.625000;, + 0.875000; 0.625000;, + 0.875000; 1.000000;, + 0.812500; 1.000000;, + 0.750000; 0.625000;, + 0.812500; 0.625000;, + 0.812500; 1.000000;, + 0.750000; 1.000000;, + 0.187500; 0.625000;, + 0.187500; 0.500000;, + 0.125000; 0.500000;, + 0.125000; 0.625000;, + 0.000000; 0.625000;, + 0.062500; 0.625000;, + 0.062500; 1.000000;, + 0.000000; 1.000000;, + 0.375000; 0.250000;, + 0.500000; 0.250000;, + 0.500000; 0.500000;, + 0.375000; 0.500000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.125000; 0.250000;, + 0.250000; 0.250000;, + 0.250000; 0.500000;, + 0.125000; 0.500000;, + 0.250000; 0.250000;, + 0.250000; 0.000000;, + 0.375000; 0.000000;, + 0.375000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.250000; 0.000000;, + 0.250000; 0.250000;, + 0.250000; 0.625000;, + 0.187500; 0.625000;, + 0.187500; 1.000000;, + 0.250000; 1.000000;, + 0.125000; 0.625000;, + 0.125000; 1.000000;, + 0.062500; 1.000000;, + 0.062500; 0.625000;, + 0.125000; 0.625000;, + 0.062500; 0.625000;, + 0.062500; 1.000000;, + 0.125000; 1.000000;, + 0.750000; 0.625000;, + 0.812500; 0.625000;, + 0.812500; 0.500000;, + 0.750000; 0.500000;, + 0.687500; 0.625000;, + 0.750000; 0.625000;, + 0.750000; 0.500000;, + 0.687500; 0.500000;, + 0.250000; 0.625000;, + 0.250000; 1.000000;, + 0.187500; 1.000000;, + 0.187500; 0.625000;, + 0.187500; 0.625000;, + 0.125000; 0.625000;, + 0.125000; 1.000000;, + 0.187500; 1.000000;, + 0.000000; 0.625000;, + 0.000000; 1.000000;, + 0.062500; 1.000000;, + 0.062500; 0.625000;, + 0.500000; 0.625000;, + 0.500000; 1.000000;, + 0.437500; 1.000000;, + 0.437500; 0.625000;, + 0.375000; 0.250000;, + 0.375000; 0.500000;, + 0.250000; 0.500000;, + 0.250000; 0.250000;, + 0.125000; 0.625000;, + 0.125000; 0.500000;, + 0.062500; 0.500000;, + 0.062500; 0.625000;, + 0.687500; 0.625000;, + 0.750000; 0.625000;, + 0.750000; 1.000000;, + 0.687500; 1.000000;, + 0.687500; 0.625000;, + 0.625000; 0.625000;, + 0.625000; 1.000000;, + 0.687500; 1.000000;, + 0.687500; 0.625000;, + 0.687500; 1.000000;, + 0.625000; 1.000000;, + 0.625000; 0.625000;, + 0.687500; 0.625000;, + 0.687500; 0.500000;, + 0.750000; 0.500000;, + 0.750000; 0.625000;, + 0.687500; 0.625000;, + 0.687500; 1.000000;, + 0.750000; 1.000000;, + 0.750000; 0.625000;, + 0.187500; 0.625000;, + 0.125000; 0.625000;, + 0.125000; 0.500000;, + 0.187500; 0.500000;, + 0.812500; 0.625000;, + 0.812500; 1.000000;, + 0.750000; 1.000000;, + 0.750000; 0.625000;, + 0.750000; 0.625000;, + 0.750000; 0.500000;, + 0.812500; 0.500000;, + 0.812500; 0.625000;, + 0.812500; 0.625000;, + 0.812500; 1.000000;, + 0.875000; 1.000000;, + 0.875000; 0.625000;, + 0.125000; 0.625000;, + 0.062500; 0.625000;, + 0.062500; 0.500000;, + 0.125000; 0.500000;, + 0.875000; 0.250000;, + 1.000000; 0.250000;, + 1.000000; 0.500000;, + 0.875000; 0.500000;, + 0.500000; 0.250000;, + 0.625000; 0.250000;, + 0.625000; 0.500000;, + 0.500000; 0.500000;, + 0.625000; 0.250000;, + 0.750000; 0.250000;, + 0.750000; 0.500000;, + 0.625000; 0.500000;, + 0.750000; 0.250000;, + 0.750000; 0.000000;, + 0.875000; 0.000000;, + 0.875000; 0.250000;, + 0.625000; 0.250000;, + 0.625000; 0.000000;, + 0.750000; 0.000000;, + 0.750000; 0.250000;, + 0.875000; 0.250000;, + 0.875000; 0.500000;, + 0.750000; 0.500000;, + 0.750000; 0.250000;; + } //End of Mesh UV Coordinates + XSkinMeshHeader { + 1; + 3; + 6; + } + SkinWeights { + "Armature_Arm_Left"; + 24; + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 112, + 113, + 114, + 115, + 120, + 121, + 122, + 123, + 128, + 129, + 130, + 131, + 136, + 137, + 138, + 139; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.989214, 0.143940, 0.027164, 0.000000, + -0.027450,-0.000000, 0.999623, 0.000000, + 0.143886,-0.989587, 0.003951, 0.000000, + -3.920884,13.071540,-0.107668, 1.000000;; + } //End of Armature_Arm_Left Skin Weights + SkinWeights { + "Armature_Leg_Left"; + 24; + 20, + 21, + 22, + 23, + 64, + 65, + 66, + 67, + 80, + 81, + 82, + 83, + 88, + 89, + 90, + 91, + 124, + 125, + 126, + 127, + 140, + 141, + 142, + 143; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 1.000000,-0.000000,-0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + -0.000000,-1.000000, 0.000000, 0.000000, + -1.000000, 6.750000,-0.000001, 1.000000;; + } //End of Armature_Leg_Left Skin Weights + SkinWeights { + "Armature_Leg_Right"; + 24; + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 60, + 61, + 62, + 63, + 68, + 69, + 70, + 71, + 84, + 85, + 86, + 87, + 100, + 101, + 102, + 103; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 1.000000,-0.000000,-0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + -0.000000,-1.000000, 0.000000, 0.000000, + 1.000000, 6.750000,-0.000001, 1.000000;; + } //End of Armature_Leg_Right Skin Weights + SkinWeights { + "Armature_Body"; + 24; + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 92, + 93, + 94, + 95; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000,-6.750000,-0.000001, 1.000000;; + } //End of Armature_Body Skin Weights + SkinWeights { + "Armature_Head"; + 48; + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 96, + 97, + 98, + 99, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + -1.000000, 0.000000,-0.000000, 0.000000, + -0.000000,-0.000000, 1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + -0.000000,-13.500000,-0.000002, 1.000000;; + } //End of Armature_Head Skin Weights + SkinWeights { + "Armature_Arm_Right"; + 24; + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 116, + 117, + 118, + 119, + 132, + 133, + 134, + 135; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.989214,-0.143940,-0.027164, 0.000000, + 0.027450,-0.000000, 0.999623, 0.000000, + -0.143886,-0.989587, 0.003951, 0.000000, + 3.920884,13.071540,-0.107668, 1.000000;; + } //End of Armature_Arm_Right Skin Weights + } //End of Mesh Mesh + } //End of Player + } //End of Armature +} //End of Root Frame +AnimationSet { + Animation { + {Armature} + AnimationKey { //Position + 2; + 221; + 0;3; 0.000000, 0.000000,-10.000000;;, + 1;3; 0.000000, 0.000000,-10.000000;;, + 2;3; 0.000000, 0.000000,-10.000000;;, + 3;3; 0.000000, 0.000000,-10.000000;;, + 4;3; 0.000000, 0.000000,-10.000000;;, + 5;3; 0.000000, 0.000000,-10.000000;;, + 6;3; 0.000000, 0.000000,-10.000000;;, + 7;3; 0.000000, 0.000000,-10.000000;;, + 8;3; 0.000000, 0.000000,-10.000000;;, + 9;3; 0.000000, 0.000000,-10.000000;;, + 10;3; 0.000000, 0.000000,-10.000000;;, + 11;3; 0.000000, 0.000000,-10.000000;;, + 12;3; 0.000000, 0.000000,-10.000000;;, + 13;3; 0.000000, 0.000000,-10.000000;;, + 14;3; 0.000000, 0.000000,-10.000000;;, + 15;3; 0.000000, 0.000000,-10.000000;;, + 16;3; 0.000000, 0.000000,-10.000000;;, + 17;3; 0.000000, 0.000000,-10.000000;;, + 18;3; 0.000000, 0.000000,-10.000000;;, + 19;3; 0.000000, 0.000000,-10.000000;;, + 20;3; 0.000000, 0.000000,-10.000000;;, + 21;3; 0.000000, 0.000000,-10.000000;;, + 22;3; 0.000000, 0.000000,-10.000000;;, + 23;3; 0.000000, 0.000000,-10.000000;;, + 24;3; 0.000000, 0.000000,-10.000000;;, + 25;3; 0.000000, 0.000000,-10.000000;;, + 26;3; 0.000000, 0.000000,-10.000000;;, + 27;3; 0.000000, 0.000000,-10.000000;;, + 28;3; 0.000000, 0.000000,-10.000000;;, + 29;3; 0.000000, 0.000000,-10.000000;;, + 30;3; 0.000000, 0.000000,-10.000000;;, + 31;3; 0.000000, 0.000000,-10.000000;;, + 32;3; 0.000000, 0.000000,-10.000000;;, + 33;3; 0.000000, 0.000000,-10.000000;;, + 34;3; 0.000000, 0.000000,-10.000000;;, + 35;3; 0.000000, 0.000000,-10.000000;;, + 36;3; 0.000000, 0.000000,-10.000000;;, + 37;3; 0.000000, 0.000000,-10.000000;;, + 38;3; 0.000000, 0.000000,-10.000000;;, + 39;3; 0.000000, 0.000000,-10.000000;;, + 40;3; 0.000000, 0.000000,-10.000000;;, + 41;3; 0.000000, 0.000000,-10.000000;;, + 42;3; 0.000000, 0.000000,-10.000000;;, + 43;3; 0.000000, 0.000000,-10.000000;;, + 44;3; 0.000000, 0.000000,-10.000000;;, + 45;3; 0.000000, 0.000000,-10.000000;;, + 46;3; 0.000000, 0.000000,-10.000000;;, + 47;3; 0.000000, 0.000000,-10.000000;;, + 48;3; 0.000000, 0.000000,-10.000000;;, + 49;3; 0.000000, 0.000000,-10.000000;;, + 50;3; 0.000000, 0.000000,-10.000000;;, + 51;3; 0.000000, 0.000000,-10.000000;;, + 52;3; 0.000000, 0.000000,-10.000000;;, + 53;3; 0.000000, 0.000000,-10.000000;;, + 54;3; 0.000000, 0.000000,-10.000000;;, + 55;3; 0.000000, 0.000000,-10.000000;;, + 56;3; 0.000000, 0.000000,-10.000000;;, + 57;3; 0.000000, 0.000000,-10.000000;;, + 58;3; 0.000000, 0.000000,-10.000000;;, + 59;3; 0.000000, 0.000000,-10.000000;;, + 60;3; 0.000000, 0.000000,-10.000000;;, + 61;3; 0.000000, 0.000000,-10.000000;;, + 62;3; 0.000000, 0.000000,-10.000000;;, + 63;3; 0.000000, 0.000000,-10.000000;;, + 64;3; 0.000000, 0.000000,-10.000000;;, + 65;3; 0.000000, 0.000000,-10.000000;;, + 66;3; 0.000000, 0.000000,-10.000000;;, + 67;3; 0.000000, 0.000000,-10.000000;;, + 68;3; 0.000000, 0.000000,-10.000000;;, + 69;3; 0.000000, 0.000000,-10.000000;;, + 70;3; 0.000000, 0.000000,-10.000000;;, + 71;3; 0.000000, 0.000000,-10.000000;;, + 72;3; 0.000000, 0.000000,-10.000000;;, + 73;3; 0.000000, 0.000000,-10.000000;;, + 74;3; 0.000000, 0.000000,-10.000000;;, + 75;3; 0.000000, 0.000000,-10.000000;;, + 76;3; 0.000000, 0.000000,-10.000000;;, + 77;3; 0.000000, 0.000000,-10.000000;;, + 78;3; 0.000000, 0.000000,-10.000000;;, + 79;3; 0.000000, 0.000000,-10.000000;;, + 80;3; 0.000000, 0.000000,-10.000000;;, + 81;3; 0.000000, 0.000000,-10.000000;;, + 82;3; 0.000000, 0.000000,-10.000000;;, + 83;3; 0.000000, 0.000000,-10.000000;;, + 84;3; 0.000000, 0.000000,-10.000000;;, + 85;3; 0.000000, 0.000000,-10.000000;;, + 86;3; 0.000000, 0.000000,-10.000000;;, + 87;3; 0.000000, 0.000000,-10.000000;;, + 88;3; 0.000000, 0.000000,-10.000000;;, + 89;3; 0.000000, 0.000000,-10.000000;;, + 90;3; 0.000000, 0.000000,-10.000000;;, + 91;3; 0.000000, 0.000000,-10.000000;;, + 92;3; 0.000000, 0.000000,-10.000000;;, + 93;3; 0.000000, 0.000000,-10.000000;;, + 94;3; 0.000000, 0.000000,-10.000000;;, + 95;3; 0.000000, 0.000000,-10.000000;;, + 96;3; 0.000000, 0.000000,-10.000000;;, + 97;3; 0.000000, 0.000000,-10.000000;;, + 98;3; 0.000000, 0.000000,-10.000000;;, + 99;3; 0.000000, 0.000000,-10.000000;;, + 100;3; 0.000000, 0.000000,-10.000000;;, + 101;3; 0.000000, 0.000000,-10.000000;;, + 102;3; 0.000000, 0.000000,-10.000000;;, + 103;3; 0.000000, 0.000000,-10.000000;;, + 104;3; 0.000000, 0.000000,-10.000000;;, + 105;3; 0.000000, 0.000000,-10.000000;;, + 106;3; 0.000000, 0.000000,-10.000000;;, + 107;3; 0.000000, 0.000000,-10.000000;;, + 108;3; 0.000000, 0.000000,-10.000000;;, + 109;3; 0.000000, 0.000000,-10.000000;;, + 110;3; 0.000000, 0.000000,-10.000000;;, + 111;3; 0.000000, 0.000000,-10.000000;;, + 112;3; 0.000000, 0.000000,-10.000000;;, + 113;3; 0.000000, 0.000000,-10.000000;;, + 114;3; 0.000000, 0.000000,-10.000000;;, + 115;3; 0.000000, 0.000000,-10.000000;;, + 116;3; 0.000000, 0.000000,-10.000000;;, + 117;3; 0.000000, 0.000000,-10.000000;;, + 118;3; 0.000000, 0.000000,-10.000000;;, + 119;3; 0.000000, 0.000000,-10.000000;;, + 120;3; 0.000000, 0.000000,-10.000000;;, + 121;3; 0.000000, 0.000000,-10.000000;;, + 122;3; 0.000000, 0.000000,-10.000000;;, + 123;3; 0.000000, 0.000000,-10.000000;;, + 124;3; 0.000000, 0.000000,-10.000000;;, + 125;3; 0.000000, 0.000000,-10.000000;;, + 126;3; 0.000000, 0.000000,-10.000000;;, + 127;3; 0.000000, 0.000000,-10.000000;;, + 128;3; 0.000000, 0.000000,-10.000000;;, + 129;3; 0.000000, 0.000000,-10.000000;;, + 130;3; 0.000000, 0.000000,-10.000000;;, + 131;3; 0.000000, 0.000000,-10.000000;;, + 132;3; 0.000000, 0.000000,-10.000000;;, + 133;3; 0.000000, 0.000000,-10.000000;;, + 134;3; 0.000000, 0.000000,-10.000000;;, + 135;3; 0.000000, 0.000000,-10.000000;;, + 136;3; 0.000000, 0.000000,-10.000000;;, + 137;3; 0.000000, 0.000000,-10.000000;;, + 138;3; 0.000000, 0.000000,-10.000000;;, + 139;3; 0.000000, 0.000000,-10.000000;;, + 140;3; 0.000000, 0.000000,-10.000000;;, + 141;3; 0.000000, 0.000000,-10.000000;;, + 142;3; 0.000000, 0.000000,-10.000000;;, + 143;3; 0.000000, 0.000000,-10.000000;;, + 144;3; 0.000000, 0.000000,-10.000000;;, + 145;3; 0.000000, 0.000000,-10.000000;;, + 146;3; 0.000000, 0.000000,-10.000000;;, + 147;3; 0.000000, 0.000000,-10.000000;;, + 148;3; 0.000000, 0.000000,-10.000000;;, + 149;3; 0.000000, 0.000000,-10.000000;;, + 150;3; 0.000000, 0.000000,-10.000000;;, + 151;3; 0.000000, 0.000000,-10.000000;;, + 152;3; 0.000000, 0.000000,-10.000000;;, + 153;3; 0.000000, 0.000000,-10.000000;;, + 154;3; 0.000000, 0.000000,-10.000000;;, + 155;3; 0.000000, 0.000000,-10.000000;;, + 156;3; 0.000000, 0.000000,-10.000000;;, + 157;3; 0.000000, 0.000000,-10.000000;;, + 158;3; 0.000000, 0.000000,-10.000000;;, + 159;3; 0.000000, 0.000000,-10.000000;;, + 160;3; 0.000000, 0.000000,-10.000000;;, + 161;3; 0.000000, 0.000000,-10.000000;;, + 162;3; 0.000000, 0.000000,-10.000000;;, + 163;3; 0.000000, 0.000000,-10.000000;;, + 164;3; 0.000000, 0.000000,-10.000000;;, + 165;3; 0.000000, 0.000000,-10.000000;;, + 166;3; 0.000000, 0.000000,-10.000000;;, + 167;3; 0.000000, 0.000000,-10.000000;;, + 168;3; 0.000000, 0.000000,-10.000000;;, + 169;3; 0.000000, 0.000000,-10.000000;;, + 170;3; 0.000000, 0.000000,-10.000000;;, + 171;3; 0.000000, 0.000000,-10.000000;;, + 172;3; 0.000000, 0.000000,-10.000000;;, + 173;3; 0.000000, 0.000000,-10.000000;;, + 174;3; 0.000000, 0.000000,-10.000000;;, + 175;3; 0.000000, 0.000000,-10.000000;;, + 176;3; 0.000000, 0.000000,-10.000000;;, + 177;3; 0.000000, 0.000000,-10.000000;;, + 178;3; 0.000000, 0.000000,-10.000000;;, + 179;3; 0.000000, 0.000000,-10.000000;;, + 180;3; 0.000000, 0.000000,-10.000000;;, + 181;3; 0.000000, 0.000000,-10.000000;;, + 182;3; 0.000000, 0.000000,-10.000000;;, + 183;3; 0.000000, 0.000000,-10.000000;;, + 184;3; 0.000000, 0.000000,-10.000000;;, + 185;3; 0.000000, 0.000000,-10.000000;;, + 186;3; 0.000000, 0.000000,-10.000000;;, + 187;3; 0.000000, 0.000000,-10.000000;;, + 188;3; 0.000000, 0.000000,-10.000000;;, + 189;3; 0.000000, 0.000000,-10.000000;;, + 190;3; 0.000000, 0.000000,-10.000000;;, + 191;3; 0.000000, 0.000000,-10.000000;;, + 192;3; 0.000000, 0.000000,-10.000000;;, + 193;3; 0.000000, 0.000000,-10.000000;;, + 194;3; 0.000000, 0.000000,-10.000000;;, + 195;3; 0.000000, 0.000000,-10.000000;;, + 196;3; 0.000000, 0.000000,-10.000000;;, + 197;3; 0.000000, 0.000000,-10.000000;;, + 198;3; 0.000000, 0.000000,-10.000000;;, + 199;3; 0.000000, 0.000000,-10.000000;;, + 200;3; 0.000000, 0.000000,-10.000000;;, + 201;3; 0.000000, 0.000000,-10.000000;;, + 202;3; 0.000000, 0.000000,-10.000000;;, + 203;3; 0.000000, 0.000000,-10.000000;;, + 204;3; 0.000000, 0.000000,-10.000000;;, + 205;3; 0.000000, 0.000000,-10.000000;;, + 206;3; 0.000000, 0.000000,-10.000000;;, + 207;3; 0.000000, 0.000000,-10.000000;;, + 208;3; 0.000000, 0.000000,-10.000000;;, + 209;3; 0.000000, 0.000000,-10.000000;;, + 210;3; 0.000000, 0.000000,-10.000000;;, + 211;3; 0.000000, 0.000000,-10.000000;;, + 212;3; 0.000000, 0.000000,-10.000000;;, + 213;3; 0.000000, 0.000000,-10.000000;;, + 214;3; 0.000000, 0.000000,-10.000000;;, + 215;3; 0.000000, 0.000000,-10.000000;;, + 216;3; 0.000000, 0.000000,-10.000000;;, + 217;3; 0.000000, 0.000000,-10.000000;;, + 218;3; 0.000000, 0.000000,-10.000000;;, + 219;3; 0.000000, 0.000000,-10.000000;;, + 220;3; 0.000000, 0.000000,-10.000000;;; + } + AnimationKey { //Rotation + 0; + 221; + 0;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 1;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 2;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 3;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 4;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 5;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 6;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 7;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 8;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 9;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 10;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 11;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 12;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 13;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 14;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 15;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 16;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 17;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 18;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 19;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 20;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 21;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 22;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 23;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 24;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 25;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 26;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 27;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 28;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 29;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 30;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 31;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 32;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 33;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 34;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 35;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 36;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 37;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 38;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 39;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 40;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 41;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 42;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 43;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 44;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 45;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 46;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 47;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 48;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 49;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 50;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 51;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 52;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 53;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 54;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 55;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 56;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 57;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 58;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 59;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 60;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 61;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 62;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 63;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 64;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 65;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 66;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 67;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 68;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 69;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 70;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 71;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 72;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 73;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 74;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 75;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 76;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 77;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 78;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 79;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 80;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 81;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 82;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 83;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 84;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 85;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 86;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 87;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 88;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 89;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 90;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 91;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 92;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 93;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 94;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 95;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 96;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 97;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 98;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 99;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 100;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 101;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 102;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 103;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 104;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 105;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 106;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 107;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 108;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 109;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 110;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 111;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 112;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 113;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 114;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 115;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 116;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 117;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 118;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 119;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 120;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 121;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 122;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 123;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 124;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 125;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 126;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 127;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 128;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 129;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 130;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 131;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 132;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 133;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 134;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 135;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 136;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 137;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 138;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 139;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 140;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 141;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 142;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 143;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 144;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 145;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 146;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 147;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 148;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 149;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 150;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 151;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 152;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 153;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 154;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 155;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 156;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 157;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 158;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 159;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 160;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 161;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 162;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 163;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 164;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 165;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 166;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 167;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 168;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 169;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 170;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 171;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 172;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 173;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 174;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 175;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 176;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 177;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 178;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 179;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 180;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 181;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 182;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 183;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 184;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 185;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 186;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 187;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 188;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 189;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 190;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 191;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 192;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 193;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 194;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 195;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 196;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 197;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 198;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 199;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 200;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 201;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 202;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 203;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 204;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 205;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 206;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 207;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 208;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 209;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 210;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 211;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 212;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 213;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 214;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 215;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 216;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 217;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 218;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 219;4; 0.000001,-0.000000, 0.000000, 1.000000;;, + 220;4; 0.000001,-0.000000, 0.000000, 1.000000;;; + } + AnimationKey { //Scale + 1; + 221; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;, + 189;3; 1.000000, 1.000000, 1.000000;;, + 190;3; 1.000000, 1.000000, 1.000000;;, + 191;3; 1.000000, 1.000000, 1.000000;;, + 192;3; 1.000000, 1.000000, 1.000000;;, + 193;3; 1.000000, 1.000000, 1.000000;;, + 194;3; 1.000000, 1.000000, 1.000000;;, + 195;3; 1.000000, 1.000000, 1.000000;;, + 196;3; 1.000000, 1.000000, 1.000000;;, + 197;3; 1.000000, 1.000000, 1.000000;;, + 198;3; 1.000000, 1.000000, 1.000000;;, + 199;3; 1.000000, 1.000000, 1.000000;;, + 200;3; 1.000000, 1.000000, 1.000000;;, + 201;3; 1.000000, 1.000000, 1.000000;;, + 202;3; 1.000000, 1.000000, 1.000000;;, + 203;3; 1.000000, 1.000000, 1.000000;;, + 204;3; 1.000000, 1.000000, 1.000000;;, + 205;3; 1.000000, 1.000000, 1.000000;;, + 206;3; 1.000000, 1.000000, 1.000000;;, + 207;3; 1.000000, 1.000000, 1.000000;;, + 208;3; 1.000000, 1.000000, 1.000000;;, + 209;3; 1.000000, 1.000000, 1.000000;;, + 210;3; 1.000000, 1.000000, 1.000000;;, + 211;3; 1.000000, 1.000000, 1.000000;;, + 212;3; 1.000000, 1.000000, 1.000000;;, + 213;3; 1.000000, 1.000000, 1.000000;;, + 214;3; 1.000000, 1.000000, 1.000000;;, + 215;3; 1.000000, 1.000000, 1.000000;;, + 216;3; 1.000000, 1.000000, 1.000000;;, + 217;3; 1.000000, 1.000000, 1.000000;;, + 218;3; 1.000000, 1.000000, 1.000000;;, + 219;3; 1.000000, 1.000000, 1.000000;;, + 220;3; 1.000000, 1.000000, 1.000000;;; + } + } + Animation { + {Armature_Body} + AnimationKey { //Position + 2; + 221; + 0;3; -0.000000, 0.000000, 6.750000;;, + 1;3; -0.000000, 0.000000, 6.750000;;, + 2;3; -0.000000, 0.000000, 6.750000;;, + 3;3; -0.000000, 0.000000, 6.750000;;, + 4;3; -0.000000, 0.000000, 6.750000;;, + 5;3; -0.000000, 0.000000, 6.750000;;, + 6;3; -0.000000, 0.000000, 6.750000;;, + 7;3; -0.000000, 0.000000, 6.750000;;, + 8;3; -0.000000, 0.000000, 6.750000;;, + 9;3; -0.000000, 0.000000, 6.750000;;, + 10;3; -0.000000, 0.000000, 6.750000;;, + 11;3; -0.000000, 0.000000, 6.750000;;, + 12;3; -0.000000, 0.000000, 6.750000;;, + 13;3; -0.000000, 0.000000, 6.750000;;, + 14;3; -0.000000, 0.000000, 6.750000;;, + 15;3; -0.000000, 0.000000, 6.750000;;, + 16;3; -0.000000, 0.000000, 6.750000;;, + 17;3; -0.000000, 0.000000, 6.750000;;, + 18;3; -0.000000, 0.000000, 6.750000;;, + 19;3; -0.000000, 0.000000, 6.750000;;, + 20;3; -0.000000, 0.000000, 6.750000;;, + 21;3; -0.000000, 0.000000, 6.750000;;, + 22;3; -0.000000, 0.000000, 6.750000;;, + 23;3; -0.000000, 0.000000, 6.750000;;, + 24;3; -0.000000, 0.000000, 6.750000;;, + 25;3; -0.000000, 0.000000, 6.750000;;, + 26;3; -0.000000, 0.000000, 6.750000;;, + 27;3; -0.000000, 0.000000, 6.750000;;, + 28;3; -0.000000, 0.000000, 6.750000;;, + 29;3; -0.000000, 0.000000, 6.750000;;, + 30;3; -0.000000, 0.000000, 6.750000;;, + 31;3; -0.000000, 0.000000, 6.750000;;, + 32;3; -0.000000, 0.000000, 6.750000;;, + 33;3; -0.000000, 0.000000, 6.750000;;, + 34;3; -0.000000, 0.000000, 6.750000;;, + 35;3; -0.000000, 0.000000, 6.750000;;, + 36;3; -0.000000, 0.000000, 6.750000;;, + 37;3; -0.000000, 0.000000, 6.750000;;, + 38;3; -0.000000, 0.000000, 6.750000;;, + 39;3; -0.000000, 0.000000, 6.750000;;, + 40;3; -0.000000, 0.000000, 6.750000;;, + 41;3; -0.000000, 0.000000, 6.750000;;, + 42;3; -0.000000, 0.000000, 6.750000;;, + 43;3; -0.000000, 0.000000, 6.750000;;, + 44;3; -0.000000, 0.000000, 6.750000;;, + 45;3; -0.000000, 0.000000, 6.750000;;, + 46;3; -0.000000, 0.000000, 6.750000;;, + 47;3; -0.000000, 0.000000, 6.750000;;, + 48;3; -0.000000, 0.000000, 6.750000;;, + 49;3; -0.000000, 0.000000, 6.750000;;, + 50;3; -0.000000, 0.000000, 6.750000;;, + 51;3; -0.000000, 0.000000, 6.750000;;, + 52;3; -0.000000, 0.000000, 6.750000;;, + 53;3; -0.000000, 0.000000, 6.750000;;, + 54;3; -0.000000, 0.000000, 6.750000;;, + 55;3; -0.000000, 0.000000, 6.750000;;, + 56;3; -0.000000, 0.000000, 6.750000;;, + 57;3; -0.000000, 0.000000, 6.750000;;, + 58;3; -0.000000, 0.000000, 6.750000;;, + 59;3; -0.000000, 0.000000, 6.750000;;, + 60;3; -0.000000, 0.000000, 6.750000;;, + 61;3; -0.000000, 0.000000, 6.750000;;, + 62;3; -0.000000, 0.000000, 6.750000;;, + 63;3; -0.000000, 0.000000, 6.750000;;, + 64;3; -0.000000, 0.000000, 6.750000;;, + 65;3; -0.000000, 0.000000, 6.750000;;, + 66;3; -0.000000, 0.000000, 6.750000;;, + 67;3; -0.000000, 0.000000, 6.750000;;, + 68;3; -0.000000, 0.000000, 6.750000;;, + 69;3; -0.000000, 0.000000, 6.750000;;, + 70;3; -0.000000, 0.000000, 6.750000;;, + 71;3; -0.000000, 0.000000, 6.750000;;, + 72;3; -0.000000, 0.000000, 6.750000;;, + 73;3; -0.000000, 0.000000, 6.750000;;, + 74;3; -0.000000, 0.000000, 6.750000;;, + 75;3; -0.000000, 0.000000, 6.750000;;, + 76;3; -0.000000, 0.000000, 6.750000;;, + 77;3; -0.000000, 0.000000, 6.750000;;, + 78;3; -0.000000, 0.000000, 6.750000;;, + 79;3; -0.000000, 0.000000, 6.750000;;, + 80;3; -0.000000, 0.000000, 6.750000;;, + 81;3; -0.000000, 0.000000, 1.000000;;, + 82;3; -0.000000, 0.000000, 1.000000;;, + 83;3; -0.000000, 0.000000, 1.000000;;, + 84;3; -0.000000, 0.000000, 1.000000;;, + 85;3; -0.000000, 0.000000, 1.000000;;, + 86;3; -0.000000, 0.000000, 1.000000;;, + 87;3; -0.000000, 0.000000, 1.000000;;, + 88;3; -0.000000, 0.000000, 1.000000;;, + 89;3; -0.000000, 0.000000, 1.000000;;, + 90;3; -0.000000, 0.000000, 1.000000;;, + 91;3; -0.000000, 0.000000, 1.000000;;, + 92;3; -0.000000, 0.000000, 1.000000;;, + 93;3; -0.000000, 0.000000, 1.000000;;, + 94;3; -0.000000, 0.000000, 1.000000;;, + 95;3; -0.000000, 0.000000, 1.000000;;, + 96;3; -0.000000, 0.000000, 1.000000;;, + 97;3; -0.000000, 0.000000, 1.000000;;, + 98;3; -0.000000, 0.000000, 1.000000;;, + 99;3; -0.000000, 0.000000, 1.000000;;, + 100;3; -0.000000, 0.000000, 1.000000;;, + 101;3; -0.000000, 0.000000, 1.000000;;, + 102;3; -0.000000, 0.000000, 1.000000;;, + 103;3; -0.000000, 0.000000, 1.000000;;, + 104;3; -0.000000, 0.000000, 1.000000;;, + 105;3; -0.000000, 0.000000, 1.000000;;, + 106;3; -0.000000, 0.000000, 1.000000;;, + 107;3; -0.000000, 0.000000, 1.000000;;, + 108;3; -0.000000, 0.000000, 1.000000;;, + 109;3; -0.000000, 0.000000, 1.000000;;, + 110;3; -0.000000, 0.000000, 1.000000;;, + 111;3; -0.000000, 0.000000, 1.000000;;, + 112;3; -0.000000, 0.000000, 1.000000;;, + 113;3; -0.000000, 0.000000, 1.000000;;, + 114;3; -0.000000, 0.000000, 1.000000;;, + 115;3; -0.000000, 0.000000, 1.000000;;, + 116;3; -0.000000, 0.000000, 1.000000;;, + 117;3; -0.000000, 0.000000, 1.000000;;, + 118;3; -0.000000, 0.000000, 1.000000;;, + 119;3; -0.000000, 0.000000, 1.000000;;, + 120;3; -0.000000, 0.000000, 1.000000;;, + 121;3; -0.000000, 0.000000, 1.000000;;, + 122;3; -0.000000, 0.000000, 1.000000;;, + 123;3; -0.000000, 0.000000, 1.000000;;, + 124;3; -0.000000, 0.000000, 1.000000;;, + 125;3; -0.000000, 0.000000, 1.000000;;, + 126;3; -0.000000, 0.000000, 1.000000;;, + 127;3; -0.000000, 0.000000, 1.000000;;, + 128;3; -0.000000, 0.000000, 1.000000;;, + 129;3; -0.000000, 0.000000, 1.000000;;, + 130;3; -0.000000, 0.000000, 1.000000;;, + 131;3; -0.000000, 0.000000, 1.000000;;, + 132;3; -0.000000, 0.000000, 1.000000;;, + 133;3; -0.000000, 0.000000, 1.000000;;, + 134;3; -0.000000, 0.000000, 1.000000;;, + 135;3; -0.000000, 0.000000, 1.000000;;, + 136;3; -0.000000, 0.000000, 1.000000;;, + 137;3; -0.000000, 0.000000, 1.000000;;, + 138;3; -0.000000, 0.000000, 1.000000;;, + 139;3; -0.000000, 0.000000, 1.000000;;, + 140;3; -0.000000, 0.000000, 1.000000;;, + 141;3; -0.000000, 0.000000, 1.000000;;, + 142;3; -0.000000, 0.000000, 1.000000;;, + 143;3; -0.000000, 0.000000, 1.000000;;, + 144;3; -0.000000, 0.000000, 1.000000;;, + 145;3; -0.000000, 0.000000, 1.000000;;, + 146;3; -0.000000, 0.000000, 1.000000;;, + 147;3; -0.000000, 0.000000, 1.000000;;, + 148;3; -0.000000, 0.000000, 1.000000;;, + 149;3; -0.000000, 0.000000, 1.000000;;, + 150;3; -0.000000, 0.000000, 1.000000;;, + 151;3; -0.000000, 0.000000, 1.000000;;, + 152;3; -0.000000, 0.000000, 1.000000;;, + 153;3; -0.000000, 0.000000, 1.000000;;, + 154;3; -0.000000, 0.000000, 1.000000;;, + 155;3; -0.000000, 0.000000, 1.000000;;, + 156;3; -0.000000, 0.000000, 1.000000;;, + 157;3; -0.000000, 0.000000, 1.000000;;, + 158;3; -0.000000, 0.000000, 1.000000;;, + 159;3; -0.000000, 0.000000, 1.000000;;, + 160;3; -0.000000, 0.000000, 1.000000;;, + 161;3; -0.000000, 0.000000, 1.000000;;, + 162;3; -0.000000, 2.000001, 1.000000;;, + 163;3; -0.000000, 2.000001, 1.000000;;, + 164;3; -0.000000, 2.000001, 1.000000;;, + 165;3; -0.000000, 2.000001, 1.000000;;, + 166;3; -0.000000, 2.000001, 1.000000;;, + 167;3; -0.000000, 2.000001, 1.000000;;, + 168;3; -0.000000, 0.000000, 6.750000;;, + 169;3; -0.000000, 0.000000, 6.750000;;, + 170;3; -0.000000, 0.000000, 6.750000;;, + 171;3; -0.000000, 0.000000, 6.750000;;, + 172;3; -0.000000, 0.000000, 6.750000;;, + 173;3; -0.000000, 0.000000, 6.750000;;, + 174;3; -0.000000, 0.000000, 6.750000;;, + 175;3; -0.000000, 0.000000, 6.750000;;, + 176;3; -0.000000, 0.000000, 6.750000;;, + 177;3; -0.000000, 0.000000, 6.750000;;, + 178;3; -0.000000, 0.000000, 6.750000;;, + 179;3; -0.000000, 0.000000, 6.750000;;, + 180;3; -0.000000, 0.000000, 6.750000;;, + 181;3; -0.000000, 0.000000, 6.750000;;, + 182;3; -0.000000, 0.000000, 6.750000;;, + 183;3; -0.000000, 0.000000, 6.750000;;, + 184;3; -0.000000, 0.000000, 6.750000;;, + 185;3; -0.000000, 0.000000, 6.750000;;, + 186;3; -0.000000, 0.000000, 6.750000;;, + 187;3; -0.000000, 0.000000, 6.750000;;, + 188;3; -0.000000, 0.000000, 6.750000;;, + 189;3; -0.000000, 0.000000, 6.750000;;, + 190;3; -0.000000, 0.000000, 6.750000;;, + 191;3; -0.000000, 0.000000, 6.750000;;, + 192;3; -0.000000, 0.000000, 6.750000;;, + 193;3; -0.000000, 0.000000, 6.750000;;, + 194;3; -0.000000, 0.000000, 6.750000;;, + 195;3; -0.000000, 0.000000, 6.750000;;, + 196;3; -0.000000, 0.000000, 6.750000;;, + 197;3; -0.000000, 0.000000, 6.750000;;, + 198;3; -0.000000, 0.000000, 6.750000;;, + 199;3; -0.000000, 0.000000, 6.750000;;, + 200;3; -0.000000, 0.000000, 6.750000;;, + 201;3; -0.000000, 0.000000, 6.750000;;, + 202;3; -0.000000, 0.000000, 6.750000;;, + 203;3; -0.000000, 0.000000, 6.750000;;, + 204;3; -0.000000, 0.000000, 6.750000;;, + 205;3; -0.000000, 0.000000, 6.750000;;, + 206;3; -0.000000, 0.000000, 6.750000;;, + 207;3; -0.000000, 0.000000, 6.750000;;, + 208;3; -0.000000, 0.000000, 6.750000;;, + 209;3; -0.000000, 0.000000, 6.750000;;, + 210;3; -0.000000, 0.000000, 6.750000;;, + 211;3; -0.000000, 0.000000, 6.750000;;, + 212;3; -0.000000, 0.000000, 6.750000;;, + 213;3; -0.000000, 0.000000, 6.750000;;, + 214;3; -0.000000, 0.000000, 6.750000;;, + 215;3; -0.000000, 0.000000, 6.750000;;, + 216;3; -0.000000, 0.000000, 6.750000;;, + 217;3; -0.000000, 0.000000, 6.750000;;, + 218;3; -0.000000, 0.000000, 6.750000;;, + 219;3; -0.000000, 0.000000, 6.750000;;, + 220;3; -0.000000, 0.000000, 6.750000;;; + } + AnimationKey { //Rotation + 0; + 221; + 0;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 1;4; -0.706933, 0.707273, 0.000000, 0.000000;;, + 2;4; -0.706408, 0.707776, 0.000000, 0.000000;;, + 3;4; -0.705530, 0.708616, 0.000000, 0.000000;;, + 4;4; -0.704305, 0.709789, 0.000000, 0.000000;;, + 5;4; -0.702749, 0.711279, 0.000000, 0.000000;;, + 6;4; -0.700886, 0.713062, 0.000000, 0.000000;;, + 7;4; -0.698758, 0.715099, 0.000000, 0.000000;;, + 8;4; -0.696414, 0.717342, 0.000000, 0.000000;;, + 9;4; -0.693920, 0.719730, 0.000000, 0.000000;;, + 10;4; -0.691349, 0.722192, 0.000000, 0.000000;;, + 11;4; -0.688777, 0.724654, 0.000000, 0.000000;;, + 12;4; -0.686283, 0.727042, 0.000000, 0.000000;;, + 13;4; -0.683939, 0.729285, 0.000000, 0.000000;;, + 14;4; -0.681811, 0.731323, 0.000000, 0.000000;;, + 15;4; -0.679949, 0.733105, 0.000000, 0.000000;;, + 16;4; -0.678392, 0.734595, 0.000000, 0.000000;;, + 17;4; -0.677167, 0.735768, 0.000000, 0.000000;;, + 18;4; -0.676289, 0.736608, 0.000000, 0.000000;;, + 19;4; -0.675764, 0.737111, 0.000000, 0.000000;;, + 20;4; -0.675590, 0.737277, 0.000000, 0.000000;;, + 21;4; -0.675764, 0.737111, 0.000000, 0.000000;;, + 22;4; -0.676289, 0.736608, 0.000000, 0.000000;;, + 23;4; -0.677167, 0.735768, 0.000000, 0.000000;;, + 24;4; -0.678392, 0.734595, 0.000000, 0.000000;;, + 25;4; -0.679949, 0.733105, 0.000000, 0.000000;;, + 26;4; -0.681811, 0.731323, 0.000000, 0.000000;;, + 27;4; -0.683939, 0.729285, 0.000000, 0.000000;;, + 28;4; -0.686283, 0.727042, 0.000000, 0.000000;;, + 29;4; -0.688777, 0.724654, 0.000000, 0.000000;;, + 30;4; -0.691349, 0.722192, 0.000000, 0.000000;;, + 31;4; -0.693920, 0.719730, 0.000000, 0.000000;;, + 32;4; -0.696414, 0.717342, 0.000000, 0.000000;;, + 33;4; -0.698758, 0.715099, 0.000000, 0.000000;;, + 34;4; -0.700886, 0.713062, 0.000000, 0.000000;;, + 35;4; -0.702749, 0.711279, 0.000000, 0.000000;;, + 36;4; -0.704305, 0.709789, 0.000000, 0.000000;;, + 37;4; -0.705530, 0.708616, 0.000000, 0.000000;;, + 38;4; -0.706408, 0.707776, 0.000000, 0.000000;;, + 39;4; -0.706933, 0.707273, 0.000000, 0.000000;;, + 40;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 41;4; -0.706933, 0.707273, 0.000000, 0.000000;;, + 42;4; -0.706408, 0.707776, 0.000000, 0.000000;;, + 43;4; -0.705530, 0.708616, 0.000000, 0.000000;;, + 44;4; -0.704305, 0.709789, 0.000000, 0.000000;;, + 45;4; -0.702749, 0.711279, 0.000000, 0.000000;;, + 46;4; -0.700886, 0.713062, 0.000000, 0.000000;;, + 47;4; -0.698758, 0.715099, 0.000000, 0.000000;;, + 48;4; -0.696414, 0.717342, 0.000000, 0.000000;;, + 49;4; -0.693920, 0.719730, 0.000000, 0.000000;;, + 50;4; -0.691349, 0.722192, 0.000000, 0.000000;;, + 51;4; -0.688777, 0.724654, 0.000000, 0.000000;;, + 52;4; -0.686283, 0.727042, 0.000000, 0.000000;;, + 53;4; -0.683939, 0.729285, 0.000000, 0.000000;;, + 54;4; -0.681811, 0.731323, 0.000000, 0.000000;;, + 55;4; -0.679949, 0.733105, 0.000000, 0.000000;;, + 56;4; -0.678392, 0.734595, 0.000000, 0.000000;;, + 57;4; -0.677167, 0.735768, 0.000000, 0.000000;;, + 58;4; -0.676289, 0.736608, 0.000000, 0.000000;;, + 59;4; -0.675764, 0.737111, 0.000000, 0.000000;;, + 60;4; -0.675590, 0.737277, 0.000000, 0.000000;;, + 61;4; -0.675754, 0.737121, 0.000000, 0.000000;;, + 62;4; -0.676212, 0.736682, 0.000000, 0.000000;;, + 63;4; -0.676927, 0.735998, 0.000000, 0.000000;;, + 64;4; -0.677865, 0.735100, 0.000000, 0.000000;;, + 65;4; -0.679001, 0.734013, 0.000000, 0.000000;;, + 66;4; -0.680312, 0.732757, 0.000000, 0.000000;;, + 67;4; -0.681780, 0.731352, 0.000000, 0.000000;;, + 68;4; -0.683387, 0.729813, 0.000000, 0.000000;;, + 69;4; -0.685121, 0.728154, 0.000000, 0.000000;;, + 70;4; -0.686966, 0.726388, 0.000000, 0.000000;;, + 71;4; -0.688910, 0.724526, 0.000000, 0.000000;;, + 72;4; -0.690941, 0.722582, 0.000000, 0.000000;;, + 73;4; -0.693046, 0.720567, 0.000000, 0.000000;;, + 74;4; -0.695210, 0.718495, 0.000000, 0.000000;;, + 75;4; -0.697417, 0.716383, 0.000000, 0.000000;;, + 76;4; -0.699643, 0.714251, 0.000000, 0.000000;;, + 77;4; -0.701856, 0.712134, 0.000000, 0.000000;;, + 78;4; -0.703995, 0.710085, 0.000000, 0.000000;;, + 79;4; -0.705928, 0.708235, 0.000000, 0.000000;;, + 80;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 81;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 82;4; -0.705928, 0.708235, 0.000000, 0.000000;;, + 83;4; -0.703995, 0.710085, 0.000000, 0.000000;;, + 84;4; -0.701856, 0.712134, 0.000000, 0.000000;;, + 85;4; -0.699643, 0.714251, 0.000000, 0.000000;;, + 86;4; -0.697417, 0.716383, 0.000000, 0.000000;;, + 87;4; -0.695210, 0.718495, 0.000000, 0.000000;;, + 88;4; -0.693046, 0.720567, 0.000000, 0.000000;;, + 89;4; -0.690941, 0.722582, 0.000000, 0.000000;;, + 90;4; -0.688910, 0.724526, 0.000000, 0.000000;;, + 91;4; -0.686966, 0.726388, 0.000000, 0.000000;;, + 92;4; -0.685121, 0.728154, 0.000000, 0.000000;;, + 93;4; -0.683387, 0.729813, 0.000000, 0.000000;;, + 94;4; -0.681780, 0.731352, 0.000000, 0.000000;;, + 95;4; -0.680312, 0.732757, 0.000000, 0.000000;;, + 96;4; -0.679001, 0.734013, 0.000000, 0.000000;;, + 97;4; -0.677865, 0.735100, 0.000000, 0.000000;;, + 98;4; -0.676927, 0.735998, 0.000000, 0.000000;;, + 99;4; -0.676212, 0.736682, 0.000000, 0.000000;;, + 100;4; -0.675754, 0.737121, 0.000000, 0.000000;;, + 101;4; -0.675590, 0.737277, 0.000000, 0.000000;;, + 102;4; -0.675764, 0.737111, 0.000000, 0.000000;;, + 103;4; -0.676289, 0.736608, 0.000000, 0.000000;;, + 104;4; -0.677167, 0.735768, 0.000000, 0.000000;;, + 105;4; -0.678392, 0.734595, 0.000000, 0.000000;;, + 106;4; -0.679949, 0.733105, 0.000000, 0.000000;;, + 107;4; -0.681811, 0.731323, 0.000000, 0.000000;;, + 108;4; -0.683939, 0.729285, 0.000000, 0.000000;;, + 109;4; -0.686283, 0.727042, 0.000000, 0.000000;;, + 110;4; -0.688777, 0.724654, 0.000000, 0.000000;;, + 111;4; -0.691349, 0.722192, 0.000000, 0.000000;;, + 112;4; -0.693920, 0.719730, 0.000000, 0.000000;;, + 113;4; -0.696414, 0.717342, 0.000000, 0.000000;;, + 114;4; -0.698758, 0.715099, 0.000000, 0.000000;;, + 115;4; -0.700886, 0.713062, 0.000000, 0.000000;;, + 116;4; -0.702749, 0.711279, 0.000000, 0.000000;;, + 117;4; -0.704305, 0.709789, 0.000000, 0.000000;;, + 118;4; -0.705530, 0.708616, 0.000000, 0.000000;;, + 119;4; -0.706408, 0.707776, 0.000000, 0.000000;;, + 120;4; -0.706933, 0.707273, 0.000000, 0.000000;;, + 121;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 122;4; -0.706933, 0.707273, 0.000000, 0.000000;;, + 123;4; -0.706408, 0.707776, 0.000000, 0.000000;;, + 124;4; -0.705530, 0.708616, 0.000000, 0.000000;;, + 125;4; -0.704305, 0.709789, 0.000000, 0.000000;;, + 126;4; -0.702749, 0.711279, 0.000000, 0.000000;;, + 127;4; -0.700886, 0.713062, 0.000000, 0.000000;;, + 128;4; -0.698758, 0.715099, 0.000000, 0.000000;;, + 129;4; -0.696414, 0.717342, 0.000000, 0.000000;;, + 130;4; -0.693920, 0.719730, 0.000000, 0.000000;;, + 131;4; -0.691349, 0.722192, 0.000000, 0.000000;;, + 132;4; -0.688777, 0.724654, 0.000000, 0.000000;;, + 133;4; -0.686283, 0.727042, 0.000000, 0.000000;;, + 134;4; -0.683939, 0.729285, 0.000000, 0.000000;;, + 135;4; -0.681811, 0.731323, 0.000000, 0.000000;;, + 136;4; -0.679949, 0.733105, 0.000000, 0.000000;;, + 137;4; -0.678392, 0.734595, 0.000000, 0.000000;;, + 138;4; -0.677167, 0.735768, 0.000000, 0.000000;;, + 139;4; -0.676289, 0.736608, 0.000000, 0.000000;;, + 140;4; -0.675764, 0.737111, 0.000000, 0.000000;;, + 141;4; -0.675590, 0.737277, 0.000000, 0.000000;;, + 142;4; -0.675754, 0.737121, 0.000000, 0.000000;;, + 143;4; -0.676211, 0.736683, 0.000000, 0.000000;;, + 144;4; -0.676923, 0.736001, 0.000000, 0.000000;;, + 145;4; -0.677857, 0.735107, 0.000000, 0.000000;;, + 146;4; -0.678987, 0.734026, 0.000000, 0.000000;;, + 147;4; -0.680291, 0.732778, 0.000000, 0.000000;;, + 148;4; -0.681750, 0.731381, 0.000000, 0.000000;;, + 149;4; -0.683349, 0.729852, 0.000000, 0.000000;;, + 150;4; -0.685071, 0.728203, 0.000000, 0.000000;;, + 151;4; -0.686905, 0.726448, 0.000000, 0.000000;;, + 152;4; -0.688838, 0.724598, 0.000000, 0.000000;;, + 153;4; -0.690858, 0.722664, 0.000000, 0.000000;;, + 154;4; -0.692953, 0.720659, 0.000000, 0.000000;;, + 155;4; -0.695109, 0.718596, 0.000000, 0.000000;;, + 156;4; -0.697310, 0.716489, 0.000000, 0.000000;;, + 157;4; -0.699536, 0.714358, 0.000000, 0.000000;;, + 158;4; -0.701754, 0.712235, 0.000000, 0.000000;;, + 159;4; -0.703909, 0.710171, 0.000000, 0.000000;;, + 160;4; -0.705875, 0.708288, 0.000000, 0.000000;;, + 161;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 162;4; -0.000000, 1.000000, 0.000000, 0.000000;;, + 163;4; -0.000000, 1.000000, 0.000000, 0.000000;;, + 164;4; -0.000000, 1.000000, 0.000000, 0.000000;;, + 165;4; -0.000000, 1.000000, 0.000000, 0.000000;;, + 166;4; -0.000000, 1.000000, 0.000000, 0.000000;;, + 167;4; -0.000000, 1.000000, 0.000000, 0.000000;;, + 168;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 169;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 170;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 171;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 172;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 173;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 174;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 175;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 176;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 177;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 178;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 179;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 180;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 181;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 182;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 183;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 184;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 185;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 186;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 187;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 188;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 189;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 190;4; -0.709789, 0.704305, 0.000000, 0.000000;;, + 191;4; -0.717343, 0.696414, 0.000000, 0.000000;;, + 192;4; -0.727042, 0.686283, 0.000000, 0.000000;;, + 193;4; -0.734596, 0.678392, 0.000000, 0.000000;;, + 194;4; -0.737277, 0.675590, 0.000000, 0.000000;;, + 195;4; -0.734596, 0.678392, 0.000000, 0.000000;;, + 196;4; -0.727042, 0.686283, 0.000000, 0.000000;;, + 197;4; -0.717343, 0.696414, 0.000000, 0.000000;;, + 198;4; -0.709789, 0.704305, 0.000000, 0.000000;;, + 199;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 200;4; -0.707107, 0.707107, 0.000000, 0.000000;;, + 201;4; -0.704305, 0.709789, 0.000000, 0.000000;;, + 202;4; -0.696414, 0.717342, 0.000000, 0.000000;;, + 203;4; -0.686283, 0.727042, 0.000000, 0.000000;;, + 204;4; -0.678392, 0.734595, 0.000000, 0.000000;;, + 205;4; -0.675590, 0.737277, 0.000000, 0.000000;;, + 206;4; -0.681074, 0.731794, 0.000000, 0.000000;;, + 207;4; -0.696518, 0.716349, 0.000000, 0.000000;;, + 208;4; -0.716349, 0.696518, 0.000000, 0.000000;;, + 209;4; -0.731794, 0.681074, 0.000000, 0.000000;;, + 210;4; -0.737277, 0.675590, 0.000000, 0.000000;;, + 211;4; -0.731794, 0.681074, 0.000000, 0.000000;;, + 212;4; -0.716349, 0.696518, 0.000000, 0.000000;;, + 213;4; -0.696518, 0.716349, 0.000000, 0.000000;;, + 214;4; -0.681074, 0.731794, 0.000000, 0.000000;;, + 215;4; -0.675590, 0.737277, 0.000000, 0.000000;;, + 216;4; -0.678392, 0.734595, 0.000000, 0.000000;;, + 217;4; -0.686282, 0.727042, 0.000000, 0.000000;;, + 218;4; -0.696414, 0.717343, 0.000000, 0.000000;;, + 219;4; -0.704305, 0.709789, 0.000000, 0.000000;;, + 220;4; -0.707107, 0.707107, 0.000000, 0.000000;;; + } + AnimationKey { //Scale + 1; + 221; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;, + 189;3; 1.000000, 1.000000, 1.000000;;, + 190;3; 1.000000, 1.000000, 1.000000;;, + 191;3; 1.000000, 1.000000, 1.000000;;, + 192;3; 1.000000, 1.000000, 1.000000;;, + 193;3; 1.000000, 1.000000, 1.000000;;, + 194;3; 1.000000, 1.000000, 1.000000;;, + 195;3; 1.000000, 1.000000, 1.000000;;, + 196;3; 1.000000, 1.000000, 1.000000;;, + 197;3; 1.000000, 1.000000, 1.000000;;, + 198;3; 1.000000, 1.000000, 1.000000;;, + 199;3; 1.000000, 1.000000, 1.000000;;, + 200;3; 1.000000, 1.000000, 1.000000;;, + 201;3; 1.000000, 1.000000, 1.000000;;, + 202;3; 1.000000, 1.000000, 1.000000;;, + 203;3; 1.000000, 1.000000, 1.000000;;, + 204;3; 1.000000, 1.000000, 1.000000;;, + 205;3; 1.000000, 1.000000, 1.000000;;, + 206;3; 1.000000, 1.000000, 1.000000;;, + 207;3; 1.000000, 1.000000, 1.000000;;, + 208;3; 1.000000, 1.000000, 1.000000;;, + 209;3; 1.000000, 1.000000, 1.000000;;, + 210;3; 1.000000, 1.000000, 1.000000;;, + 211;3; 1.000000, 1.000000, 1.000000;;, + 212;3; 1.000000, 1.000000, 1.000000;;, + 213;3; 1.000000, 1.000000, 1.000000;;, + 214;3; 1.000000, 1.000000, 1.000000;;, + 215;3; 1.000000, 1.000000, 1.000000;;, + 216;3; 1.000000, 1.000000, 1.000000;;, + 217;3; 1.000000, 1.000000, 1.000000;;, + 218;3; 1.000000, 1.000000, 1.000000;;, + 219;3; 1.000000, 1.000000, 1.000000;;, + 220;3; 1.000000, 1.000000, 1.000000;;; + } + } + Animation { + {Armature_Head} + AnimationKey { //Position + 2; + 221; + 0;3; 0.000000, 6.750000,-0.000000;;, + 1;3; 0.000000, 6.750000, 0.000000;;, + 2;3; 0.000000, 6.750000,-0.000000;;, + 3;3; 0.000000, 6.750000, 0.000000;;, + 4;3; 0.000000, 6.750000,-0.000000;;, + 5;3; 0.000000, 6.750000,-0.000000;;, + 6;3; 0.000000, 6.750000, 0.000000;;, + 7;3; 0.000000, 6.750000, 0.000000;;, + 8;3; 0.000000, 6.750000,-0.000000;;, + 9;3; 0.000000, 6.750000, 0.000000;;, + 10;3; 0.000000, 6.750000,-0.000000;;, + 11;3; 0.000000, 6.750000,-0.000000;;, + 12;3; 0.000000, 6.750000, 0.000000;;, + 13;3; 0.000000, 6.750000, 0.000000;;, + 14;3; 0.000000, 6.750000, 0.000000;;, + 15;3; 0.000000, 6.750000, 0.000000;;, + 16;3; 0.000000, 6.750000,-0.000000;;, + 17;3; 0.000000, 6.750000,-0.000000;;, + 18;3; 0.000000, 6.750000, 0.000000;;, + 19;3; 0.000000, 6.750000, 0.000000;;, + 20;3; 0.000000, 6.750000,-0.000000;;, + 21;3; 0.000000, 6.750000, 0.000000;;, + 22;3; 0.000000, 6.750000,-0.000000;;, + 23;3; 0.000000, 6.750000,-0.000000;;, + 24;3; 0.000000, 6.750000,-0.000000;;, + 25;3; 0.000000, 6.750000, 0.000000;;, + 26;3; 0.000000, 6.750000, 0.000000;;, + 27;3; 0.000000, 6.750000, 0.000000;;, + 28;3; 0.000000, 6.750000, 0.000000;;, + 29;3; 0.000000, 6.750000,-0.000000;;, + 30;3; 0.000000, 6.750000,-0.000000;;, + 31;3; 0.000000, 6.750000,-0.000000;;, + 32;3; 0.000000, 6.750000,-0.000000;;, + 33;3; 0.000000, 6.750000, 0.000000;;, + 34;3; 0.000000, 6.750000,-0.000000;;, + 35;3; 0.000000, 6.750000,-0.000000;;, + 36;3; 0.000000, 6.750000, 0.000000;;, + 37;3; 0.000000, 6.750000, 0.000000;;, + 38;3; 0.000000, 6.750000,-0.000000;;, + 39;3; 0.000000, 6.750000, 0.000000;;, + 40;3; 0.000000, 6.750000,-0.000000;;, + 41;3; 0.000000, 6.750000,-0.000000;;, + 42;3; 0.000000, 6.750000,-0.000000;;, + 43;3; 0.000000, 6.750000, 0.000000;;, + 44;3; 0.000000, 6.750000,-0.000000;;, + 45;3; 0.000000, 6.750000,-0.000000;;, + 46;3; 0.000000, 6.750000,-0.000000;;, + 47;3; 0.000000, 6.750000, 0.000000;;, + 48;3; 0.000000, 6.750000,-0.000000;;, + 49;3; 0.000000, 6.750000,-0.000000;;, + 50;3; 0.000000, 6.750000,-0.000000;;, + 51;3; 0.000000, 6.750000,-0.000000;;, + 52;3; 0.000000, 6.750000, 0.000000;;, + 53;3; 0.000000, 6.750000, 0.000000;;, + 54;3; 0.000000, 6.750000,-0.000000;;, + 55;3; 0.000000, 6.750000,-0.000000;;, + 56;3; 0.000000, 6.750000,-0.000000;;, + 57;3; 0.000000, 6.750000,-0.000000;;, + 58;3; 0.000000, 6.750000, 0.000000;;, + 59;3; 0.000000, 6.750000, 0.000000;;, + 60;3; 0.000000, 6.750000,-0.000000;;, + 61;3; 0.000000, 6.750000,-0.000000;;, + 62;3; 0.000000, 6.750000, 0.000000;;, + 63;3; 0.000000, 6.750000, 0.000000;;, + 64;3; 0.000000, 6.750000, 0.000000;;, + 65;3; 0.000000, 6.750000, 0.000000;;, + 66;3; 0.000000, 6.750000, 0.000000;;, + 67;3; 0.000000, 6.750000,-0.000000;;, + 68;3; 0.000000, 6.750000, 0.000000;;, + 69;3; 0.000000, 6.750000, 0.000000;;, + 70;3; 0.000000, 6.750000, 0.000000;;, + 71;3; 0.000000, 6.750000, 0.000000;;, + 72;3; 0.000000, 6.750000, 0.000000;;, + 73;3; 0.000000, 6.750000,-0.000000;;, + 74;3; 0.000000, 6.750000, 0.000000;;, + 75;3; 0.000000, 6.750000, 0.000000;;, + 76;3; 0.000000, 6.750000, 0.000000;;, + 77;3; 0.000000, 6.750000,-0.000000;;, + 78;3; 0.000000, 6.750001,-0.000000;;, + 79;3; 0.000000, 6.750000,-0.000000;;, + 80;3; 0.000000, 6.750000,-0.000000;;, + 81;3; 0.000000, 6.750000, 0.000000;;, + 82;3; 0.000000, 6.750000,-0.000000;;, + 83;3; 0.000000, 6.750000,-0.000000;;, + 84;3; 0.000000, 6.750000,-0.000000;;, + 85;3; 0.000000, 6.750000,-0.000000;;, + 86;3; 0.000000, 6.750000, 0.000000;;, + 87;3; 0.000000, 6.750000,-0.000000;;, + 88;3; 0.000000, 6.750000,-0.000000;;, + 89;3; 0.000000, 6.750000, 0.000000;;, + 90;3; 0.000000, 6.750000,-0.000000;;, + 91;3; 0.000000, 6.750000, 0.000000;;, + 92;3; 0.000000, 6.750000, 0.000000;;, + 93;3; 0.000000, 6.750000, 0.000000;;, + 94;3; 0.000000, 6.750000,-0.000000;;, + 95;3; 0.000000, 6.750000, 0.000000;;, + 96;3; 0.000000, 6.750000,-0.000000;;, + 97;3; 0.000000, 6.750000,-0.000000;;, + 98;3; 0.000000, 6.750000,-0.000000;;, + 99;3; 0.000000, 6.750000,-0.000000;;, + 100;3; 0.000000, 6.750000, 0.000000;;, + 101;3; 0.000000, 6.750000,-0.000000;;, + 102;3; 0.000000, 6.750000, 0.000000;;, + 103;3; 0.000000, 6.750000,-0.000000;;, + 104;3; 0.000000, 6.750000,-0.000000;;, + 105;3; 0.000000, 6.750000,-0.000000;;, + 106;3; 0.000000, 6.750000,-0.000000;;, + 107;3; 0.000000, 6.750000, 0.000000;;, + 108;3; 0.000000, 6.750000, 0.000000;;, + 109;3; 0.000000, 6.750000,-0.000000;;, + 110;3; 0.000000, 6.750000,-0.000000;;, + 111;3; 0.000000, 6.750000,-0.000000;;, + 112;3; 0.000000, 6.750000,-0.000000;;, + 113;3; 0.000000, 6.750000,-0.000000;;, + 114;3; 0.000000, 6.750000, 0.000000;;, + 115;3; 0.000000, 6.750000,-0.000000;;, + 116;3; 0.000000, 6.750000,-0.000000;;, + 117;3; 0.000000, 6.750000,-0.000000;;, + 118;3; 0.000000, 6.750000,-0.000000;;, + 119;3; 0.000000, 6.750000, 0.000000;;, + 120;3; 0.000000, 6.750000, 0.000000;;, + 121;3; 0.000000, 6.750000, 0.000000;;, + 122;3; 0.000000, 6.750000, 0.000000;;, + 123;3; 0.000000, 6.750000,-0.000000;;, + 124;3; 0.000000, 6.750000,-0.000000;;, + 125;3; 0.000000, 6.750000,-0.000000;;, + 126;3; 0.000000, 6.750000,-0.000000;;, + 127;3; 0.000000, 6.750000,-0.000000;;, + 128;3; 0.000000, 6.750000, 0.000000;;, + 129;3; 0.000000, 6.750000,-0.000000;;, + 130;3; 0.000000, 6.750000, 0.000000;;, + 131;3; 0.000000, 6.750000,-0.000000;;, + 132;3; 0.000000, 6.750000,-0.000000;;, + 133;3; 0.000000, 6.750000,-0.000000;;, + 134;3; 0.000000, 6.750000, 0.000000;;, + 135;3; 0.000000, 6.750000, 0.000000;;, + 136;3; 0.000000, 6.750000,-0.000000;;, + 137;3; 0.000000, 6.750000,-0.000000;;, + 138;3; 0.000000, 6.750000,-0.000000;;, + 139;3; 0.000000, 6.750000,-0.000000;;, + 140;3; 0.000000, 6.750000, 0.000000;;, + 141;3; 0.000000, 6.750000,-0.000000;;, + 142;3; 0.000000, 6.750000,-0.000000;;, + 143;3; 0.000000, 6.750000,-0.000000;;, + 144;3; 0.000000, 6.750000, 0.000000;;, + 145;3; 0.000000, 6.750000,-0.000000;;, + 146;3; 0.000000, 6.750000, 0.000000;;, + 147;3; 0.000000, 6.750000, 0.000000;;, + 148;3; 0.000000, 6.750000,-0.000000;;, + 149;3; 0.000000, 6.750000,-0.000000;;, + 150;3; 0.000000, 6.750000,-0.000000;;, + 151;3; 0.000000, 6.750000,-0.000000;;, + 152;3; 0.000000, 6.750000,-0.000000;;, + 153;3; 0.000000, 6.750000, 0.000000;;, + 154;3; 0.000000, 6.750000,-0.000000;;, + 155;3; 0.000000, 6.750000,-0.000000;;, + 156;3; 0.000000, 6.750000,-0.000000;;, + 157;3; 0.000000, 6.750000,-0.000000;;, + 158;3; 0.000000, 6.750000, 0.000000;;, + 159;3; 0.000000, 6.750000,-0.000000;;, + 160;3; 0.000000, 6.750000, 0.000000;;, + 161;3; 0.000000, 6.750000, 0.000000;;, + 162;3; 0.000000, 6.750000,-0.000000;;, + 163;3; 0.000000, 6.750000,-0.000000;;, + 164;3; 0.000000, 6.750000,-0.000000;;, + 165;3; 0.000000, 6.750000,-0.000000;;, + 166;3; 0.000000, 6.750000,-0.000000;;, + 167;3; 0.000000, 6.750000,-0.000000;;, + 168;3; 0.000000, 6.750000,-0.000000;;, + 169;3; 0.000000, 6.750000,-0.000000;;, + 170;3; 0.000000, 6.750000,-0.000000;;, + 171;3; 0.000000, 6.750000,-0.000000;;, + 172;3; 0.000000, 6.750000,-0.000000;;, + 173;3; 0.000000, 6.750000,-0.000000;;, + 174;3; 0.000000, 6.750000,-0.000000;;, + 175;3; 0.000000, 6.750000,-0.000000;;, + 176;3; 0.000000, 6.750000,-0.000000;;, + 177;3; 0.000000, 6.750000,-0.000000;;, + 178;3; 0.000000, 6.750000,-0.000000;;, + 179;3; 0.000000, 6.750000,-0.000000;;, + 180;3; 0.000000, 6.750000,-0.000000;;, + 181;3; 0.000000, 6.750000,-0.000000;;, + 182;3; 0.000000, 6.750000,-0.000000;;, + 183;3; 0.000000, 6.750000,-0.000000;;, + 184;3; 0.000000, 6.750000,-0.000000;;, + 185;3; 0.000000, 6.750000,-0.000000;;, + 186;3; 0.000000, 6.750000,-0.000000;;, + 187;3; 0.000000, 6.750000,-0.000000;;, + 188;3; 0.000000, 6.750000,-0.000000;;, + 189;3; 0.000000, 6.750000,-0.000000;;, + 190;3; 0.000000, 6.750000, 0.000000;;, + 191;3; 0.000000, 6.750000, 0.000000;;, + 192;3; 0.000000, 6.750000,-0.000000;;, + 193;3; 0.000000, 6.750001, 0.000000;;, + 194;3; 0.000000, 6.750001, 0.000000;;, + 195;3; 0.000000, 6.750001, 0.000000;;, + 196;3; 0.000000, 6.750000,-0.000000;;, + 197;3; 0.000000, 6.750000, 0.000000;;, + 198;3; 0.000000, 6.750000,-0.000000;;, + 199;3; 0.000000, 6.750000,-0.000000;;, + 200;3; 0.000000, 6.750000,-0.000000;;, + 201;3; 0.000000, 6.750000, 0.000000;;, + 202;3; 0.000000, 6.750000,-0.000000;;, + 203;3; 0.000000, 6.750000, 0.000000;;, + 204;3; 0.000000, 6.750000,-0.000000;;, + 205;3; 0.000000, 6.750000,-0.000000;;, + 206;3; 0.000000, 6.750000, 0.000000;;, + 207;3; 0.000000, 6.750000,-0.000000;;, + 208;3; 0.000000, 6.750000, 0.000000;;, + 209;3; 0.000000, 6.750000,-0.000000;;, + 210;3; 0.000000, 6.750001, 0.000000;;, + 211;3; 0.000000, 6.750000,-0.000000;;, + 212;3; 0.000000, 6.750000, 0.000000;;, + 213;3; 0.000000, 6.750000,-0.000000;;, + 214;3; 0.000000, 6.750000, 0.000000;;, + 215;3; 0.000000, 6.750000,-0.000000;;, + 216;3; 0.000000, 6.750000,-0.000000;;, + 217;3; 0.000000, 6.750000, 0.000000;;, + 218;3; 0.000000, 6.750000, 0.000000;;, + 219;3; 0.000000, 6.750000,-0.000000;;, + 220;3; 0.000000, 6.750000,-0.000000;;; + } + AnimationKey { //Rotation + 0; + 221; + 0;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 1;4; -0.000120,-0.000005, 0.999993,-0.000240;;, + 2;4; -0.000483,-0.000021, 0.999974,-0.000967;;, + 3;4; -0.001090,-0.000048, 0.999941,-0.002181;;, + 4;4; -0.001937,-0.000085, 0.999894,-0.003876;;, + 5;4; -0.003014,-0.000132, 0.999835,-0.006030;;, + 6;4; -0.004301,-0.000188, 0.999765,-0.008607;;, + 7;4; -0.005773,-0.000252, 0.999685,-0.011553;;, + 8;4; -0.007394,-0.000323, 0.999596,-0.014795;;, + 9;4; -0.009118,-0.000398, 0.999502,-0.018246;;, + 10;4; -0.010897,-0.000476, 0.999405,-0.021804;;, + 11;4; -0.012675,-0.000553, 0.999308,-0.025363;;, + 12;4; -0.014400,-0.000629, 0.999214,-0.028814;;, + 13;4; -0.016021,-0.000699, 0.999126,-0.032056;;, + 14;4; -0.017493,-0.000764, 0.999045,-0.035002;;, + 15;4; -0.018780,-0.000820, 0.998975,-0.037578;;, + 16;4; -0.019857,-0.000867, 0.998916,-0.039733;;, + 17;4; -0.020704,-0.000904, 0.998870,-0.041427;;, + 18;4; -0.021311,-0.000930, 0.998837,-0.042642;;, + 19;4; -0.021674,-0.000946, 0.998817,-0.043369;;, + 20;4; -0.021794,-0.000952, 0.998811,-0.043609;;, + 21;4; -0.021720,-0.000948, 0.998817,-0.043369;;, + 22;4; -0.021494,-0.000938, 0.998837,-0.042642;;, + 23;4; -0.021108,-0.000922, 0.998870,-0.041427;;, + 24;4; -0.020560,-0.000898, 0.998916,-0.039733;;, + 25;4; -0.019848,-0.000867, 0.998975,-0.037578;;, + 26;4; -0.018975,-0.000828, 0.999045,-0.035002;;, + 27;4; -0.017947,-0.000784, 0.999126,-0.032056;;, + 28;4; -0.016778,-0.000733, 0.999214,-0.028814;;, + 29;4; -0.015484,-0.000676, 0.999308,-0.025363;;, + 30;4; -0.014088,-0.000615, 0.999405,-0.021804;;, + 31;4; -0.012616,-0.000551, 0.999502,-0.018246;;, + 32;4; -0.011095,-0.000484, 0.999596,-0.014795;;, + 33;4; -0.009555,-0.000417, 0.999685,-0.011553;;, + 34;4; -0.008021,-0.000350, 0.999765,-0.008607;;, + 35;4; -0.006517,-0.000285, 0.999835,-0.006030;;, + 36;4; -0.005062,-0.000221, 0.999894,-0.003876;;, + 37;4; -0.003674,-0.000160, 0.999941,-0.002181;;, + 38;4; -0.002362,-0.000103, 0.999974,-0.000967;;, + 39;4; -0.001136,-0.000050, 0.999993,-0.000240;;, + 40;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 41;4; 0.001136, 0.000050, 0.999993,-0.000240;;, + 42;4; 0.002362, 0.000103, 0.999974,-0.000967;;, + 43;4; 0.003674, 0.000160, 0.999941,-0.002181;;, + 44;4; 0.005062, 0.000221, 0.999894,-0.003876;;, + 45;4; 0.006517, 0.000285, 0.999835,-0.006030;;, + 46;4; 0.008021, 0.000350, 0.999765,-0.008607;;, + 47;4; 0.009555, 0.000417, 0.999685,-0.011553;;, + 48;4; 0.011095, 0.000484, 0.999596,-0.014795;;, + 49;4; 0.012616, 0.000551, 0.999502,-0.018246;;, + 50;4; 0.014088, 0.000615, 0.999405,-0.021804;;, + 51;4; 0.015484, 0.000676, 0.999308,-0.025363;;, + 52;4; 0.016778, 0.000733, 0.999214,-0.028814;;, + 53;4; 0.017947, 0.000784, 0.999126,-0.032056;;, + 54;4; 0.018975, 0.000828, 0.999045,-0.035002;;, + 55;4; 0.019848, 0.000867, 0.998975,-0.037578;;, + 56;4; 0.020560, 0.000898, 0.998916,-0.039733;;, + 57;4; 0.021109, 0.000922, 0.998870,-0.041427;;, + 58;4; 0.021494, 0.000938, 0.998837,-0.042642;;, + 59;4; 0.021720, 0.000948, 0.998817,-0.043369;;, + 60;4; 0.021794, 0.000952, 0.998811,-0.043609;;, + 61;4; 0.021681, 0.000947, 0.998817,-0.043383;;, + 62;4; 0.021364, 0.000933, 0.998834,-0.042748;;, + 63;4; 0.020870, 0.000911, 0.998861,-0.041759;;, + 64;4; 0.020221, 0.000883, 0.998896,-0.040461;;, + 65;4; 0.019436, 0.000849, 0.998939,-0.038890;;, + 66;4; 0.018529, 0.000809, 0.998989,-0.037076;;, + 67;4; 0.017514, 0.000765, 0.999044,-0.035045;;, + 68;4; 0.016402, 0.000716, 0.999105,-0.032820;;, + 69;4; 0.015204, 0.000664, 0.999170,-0.030422;;, + 70;4; 0.013928, 0.000608, 0.999240,-0.027869;;, + 71;4; 0.012583, 0.000549, 0.999313,-0.025178;;, + 72;4; 0.011179, 0.000488, 0.999390,-0.022368;;, + 73;4; 0.009723, 0.000425, 0.999469,-0.019456;;, + 74;4; 0.008227, 0.000359, 0.999551,-0.016461;;, + 75;4; 0.006701, 0.000293, 0.999634,-0.013408;;, + 76;4; 0.005161, 0.000225, 0.999718,-0.010327;;, + 77;4; 0.003631, 0.000159, 0.999802,-0.007266;;, + 78;4; 0.002152, 0.000094, 0.999883,-0.004305;;, + 79;4; 0.000815, 0.000036, 0.999956,-0.001631;;, + 80;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 81;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 82;4; -0.000815,-0.000036, 0.999956,-0.001631;;, + 83;4; -0.002152,-0.000094, 0.999883,-0.004305;;, + 84;4; -0.003631,-0.000159, 0.999802,-0.007266;;, + 85;4; -0.005161,-0.000225, 0.999718,-0.010327;;, + 86;4; -0.006701,-0.000293, 0.999634,-0.013408;;, + 87;4; -0.008226,-0.000359, 0.999551,-0.016461;;, + 88;4; -0.009723,-0.000425, 0.999469,-0.019456;;, + 89;4; -0.011179,-0.000488, 0.999390,-0.022368;;, + 90;4; -0.012583,-0.000549, 0.999313,-0.025178;;, + 91;4; -0.013928,-0.000608, 0.999240,-0.027869;;, + 92;4; -0.015204,-0.000664, 0.999170,-0.030422;;, + 93;4; -0.016402,-0.000716, 0.999105,-0.032820;;, + 94;4; -0.017514,-0.000765, 0.999044,-0.035045;;, + 95;4; -0.018529,-0.000809, 0.998989,-0.037076;;, + 96;4; -0.019436,-0.000849, 0.998939,-0.038890;;, + 97;4; -0.020221,-0.000883, 0.998896,-0.040461;;, + 98;4; -0.020870,-0.000911, 0.998861,-0.041759;;, + 99;4; -0.021364,-0.000933, 0.998834,-0.042748;;, + 100;4; -0.021681,-0.000947, 0.998817,-0.043383;;, + 101;4; -0.021794,-0.000952, 0.998811,-0.043609;;, + 102;4; -0.021720,-0.000948, 0.998817,-0.043369;;, + 103;4; -0.021494,-0.000938, 0.998837,-0.042642;;, + 104;4; -0.021108,-0.000922, 0.998870,-0.041427;;, + 105;4; -0.020560,-0.000898, 0.998916,-0.039733;;, + 106;4; -0.019848,-0.000867, 0.998975,-0.037578;;, + 107;4; -0.018975,-0.000828, 0.999045,-0.035002;;, + 108;4; -0.017947,-0.000784, 0.999126,-0.032056;;, + 109;4; -0.016778,-0.000733, 0.999214,-0.028814;;, + 110;4; -0.015484,-0.000676, 0.999308,-0.025363;;, + 111;4; -0.014088,-0.000615, 0.999405,-0.021804;;, + 112;4; -0.012616,-0.000551, 0.999502,-0.018246;;, + 113;4; -0.011095,-0.000484, 0.999596,-0.014795;;, + 114;4; -0.009555,-0.000417, 0.999685,-0.011553;;, + 115;4; -0.008021,-0.000350, 0.999765,-0.008607;;, + 116;4; -0.006517,-0.000285, 0.999835,-0.006030;;, + 117;4; -0.005062,-0.000221, 0.999894,-0.003876;;, + 118;4; -0.003674,-0.000160, 0.999941,-0.002181;;, + 119;4; -0.002362,-0.000103, 0.999974,-0.000967;;, + 120;4; -0.001136,-0.000050, 0.999993,-0.000240;;, + 121;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 122;4; 0.001136, 0.000050, 0.999993,-0.000240;;, + 123;4; 0.002362, 0.000103, 0.999974,-0.000967;;, + 124;4; 0.003674, 0.000160, 0.999941,-0.002181;;, + 125;4; 0.005062, 0.000221, 0.999894,-0.003876;;, + 126;4; 0.006517, 0.000285, 0.999835,-0.006030;;, + 127;4; 0.008021, 0.000350, 0.999765,-0.008607;;, + 128;4; 0.009555, 0.000417, 0.999685,-0.011553;;, + 129;4; 0.011095, 0.000484, 0.999596,-0.014795;;, + 130;4; 0.012616, 0.000551, 0.999502,-0.018246;;, + 131;4; 0.014088, 0.000615, 0.999405,-0.021804;;, + 132;4; 0.015484, 0.000676, 0.999308,-0.025363;;, + 133;4; 0.016778, 0.000733, 0.999214,-0.028814;;, + 134;4; 0.017947, 0.000784, 0.999126,-0.032056;;, + 135;4; 0.018975, 0.000828, 0.999045,-0.035002;;, + 136;4; 0.019848, 0.000867, 0.998975,-0.037578;;, + 137;4; 0.020560, 0.000898, 0.998916,-0.039733;;, + 138;4; 0.021109, 0.000922, 0.998870,-0.041427;;, + 139;4; 0.021494, 0.000938, 0.998837,-0.042642;;, + 140;4; 0.021720, 0.000948, 0.998817,-0.043369;;, + 141;4; 0.021794, 0.000952, 0.998811,-0.043609;;, + 142;4; 0.021681, 0.000947, 0.998817,-0.043383;;, + 143;4; 0.021364, 0.000933, 0.998834,-0.042748;;, + 144;4; 0.020870, 0.000911, 0.998861,-0.041759;;, + 145;4; 0.020221, 0.000883, 0.998896,-0.040461;;, + 146;4; 0.019436, 0.000849, 0.998939,-0.038890;;, + 147;4; 0.018529, 0.000809, 0.998989,-0.037076;;, + 148;4; 0.017514, 0.000765, 0.999044,-0.035045;;, + 149;4; 0.016402, 0.000716, 0.999105,-0.032820;;, + 150;4; 0.015204, 0.000664, 0.999170,-0.030422;;, + 151;4; 0.013928, 0.000608, 0.999240,-0.027869;;, + 152;4; 0.012583, 0.000549, 0.999313,-0.025178;;, + 153;4; 0.011179, 0.000488, 0.999390,-0.022368;;, + 154;4; 0.009723, 0.000425, 0.999469,-0.019456;;, + 155;4; 0.008227, 0.000359, 0.999551,-0.016461;;, + 156;4; 0.006701, 0.000293, 0.999634,-0.013408;;, + 157;4; 0.005161, 0.000225, 0.999718,-0.010327;;, + 158;4; 0.003631, 0.000159, 0.999802,-0.007266;;, + 159;4; 0.002152, 0.000094, 0.999883,-0.004305;;, + 160;4; 0.000815, 0.000036, 0.999956,-0.001631;;, + 161;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 162;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 163;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 164;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 165;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 166;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 167;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 168;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 169;4; 0.003877,-0.000000, 0.999915, 0.000000;;, + 170;4; 0.014799,-0.000000, 0.999677, 0.000000;;, + 171;4; 0.028821,-0.000000, 0.999371, 0.000000;;, + 172;4; 0.039742,-0.000000, 0.999133, 0.000000;;, + 173;4; 0.043619,-0.000000, 0.999048, 0.000000;;, + 174;4; 0.041150, 0.000000, 0.999133, 0.000000;;, + 175;4; 0.033580,-0.000000, 0.999371, 0.000000;;, + 176;4; 0.022207,-0.000000, 0.999677, 0.000000;;, + 177;4; 0.010132,-0.000000, 0.999915, 0.000000;;, + 178;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 179;4; -0.010132, 0.000000, 0.999915, 0.000000;;, + 180;4; -0.022206, 0.000000, 0.999677, 0.000000;;, + 181;4; -0.033580, 0.000000, 0.999371, 0.000000;;, + 182;4; -0.041150,-0.000000, 0.999133, 0.000000;;, + 183;4; -0.043619, 0.000000, 0.999048, 0.000000;;, + 184;4; -0.039742, 0.000000, 0.999133, 0.000000;;, + 185;4; -0.028821, 0.000000, 0.999371, 0.000000;;, + 186;4; -0.014798, 0.000000, 0.999677, 0.000000;;, + 187;4; -0.003877, 0.000000, 0.999915, 0.000000;;, + 188;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 189;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 190;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 191;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 192;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 193;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 194;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 195;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 196;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 197;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 198;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 199;4; 0.000000, 0.000000, 1.000000, 0.000000;;, + 200;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 201;4; 0.003877,-0.000000, 0.999915, 0.000000;;, + 202;4; 0.014799,-0.000000, 0.999677, 0.000000;;, + 203;4; 0.028821,-0.000000, 0.999371, 0.000000;;, + 204;4; 0.039742,-0.000000, 0.999133, 0.000000;;, + 205;4; 0.043619,-0.000000, 0.999048, 0.000000;;, + 206;4; 0.041150, 0.000000, 0.999133, 0.000000;;, + 207;4; 0.033580,-0.000000, 0.999371, 0.000000;;, + 208;4; 0.022207,-0.000000, 0.999677, 0.000000;;, + 209;4; 0.010132,-0.000000, 0.999915, 0.000000;;, + 210;4; 0.000000,-0.000000, 1.000000, 0.000000;;, + 211;4; -0.010132, 0.000000, 0.999915, 0.000000;;, + 212;4; -0.022206, 0.000000, 0.999677, 0.000000;;, + 213;4; -0.033580, 0.000000, 0.999371, 0.000000;;, + 214;4; -0.041150,-0.000000, 0.999133, 0.000000;;, + 215;4; -0.043619, 0.000000, 0.999048, 0.000000;;, + 216;4; -0.039742, 0.000000, 0.999133, 0.000000;;, + 217;4; -0.028821, 0.000000, 0.999371, 0.000000;;, + 218;4; -0.014799, 0.000000, 0.999677, 0.000000;;, + 219;4; -0.003877, 0.000000, 0.999915, 0.000000;;, + 220;4; 0.000000, 0.000000, 1.000000, 0.000000;;; + } + AnimationKey { //Scale + 1; + 221; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;, + 189;3; 1.000000, 1.000000, 1.000000;;, + 190;3; 1.000000, 1.000000, 1.000000;;, + 191;3; 1.000000, 1.000000, 1.000000;;, + 192;3; 1.000000, 1.000000, 1.000000;;, + 193;3; 1.000000, 1.000000, 1.000000;;, + 194;3; 1.000000, 1.000000, 1.000000;;, + 195;3; 1.000000, 1.000000, 1.000000;;, + 196;3; 1.000000, 1.000000, 1.000000;;, + 197;3; 1.000000, 1.000000, 1.000000;;, + 198;3; 1.000000, 1.000000, 1.000000;;, + 199;3; 1.000000, 1.000000, 1.000000;;, + 200;3; 1.000000, 1.000000, 1.000000;;, + 201;3; 1.000000, 1.000000, 1.000000;;, + 202;3; 1.000000, 1.000000, 1.000000;;, + 203;3; 1.000000, 1.000000, 1.000000;;, + 204;3; 1.000000, 1.000000, 1.000000;;, + 205;3; 1.000000, 1.000000, 1.000000;;, + 206;3; 1.000000, 1.000000, 1.000000;;, + 207;3; 1.000000, 1.000000, 1.000000;;, + 208;3; 1.000000, 1.000000, 1.000000;;, + 209;3; 1.000000, 1.000000, 1.000000;;, + 210;3; 1.000000, 1.000000, 1.000000;;, + 211;3; 1.000000, 1.000000, 1.000000;;, + 212;3; 1.000000, 1.000000, 1.000000;;, + 213;3; 1.000000, 1.000000, 1.000000;;, + 214;3; 1.000000, 1.000000, 1.000000;;, + 215;3; 1.000000, 1.000000, 1.000000;;, + 216;3; 1.000000, 1.000000, 1.000000;;, + 217;3; 1.000000, 1.000000, 1.000000;;, + 218;3; 1.000000, 1.000000, 1.000000;;, + 219;3; 1.000000, 1.000000, 1.000000;;, + 220;3; 1.000000, 1.000000, 1.000000;;; + } + } + Animation { + {Armature_Arm_Right} + AnimationKey { //Position + 2; + 221; + 0;3; -2.000000, 6.750000,-0.000000;;, + 1;3; -2.000000, 6.750000, 0.000000;;, + 2;3; -2.000000, 6.750000,-0.000000;;, + 3;3; -2.000000, 6.750000, 0.000000;;, + 4;3; -2.000000, 6.750000,-0.000000;;, + 5;3; -2.000000, 6.750000,-0.000000;;, + 6;3; -2.000000, 6.750000, 0.000000;;, + 7;3; -2.000000, 6.750000, 0.000000;;, + 8;3; -2.000000, 6.750000,-0.000000;;, + 9;3; -2.000000, 6.750000, 0.000000;;, + 10;3; -2.000000, 6.750000,-0.000000;;, + 11;3; -2.000000, 6.750000,-0.000000;;, + 12;3; -2.000000, 6.750000, 0.000000;;, + 13;3; -2.000000, 6.750000, 0.000000;;, + 14;3; -2.000000, 6.750000, 0.000000;;, + 15;3; -2.000000, 6.750000, 0.000000;;, + 16;3; -2.000000, 6.750000,-0.000000;;, + 17;3; -2.000000, 6.750000,-0.000000;;, + 18;3; -2.000000, 6.750000, 0.000000;;, + 19;3; -2.000000, 6.750000, 0.000000;;, + 20;3; -2.000000, 6.750000,-0.000000;;, + 21;3; -2.000000, 6.750000, 0.000000;;, + 22;3; -2.000000, 6.750000,-0.000000;;, + 23;3; -2.000000, 6.750000,-0.000000;;, + 24;3; -2.000000, 6.750000,-0.000000;;, + 25;3; -2.000000, 6.750000, 0.000000;;, + 26;3; -2.000000, 6.750000, 0.000000;;, + 27;3; -2.000000, 6.750000, 0.000000;;, + 28;3; -2.000000, 6.750000, 0.000000;;, + 29;3; -2.000000, 6.750000,-0.000000;;, + 30;3; -2.000000, 6.750000,-0.000000;;, + 31;3; -2.000000, 6.750000,-0.000000;;, + 32;3; -2.000000, 6.750000,-0.000000;;, + 33;3; -2.000000, 6.750000, 0.000000;;, + 34;3; -2.000000, 6.750000,-0.000000;;, + 35;3; -2.000000, 6.750000,-0.000000;;, + 36;3; -2.000000, 6.750000, 0.000000;;, + 37;3; -2.000000, 6.750000, 0.000000;;, + 38;3; -2.000000, 6.750000,-0.000000;;, + 39;3; -2.000000, 6.750000, 0.000000;;, + 40;3; -2.000000, 6.750000,-0.000000;;, + 41;3; -2.000000, 6.750000,-0.000000;;, + 42;3; -2.000000, 6.750000,-0.000000;;, + 43;3; -2.000000, 6.750000, 0.000000;;, + 44;3; -2.000000, 6.750000,-0.000000;;, + 45;3; -2.000000, 6.750000,-0.000000;;, + 46;3; -2.000000, 6.750000,-0.000000;;, + 47;3; -2.000000, 6.750000, 0.000000;;, + 48;3; -2.000000, 6.750000,-0.000000;;, + 49;3; -2.000000, 6.750000,-0.000000;;, + 50;3; -2.000000, 6.750000,-0.000000;;, + 51;3; -2.000000, 6.750000,-0.000000;;, + 52;3; -2.000000, 6.750000, 0.000000;;, + 53;3; -2.000000, 6.750000, 0.000000;;, + 54;3; -2.000000, 6.750000,-0.000000;;, + 55;3; -2.000000, 6.750000,-0.000000;;, + 56;3; -2.000000, 6.750000,-0.000000;;, + 57;3; -2.000000, 6.750000,-0.000000;;, + 58;3; -2.000000, 6.750000, 0.000000;;, + 59;3; -2.000000, 6.750000, 0.000000;;, + 60;3; -2.000000, 6.750000,-0.000000;;, + 61;3; -2.000000, 6.750000,-0.000000;;, + 62;3; -2.000000, 6.750000, 0.000000;;, + 63;3; -2.000000, 6.750000, 0.000000;;, + 64;3; -2.000000, 6.750000, 0.000000;;, + 65;3; -2.000000, 6.750000, 0.000000;;, + 66;3; -2.000000, 6.750000, 0.000000;;, + 67;3; -2.000000, 6.750000,-0.000000;;, + 68;3; -2.000000, 6.750000, 0.000000;;, + 69;3; -2.000000, 6.750000, 0.000000;;, + 70;3; -2.000000, 6.750000, 0.000000;;, + 71;3; -2.000000, 6.750000, 0.000000;;, + 72;3; -2.000000, 6.750000, 0.000000;;, + 73;3; -2.000000, 6.750000,-0.000000;;, + 74;3; -2.000000, 6.750000, 0.000000;;, + 75;3; -2.000000, 6.750000, 0.000000;;, + 76;3; -2.000000, 6.750000, 0.000000;;, + 77;3; -2.000000, 6.750000,-0.000000;;, + 78;3; -2.000000, 6.750001,-0.000000;;, + 79;3; -2.000000, 6.750000,-0.000000;;, + 80;3; -2.000000, 6.750000,-0.000000;;, + 81;3; -2.000000, 6.750000, 0.000000;;, + 82;3; -2.000000, 6.750000,-0.000000;;, + 83;3; -2.000000, 6.750000,-0.000000;;, + 84;3; -2.000000, 6.750000,-0.000000;;, + 85;3; -2.000000, 6.750000,-0.000000;;, + 86;3; -2.000000, 6.750000, 0.000000;;, + 87;3; -2.000000, 6.750000,-0.000000;;, + 88;3; -2.000000, 6.750000,-0.000000;;, + 89;3; -2.000000, 6.750000, 0.000000;;, + 90;3; -2.000000, 6.750000,-0.000000;;, + 91;3; -2.000000, 6.750000, 0.000000;;, + 92;3; -2.000000, 6.750000, 0.000000;;, + 93;3; -2.000000, 6.750000, 0.000000;;, + 94;3; -2.000000, 6.750000,-0.000000;;, + 95;3; -2.000000, 6.750000, 0.000000;;, + 96;3; -2.000000, 6.750000,-0.000000;;, + 97;3; -2.000000, 6.750000,-0.000000;;, + 98;3; -2.000000, 6.750000,-0.000000;;, + 99;3; -2.000000, 6.750000,-0.000000;;, + 100;3; -2.000000, 6.750000, 0.000000;;, + 101;3; -2.000000, 6.750000,-0.000000;;, + 102;3; -2.000000, 6.750000, 0.000000;;, + 103;3; -2.000000, 6.750000,-0.000000;;, + 104;3; -2.000000, 6.750000,-0.000000;;, + 105;3; -2.000000, 6.750000,-0.000000;;, + 106;3; -2.000000, 6.750000,-0.000000;;, + 107;3; -2.000000, 6.750000, 0.000000;;, + 108;3; -2.000000, 6.750000, 0.000000;;, + 109;3; -2.000000, 6.750000,-0.000000;;, + 110;3; -2.000000, 6.750000,-0.000000;;, + 111;3; -2.000000, 6.750000,-0.000000;;, + 112;3; -2.000000, 6.750000,-0.000000;;, + 113;3; -2.000000, 6.750000,-0.000000;;, + 114;3; -2.000000, 6.750000, 0.000000;;, + 115;3; -2.000000, 6.750000,-0.000000;;, + 116;3; -2.000000, 6.750000,-0.000000;;, + 117;3; -2.000000, 6.750000,-0.000000;;, + 118;3; -2.000000, 6.750000,-0.000000;;, + 119;3; -2.000000, 6.750000, 0.000000;;, + 120;3; -2.000000, 6.750000, 0.000000;;, + 121;3; -2.000000, 6.750000, 0.000000;;, + 122;3; -2.000000, 6.750000, 0.000000;;, + 123;3; -2.000000, 6.750000,-0.000000;;, + 124;3; -2.000000, 6.750000,-0.000000;;, + 125;3; -2.000000, 6.750000,-0.000000;;, + 126;3; -2.000000, 6.750000,-0.000000;;, + 127;3; -2.000000, 6.750000,-0.000000;;, + 128;3; -2.000000, 6.750000, 0.000000;;, + 129;3; -2.000000, 6.750000,-0.000000;;, + 130;3; -2.000000, 6.750000, 0.000000;;, + 131;3; -2.000000, 6.750000,-0.000000;;, + 132;3; -2.000000, 6.750000,-0.000000;;, + 133;3; -2.000000, 6.750000,-0.000000;;, + 134;3; -2.000000, 6.750000, 0.000000;;, + 135;3; -2.000000, 6.750000, 0.000000;;, + 136;3; -2.000000, 6.750000,-0.000000;;, + 137;3; -2.000000, 6.750000,-0.000000;;, + 138;3; -2.000000, 6.750000,-0.000000;;, + 139;3; -2.000000, 6.750000,-0.000000;;, + 140;3; -2.000000, 6.750000, 0.000000;;, + 141;3; -2.000000, 6.750000,-0.000000;;, + 142;3; -2.000000, 6.750000,-0.000000;;, + 143;3; -2.000000, 6.750000,-0.000000;;, + 144;3; -2.000000, 6.750000, 0.000000;;, + 145;3; -2.000000, 6.750000,-0.000000;;, + 146;3; -2.000000, 6.750000, 0.000000;;, + 147;3; -2.000000, 6.750000, 0.000000;;, + 148;3; -2.000000, 6.750000,-0.000000;;, + 149;3; -2.000000, 6.750000,-0.000000;;, + 150;3; -2.000000, 6.750000,-0.000000;;, + 151;3; -2.000000, 6.750000,-0.000000;;, + 152;3; -2.000000, 6.750000,-0.000000;;, + 153;3; -2.000000, 6.750000, 0.000000;;, + 154;3; -2.000000, 6.750000,-0.000000;;, + 155;3; -2.000000, 6.750000,-0.000000;;, + 156;3; -2.000000, 6.750000,-0.000000;;, + 157;3; -2.000000, 6.750000,-0.000000;;, + 158;3; -2.000000, 6.750000, 0.000000;;, + 159;3; -2.000000, 6.750000,-0.000000;;, + 160;3; -2.000000, 6.750000, 0.000000;;, + 161;3; -2.000000, 6.750000, 0.000000;;, + 162;3; -2.000000, 6.750000,-0.000000;;, + 163;3; -2.000000, 6.750000,-0.000000;;, + 164;3; -2.000000, 6.750000,-0.000000;;, + 165;3; -2.000000, 6.750000,-0.000000;;, + 166;3; -2.000000, 6.750000,-0.000000;;, + 167;3; -2.000000, 6.750000,-0.000000;;, + 168;3; -2.000000, 6.750000,-0.000000;;, + 169;3; -2.000000, 6.750000,-0.000000;;, + 170;3; -2.000000, 6.750000,-0.000000;;, + 171;3; -2.000000, 6.750000,-0.000000;;, + 172;3; -2.000000, 6.750000,-0.000000;;, + 173;3; -2.000000, 6.750000,-0.000000;;, + 174;3; -2.000000, 6.750000,-0.000000;;, + 175;3; -2.000000, 6.750000,-0.000000;;, + 176;3; -2.000000, 6.750000,-0.000000;;, + 177;3; -2.000000, 6.750000,-0.000000;;, + 178;3; -2.000000, 6.750000,-0.000000;;, + 179;3; -2.000000, 6.750000,-0.000000;;, + 180;3; -2.000000, 6.750000,-0.000000;;, + 181;3; -2.000000, 6.750000,-0.000000;;, + 182;3; -2.000000, 6.750000,-0.000000;;, + 183;3; -2.000000, 6.750000,-0.000000;;, + 184;3; -2.000000, 6.750000,-0.000000;;, + 185;3; -2.000000, 6.750000,-0.000000;;, + 186;3; -2.000000, 6.750000,-0.000000;;, + 187;3; -2.000000, 6.750000,-0.000000;;, + 188;3; -2.000000, 6.750000,-0.000000;;, + 189;3; -2.000000, 6.750000,-0.000000;;, + 190;3; -2.000000, 6.750000, 0.000000;;, + 191;3; -2.000000, 6.750000, 0.000000;;, + 192;3; -2.000000, 6.750000,-0.000000;;, + 193;3; -2.000000, 6.750001, 0.000000;;, + 194;3; -2.000000, 6.750001, 0.000000;;, + 195;3; -2.000000, 6.750001, 0.000000;;, + 196;3; -2.000000, 6.750000,-0.000000;;, + 197;3; -2.000000, 6.750000, 0.000000;;, + 198;3; -2.000000, 6.750000,-0.000000;;, + 199;3; -2.000000, 6.750000,-0.000000;;, + 200;3; -2.000000, 6.750000,-0.000000;;, + 201;3; -2.000000, 6.750000, 0.000000;;, + 202;3; -2.000000, 6.750000,-0.000000;;, + 203;3; -2.000000, 6.750000, 0.000000;;, + 204;3; -2.000000, 6.750000,-0.000000;;, + 205;3; -2.000000, 6.750000,-0.000000;;, + 206;3; -2.000000, 6.750000, 0.000000;;, + 207;3; -2.000000, 6.750000,-0.000000;;, + 208;3; -2.000000, 6.750000, 0.000000;;, + 209;3; -2.000000, 6.750000,-0.000000;;, + 210;3; -2.000000, 6.750001, 0.000000;;, + 211;3; -2.000000, 6.750000,-0.000000;;, + 212;3; -2.000000, 6.750000, 0.000000;;, + 213;3; -2.000000, 6.750000,-0.000000;;, + 214;3; -2.000000, 6.750000, 0.000000;;, + 215;3; -2.000000, 6.750000,-0.000000;;, + 216;3; -2.000000, 6.750000,-0.000000;;, + 217;3; -2.000000, 6.750000, 0.000000;;, + 218;3; -2.000000, 6.750000, 0.000000;;, + 219;3; -2.000000, 6.750000,-0.000000;;, + 220;3; -2.000000, 6.750000,-0.000000;;; + } + AnimationKey { //Rotation + 0; + 221; + 0;4; -0.000993,-0.997299, 0.072152, 0.013694;;, + 1;4; -0.000771,-0.997293, 0.072148, 0.013786;;, + 2;4; -0.000100,-0.997275, 0.072137, 0.014065;;, + 3;4; 0.001022,-0.997244, 0.072119, 0.014531;;, + 4;4; 0.002587,-0.997202, 0.072094, 0.015181;;, + 5;4; 0.004576,-0.997148, 0.072062, 0.016007;;, + 6;4; 0.006956,-0.997083, 0.072024, 0.016996;;, + 7;4; 0.009676,-0.997009, 0.071980, 0.018126;;, + 8;4; 0.012671,-0.996927, 0.071931, 0.019370;;, + 9;4; 0.015858,-0.996840, 0.071880, 0.020693;;, + 10;4; 0.019145,-0.996751, 0.071827, 0.022059;;, + 11;4; 0.022431,-0.996661, 0.071774, 0.023424;;, + 12;4; 0.025618,-0.996574, 0.071723, 0.024748;;, + 13;4; 0.028613,-0.996493, 0.071675, 0.025991;;, + 14;4; 0.031333,-0.996419, 0.071631, 0.027121;;, + 15;4; 0.033713,-0.996354, 0.071592, 0.028110;;, + 16;4; 0.035702,-0.996300, 0.071560, 0.028936;;, + 17;4; 0.037267,-0.996257, 0.071535, 0.029586;;, + 18;4; 0.038389,-0.996226, 0.071517, 0.030052;;, + 19;4; 0.039060,-0.996208, 0.071506, 0.030331;;, + 20;4; 0.039282,-0.996202, 0.071503, 0.030423;;, + 21;4; 0.039060,-0.996208, 0.071506, 0.030331;;, + 22;4; 0.038389,-0.996226, 0.071517, 0.030052;;, + 23;4; 0.037267,-0.996257, 0.071535, 0.029586;;, + 24;4; 0.035702,-0.996300, 0.071560, 0.028936;;, + 25;4; 0.033713,-0.996354, 0.071592, 0.028110;;, + 26;4; 0.031333,-0.996419, 0.071631, 0.027121;;, + 27;4; 0.028613,-0.996493, 0.071675, 0.025991;;, + 28;4; 0.025618,-0.996574, 0.071723, 0.024748;;, + 29;4; 0.022431,-0.996661, 0.071774, 0.023424;;, + 30;4; 0.019145,-0.996751, 0.071827, 0.022059;;, + 31;4; 0.015858,-0.996840, 0.071880, 0.020693;;, + 32;4; 0.012671,-0.996927, 0.071931, 0.019370;;, + 33;4; 0.009676,-0.997009, 0.071980, 0.018126;;, + 34;4; 0.006956,-0.997083, 0.072024, 0.016996;;, + 35;4; 0.004576,-0.997148, 0.072062, 0.016007;;, + 36;4; 0.002587,-0.997202, 0.072094, 0.015181;;, + 37;4; 0.001022,-0.997244, 0.072119, 0.014531;;, + 38;4; -0.000100,-0.997275, 0.072137, 0.014065;;, + 39;4; -0.000771,-0.997293, 0.072148, 0.013786;;, + 40;4; -0.000993,-0.997299, 0.072152, 0.013694;;, + 41;4; -0.000771,-0.997293, 0.072148, 0.013786;;, + 42;4; -0.000100,-0.997275, 0.072137, 0.014065;;, + 43;4; 0.001022,-0.997244, 0.072119, 0.014531;;, + 44;4; 0.002587,-0.997202, 0.072094, 0.015181;;, + 45;4; 0.004576,-0.997148, 0.072062, 0.016007;;, + 46;4; 0.006956,-0.997083, 0.072024, 0.016996;;, + 47;4; 0.009676,-0.997009, 0.071980, 0.018126;;, + 48;4; 0.012671,-0.996927, 0.071931, 0.019370;;, + 49;4; 0.015858,-0.996840, 0.071880, 0.020693;;, + 50;4; 0.019145,-0.996751, 0.071827, 0.022059;;, + 51;4; 0.022431,-0.996661, 0.071774, 0.023424;;, + 52;4; 0.025618,-0.996574, 0.071723, 0.024748;;, + 53;4; 0.028613,-0.996493, 0.071675, 0.025991;;, + 54;4; 0.031333,-0.996419, 0.071631, 0.027121;;, + 55;4; 0.033713,-0.996354, 0.071592, 0.028110;;, + 56;4; 0.035702,-0.996300, 0.071560, 0.028936;;, + 57;4; 0.037267,-0.996257, 0.071535, 0.029586;;, + 58;4; 0.038389,-0.996226, 0.071517, 0.030052;;, + 59;4; 0.039060,-0.996208, 0.071506, 0.030331;;, + 60;4; 0.039282,-0.996202, 0.071503, 0.030423;;, + 61;4; 0.039073,-0.996208, 0.071506, 0.030336;;, + 62;4; 0.038487,-0.996224, 0.071515, 0.030093;;, + 63;4; 0.037574,-0.996249, 0.071530, 0.029714;;, + 64;4; 0.036375,-0.996281, 0.071549, 0.029216;;, + 65;4; 0.034924,-0.996321, 0.071573, 0.028613;;, + 66;4; 0.033248,-0.996367, 0.071600, 0.027917;;, + 67;4; 0.031373,-0.996418, 0.071630, 0.027138;;, + 68;4; 0.029318,-0.996474, 0.071663, 0.026285;;, + 69;4; 0.027103,-0.996534, 0.071699, 0.025365;;, + 70;4; 0.024745,-0.996598, 0.071737, 0.024385;;, + 71;4; 0.022261,-0.996666, 0.071777, 0.023353;;, + 72;4; 0.019665,-0.996737, 0.071819, 0.022275;;, + 73;4; 0.016975,-0.996810, 0.071862, 0.021158;;, + 74;4; 0.014209,-0.996885, 0.071907, 0.020009;;, + 75;4; 0.011390,-0.996962, 0.071952, 0.018837;;, + 76;4; 0.008545,-0.997039, 0.071998, 0.017656;;, + 77;4; 0.005717,-0.997116, 0.072044, 0.016481;;, + 78;4; 0.002983,-0.997191, 0.072088, 0.015346;;, + 79;4; 0.000513,-0.997258, 0.072127, 0.014320;;, + 80;4; -0.000993,-0.997299, 0.072152, 0.013694;;, + 81;4; -0.000993,-0.997299, 0.072152, 0.013694;;, + 82;4; 0.000513,-0.997258, 0.072127, 0.014320;;, + 83;4; 0.002983,-0.997191, 0.072088, 0.015346;;, + 84;4; 0.005717,-0.997116, 0.072044, 0.016481;;, + 85;4; 0.008545,-0.997039, 0.071998, 0.017656;;, + 86;4; 0.011390,-0.996962, 0.071952, 0.018837;;, + 87;4; 0.014209,-0.996885, 0.071907, 0.020009;;, + 88;4; 0.016975,-0.996810, 0.071862, 0.021158;;, + 89;4; 0.019665,-0.996737, 0.071819, 0.022275;;, + 90;4; 0.022261,-0.996666, 0.071777, 0.023353;;, + 91;4; 0.024745,-0.996598, 0.071737, 0.024385;;, + 92;4; 0.027103,-0.996534, 0.071699, 0.025365;;, + 93;4; 0.029318,-0.996474, 0.071663, 0.026285;;, + 94;4; 0.031373,-0.996418, 0.071630, 0.027138;;, + 95;4; 0.033248,-0.996367, 0.071600, 0.027917;;, + 96;4; 0.034924,-0.996321, 0.071573, 0.028613;;, + 97;4; 0.036375,-0.996281, 0.071549, 0.029216;;, + 98;4; 0.037574,-0.996249, 0.071530, 0.029714;;, + 99;4; 0.038487,-0.996224, 0.071515, 0.030093;;, + 100;4; 0.039073,-0.996208, 0.071506, 0.030336;;, + 101;4; 0.039282,-0.996202, 0.071503, 0.030423;;, + 102;4; 0.039060,-0.996208, 0.071506, 0.030331;;, + 103;4; 0.038389,-0.996226, 0.071517, 0.030052;;, + 104;4; 0.037267,-0.996257, 0.071535, 0.029586;;, + 105;4; 0.035702,-0.996300, 0.071560, 0.028936;;, + 106;4; 0.033713,-0.996354, 0.071592, 0.028110;;, + 107;4; 0.031333,-0.996419, 0.071631, 0.027121;;, + 108;4; 0.028613,-0.996493, 0.071675, 0.025991;;, + 109;4; 0.025618,-0.996574, 0.071723, 0.024748;;, + 110;4; 0.022431,-0.996661, 0.071774, 0.023424;;, + 111;4; 0.019145,-0.996751, 0.071827, 0.022059;;, + 112;4; 0.015858,-0.996840, 0.071880, 0.020693;;, + 113;4; 0.012671,-0.996927, 0.071931, 0.019370;;, + 114;4; 0.009676,-0.997009, 0.071980, 0.018126;;, + 115;4; 0.006956,-0.997083, 0.072024, 0.016996;;, + 116;4; 0.004576,-0.997148, 0.072062, 0.016007;;, + 117;4; 0.002587,-0.997202, 0.072094, 0.015181;;, + 118;4; 0.001022,-0.997244, 0.072119, 0.014531;;, + 119;4; -0.000100,-0.997275, 0.072137, 0.014065;;, + 120;4; -0.000771,-0.997293, 0.072148, 0.013786;;, + 121;4; -0.000993,-0.997299, 0.072152, 0.013694;;, + 122;4; -0.000771,-0.997293, 0.072148, 0.013786;;, + 123;4; -0.000100,-0.997275, 0.072137, 0.014065;;, + 124;4; 0.001022,-0.997244, 0.072119, 0.014531;;, + 125;4; 0.002587,-0.997202, 0.072094, 0.015181;;, + 126;4; 0.004576,-0.997148, 0.072062, 0.016007;;, + 127;4; 0.006956,-0.997083, 0.072024, 0.016996;;, + 128;4; 0.009676,-0.997009, 0.071980, 0.018126;;, + 129;4; 0.012671,-0.996927, 0.071931, 0.019370;;, + 130;4; 0.015858,-0.996840, 0.071880, 0.020693;;, + 131;4; 0.019145,-0.996751, 0.071827, 0.022059;;, + 132;4; 0.022431,-0.996661, 0.071774, 0.023424;;, + 133;4; 0.025618,-0.996574, 0.071723, 0.024748;;, + 134;4; 0.028613,-0.996493, 0.071675, 0.025991;;, + 135;4; 0.031333,-0.996419, 0.071631, 0.027121;;, + 136;4; 0.033713,-0.996354, 0.071592, 0.028110;;, + 137;4; 0.035702,-0.996300, 0.071560, 0.028936;;, + 138;4; 0.037267,-0.996257, 0.071535, 0.029586;;, + 139;4; 0.038389,-0.996226, 0.071517, 0.030052;;, + 140;4; 0.039060,-0.996208, 0.071506, 0.030331;;, + 141;4; 0.039282,-0.996202, 0.071503, 0.030423;;, + 142;4; 0.039113,-0.996208, 0.071505, 0.030339;;, + 143;4; 0.038636,-0.996224, 0.071513, 0.030104;;, + 144;4; 0.037890,-0.996249, 0.071526, 0.029737;;, + 145;4; 0.036903,-0.996282, 0.071542, 0.029254;;, + 146;4; 0.035701,-0.996322, 0.071562, 0.028669;;, + 147;4; 0.034303,-0.996368, 0.071585, 0.027993;;, + 148;4; 0.032725,-0.996419, 0.071612, 0.027236;;, + 149;4; 0.030981,-0.996475, 0.071640, 0.026405;;, + 150;4; 0.029082,-0.996536, 0.071672, 0.025508;;, + 151;4; 0.027037,-0.996600, 0.071705, 0.024551;;, + 152;4; 0.024854,-0.996668, 0.071741, 0.023541;;, + 153;4; 0.022538,-0.996739, 0.071779, 0.022483;;, + 154;4; 0.020093,-0.996813, 0.071819, 0.021383;;, + 155;4; 0.017523,-0.996888, 0.071861, 0.020249;;, + 156;4; 0.014827,-0.996965, 0.071905, 0.019086;;, + 157;4; 0.012003,-0.997043, 0.071950, 0.017906;;, + 158;4; 0.009044,-0.997120, 0.071998, 0.016722;;, + 159;4; 0.005935,-0.997194, 0.072047, 0.015559;;, + 160;4; 0.002637,-0.997260, 0.072098, 0.014474;;, + 161;4; -0.000993,-0.997299, 0.072152, 0.013694;;, + 162;4; -0.003932,-0.958043, 0.286296, 0.013156;;, + 163;4; -0.003932,-0.958043, 0.286296, 0.013156;;, + 164;4; -0.003932,-0.958043, 0.286296, 0.013156;;, + 165;4; -0.003932,-0.958043, 0.286296, 0.013156;;, + 166;4; -0.003932,-0.958043, 0.286296, 0.013156;;, + 167;4; -0.003932,-0.958043, 0.286296, 0.013156;;, + 168;4; -0.000993,-0.997299, 0.072152, 0.013694;;, + 169;4; -0.027477,-0.993490, 0.067048, 0.017184;;, + 170;4; -0.101901,-0.981967, 0.063626, 0.027028;;, + 171;4; -0.197396,-0.966974, 0.061970, 0.039671;;, + 172;4; -0.271751,-0.955236, 0.061528, 0.049519;;, + 173;4; -0.298149,-0.951059, 0.061515, 0.053015;;, + 174;4; -0.281324,-0.955151, 0.062328, 0.050810;;, + 175;4; -0.229770,-0.966686, 0.064678, 0.044032;;, + 176;4; -0.152323,-0.981518, 0.067851, 0.033816;;, + 177;4; -0.070052,-0.993110, 0.070622, 0.022916;;, + 178;4; -0.000993,-0.997299, 0.072152, 0.013694;;, + 179;4; 0.068082,-0.993365, 0.072516, 0.004361;;, + 180;4; 0.150399,-0.982078, 0.072003,-0.006854;;, + 181;4; 0.227904,-0.967532, 0.070959,-0.017473;;, + 182;4; 0.279502,-0.956187, 0.070025,-0.024565;;, + 183;4; 0.296344,-0.952157, 0.069673,-0.026881;;, + 184;4; 0.270452,-0.955921, 0.069868,-0.023245;;, + 185;4; 0.198618,-0.966035, 0.070367,-0.012941;;, + 186;4; 0.104925,-0.979563, 0.071067, 0.000209;;, + 187;4; 0.028013,-0.991899, 0.071796, 0.010230;;, + 188;4; -0.000993,-0.997299, 0.072152, 0.013694;;, + 189;4; 0.834755, 0.535844, 0.025785,-0.119406;;, + 190;4; 0.802948, 0.705880, 0.011698,-0.112781;;, + 191;4; 0.718120, 0.801655,-0.000329,-0.088562;;, + 192;4; 0.614574, 0.845942,-0.010149,-0.056080;;, + 193;4; 0.535136, 0.860374,-0.016362,-0.030442;;, + 194;4; 0.506511, 0.862212,-0.018325,-0.021317;;, + 195;4; 0.535631, 0.833267,-0.014408,-0.030039;;, + 196;4; 0.617533, 0.751876,-0.003383,-0.054614;;, + 197;4; 0.722865, 0.647175, 0.010784,-0.086157;;, + 198;4; 0.805320, 0.565150, 0.021846,-0.110701;;, + 199;4; 0.834755, 0.535844, 0.025785,-0.119406;;, + 200;4; 0.539122, 0.840520,-0.006521,-0.054345;;, + 201;4; 0.565647, 0.813152,-0.003632,-0.060114;;, + 202;4; 0.639924, 0.736568, 0.004475,-0.076388;;, + 203;4; 0.734781, 0.638833, 0.014847,-0.097314;;, + 204;4; 0.808531, 0.562862, 0.022917,-0.113619;;, + 205;4; 0.834755, 0.535844, 0.025785,-0.119406;;, + 206;4; 0.805578, 0.564854, 0.021864,-0.110687;;, + 207;4; 0.723394, 0.646568, 0.010820,-0.086128;;, + 208;4; 0.617871, 0.751488,-0.003360,-0.054595;;, + 209;4; 0.535688, 0.833201,-0.014404,-0.030036;;, + 210;4; 0.506511, 0.862212,-0.018325,-0.021317;;, + 211;4; 0.535688, 0.833201,-0.014404,-0.030036;;, + 212;4; 0.617871, 0.751488,-0.003360,-0.054595;;, + 213;4; 0.723394, 0.646568, 0.010820,-0.086128;;, + 214;4; 0.805578, 0.564854, 0.021864,-0.110687;;, + 215;4; 0.834755, 0.535844, 0.025785,-0.119406;;, + 216;4; 0.808490, 0.562910, 0.022914,-0.113622;;, + 217;4; 0.734539, 0.639114, 0.014830,-0.097328;;, + 218;4; 0.639546, 0.737007, 0.004448,-0.076410;;, + 219;4; 0.565463, 0.813366,-0.003645,-0.060124;;, + 220;4; 0.539122, 0.840520,-0.006521,-0.054345;;; + } + AnimationKey { //Scale + 1; + 221; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;, + 189;3; 1.000000, 1.000000, 1.000000;;, + 190;3; 1.000000, 1.000000, 1.000000;;, + 191;3; 1.000000, 1.000000, 1.000000;;, + 192;3; 1.000000, 1.000000, 1.000000;;, + 193;3; 1.000000, 1.000000, 1.000000;;, + 194;3; 1.000000, 1.000000, 1.000000;;, + 195;3; 1.000000, 1.000000, 1.000000;;, + 196;3; 1.000000, 1.000000, 1.000000;;, + 197;3; 1.000000, 1.000000, 1.000000;;, + 198;3; 1.000000, 1.000000, 1.000000;;, + 199;3; 1.000000, 1.000000, 1.000000;;, + 200;3; 1.000000, 1.000000, 1.000000;;, + 201;3; 1.000000, 1.000000, 1.000000;;, + 202;3; 1.000000, 1.000000, 1.000000;;, + 203;3; 1.000000, 1.000000, 1.000000;;, + 204;3; 1.000000, 1.000000, 1.000000;;, + 205;3; 1.000000, 1.000000, 1.000000;;, + 206;3; 1.000000, 1.000000, 1.000000;;, + 207;3; 1.000000, 1.000000, 1.000000;;, + 208;3; 1.000000, 1.000000, 1.000000;;, + 209;3; 1.000000, 1.000000, 1.000000;;, + 210;3; 1.000000, 1.000000, 1.000000;;, + 211;3; 1.000000, 1.000000, 1.000000;;, + 212;3; 1.000000, 1.000000, 1.000000;;, + 213;3; 1.000000, 1.000000, 1.000000;;, + 214;3; 1.000000, 1.000000, 1.000000;;, + 215;3; 1.000000, 1.000000, 1.000000;;, + 216;3; 1.000000, 1.000000, 1.000000;;, + 217;3; 1.000000, 1.000000, 1.000000;;, + 218;3; 1.000000, 1.000000, 1.000000;;, + 219;3; 1.000000, 1.000000, 1.000000;;, + 220;3; 1.000000, 1.000000, 1.000000;;; + } + } + Animation { + {Armature_Wield_Item} + AnimationKey { //Position + 2; + 221; + 0;3; 0.001191, 6.349710, 2.794358;;, + 1;3; 0.001191, 6.349710, 2.794357;;, + 2;3; 0.001191, 6.349710, 2.794357;;, + 3;3; 0.001191, 6.349711, 2.794357;;, + 4;3; 0.001191, 6.349709, 2.794357;;, + 5;3; 0.001191, 6.349709, 2.794357;;, + 6;3; 0.001191, 6.349709, 2.794357;;, + 7;3; 0.001191, 6.349710, 2.794357;;, + 8;3; 0.001191, 6.349709, 2.794357;;, + 9;3; 0.001191, 6.349710, 2.794357;;, + 10;3; 0.001191, 6.349710, 2.794357;;, + 11;3; 0.001191, 6.349710, 2.794358;;, + 12;3; 0.001191, 6.349710, 2.794357;;, + 13;3; 0.001191, 6.349710, 2.794357;;, + 14;3; 0.001191, 6.349710, 2.794357;;, + 15;3; 0.001191, 6.349709, 2.794357;;, + 16;3; 0.001191, 6.349710, 2.794358;;, + 17;3; 0.001191, 6.349710, 2.794357;;, + 18;3; 0.001191, 6.349710, 2.794357;;, + 19;3; 0.001191, 6.349710, 2.794357;;, + 20;3; 0.001191, 6.349710, 2.794357;;, + 21;3; 0.001191, 6.349710, 2.794357;;, + 22;3; 0.001191, 6.349710, 2.794357;;, + 23;3; 0.001191, 6.349710, 2.794357;;, + 24;3; 0.001191, 6.349710, 2.794358;;, + 25;3; 0.001191, 6.349709, 2.794357;;, + 26;3; 0.001191, 6.349710, 2.794358;;, + 27;3; 0.001191, 6.349710, 2.794357;;, + 28;3; 0.001191, 6.349710, 2.794357;;, + 29;3; 0.001191, 6.349709, 2.794358;;, + 30;3; 0.001191, 6.349710, 2.794357;;, + 31;3; 0.001191, 6.349710, 2.794357;;, + 32;3; 0.001191, 6.349709, 2.794357;;, + 33;3; 0.001191, 6.349710, 2.794357;;, + 34;3; 0.001191, 6.349708, 2.794358;;, + 35;3; 0.001191, 6.349709, 2.794357;;, + 36;3; 0.001191, 6.349709, 2.794357;;, + 37;3; 0.001191, 6.349711, 2.794357;;, + 38;3; 0.001191, 6.349710, 2.794357;;, + 39;3; 0.001191, 6.349710, 2.794357;;, + 40;3; 0.001191, 6.349710, 2.794358;;, + 41;3; 0.001191, 6.349710, 2.794357;;, + 42;3; 0.001191, 6.349710, 2.794357;;, + 43;3; 0.001191, 6.349711, 2.794357;;, + 44;3; 0.001191, 6.349709, 2.794357;;, + 45;3; 0.001191, 6.349709, 2.794357;;, + 46;3; 0.001191, 6.349708, 2.794357;;, + 47;3; 0.001191, 6.349710, 2.794357;;, + 48;3; 0.001191, 6.349709, 2.794357;;, + 49;3; 0.001191, 6.349710, 2.794357;;, + 50;3; 0.001191, 6.349710, 2.794357;;, + 51;3; 0.001191, 6.349709, 2.794357;;, + 52;3; 0.001191, 6.349710, 2.794358;;, + 53;3; 0.001191, 6.349710, 2.794357;;, + 54;3; 0.001191, 6.349710, 2.794357;;, + 55;3; 0.001191, 6.349709, 2.794357;;, + 56;3; 0.001191, 6.349710, 2.794358;;, + 57;3; 0.001191, 6.349710, 2.794357;;, + 58;3; 0.001191, 6.349710, 2.794357;;, + 59;3; 0.001191, 6.349710, 2.794357;;, + 60;3; 0.001191, 6.349710, 2.794357;;, + 61;3; 0.001191, 6.349710, 2.794357;;, + 62;3; 0.001191, 6.349710, 2.794357;;, + 63;3; 0.001191, 6.349709, 2.794358;;, + 64;3; 0.001191, 6.349709, 2.794357;;, + 65;3; 0.001191, 6.349710, 2.794357;;, + 66;3; 0.001191, 6.349710, 2.794357;;, + 67;3; 0.001191, 6.349710, 2.794357;;, + 68;3; 0.001191, 6.349709, 2.794357;;, + 69;3; 0.001191, 6.349710, 2.794357;;, + 70;3; 0.001191, 6.349709, 2.794357;;, + 71;3; 0.001191, 6.349710, 2.794357;;, + 72;3; 0.001191, 6.349710, 2.794357;;, + 73;3; 0.001191, 6.349709, 2.794357;;, + 74;3; 0.001191, 6.349710, 2.794357;;, + 75;3; 0.001191, 6.349710, 2.794357;;, + 76;3; 0.001191, 6.349709, 2.794357;;, + 77;3; 0.001191, 6.349710, 2.794357;;, + 78;3; 0.001191, 6.349710, 2.794357;;, + 79;3; 0.001191, 6.349710, 2.794357;;, + 80;3; 0.001191, 6.349710, 2.794358;;, + 81;3; 0.001191, 6.349710, 2.794358;;, + 82;3; 0.001191, 6.349710, 2.794357;;, + 83;3; 0.001191, 6.349709, 2.794357;;, + 84;3; 0.001191, 6.349710, 2.794357;;, + 85;3; 0.001190, 6.349709, 2.794357;;, + 86;3; 0.001191, 6.349710, 2.794357;;, + 87;3; 0.001191, 6.349710, 2.794357;;, + 88;3; 0.001191, 6.349710, 2.794357;;, + 89;3; 0.001191, 6.349710, 2.794357;;, + 90;3; 0.001191, 6.349710, 2.794357;;, + 91;3; 0.001191, 6.349710, 2.794357;;, + 92;3; 0.001191, 6.349710, 2.794357;;, + 93;3; 0.001191, 6.349709, 2.794357;;, + 94;3; 0.001191, 6.349710, 2.794357;;, + 95;3; 0.001191, 6.349710, 2.794357;;, + 96;3; 0.001191, 6.349709, 2.794357;;, + 97;3; 0.001191, 6.349710, 2.794357;;, + 98;3; 0.001191, 6.349710, 2.794358;;, + 99;3; 0.001191, 6.349710, 2.794357;;, + 100;3; 0.001191, 6.349710, 2.794357;;, + 101;3; 0.001191, 6.349710, 2.794357;;, + 102;3; 0.001191, 6.349710, 2.794357;;, + 103;3; 0.001191, 6.349710, 2.794357;;, + 104;3; 0.001191, 6.349710, 2.794357;;, + 105;3; 0.001191, 6.349710, 2.794358;;, + 106;3; 0.001191, 6.349709, 2.794357;;, + 107;3; 0.001191, 6.349710, 2.794358;;, + 108;3; 0.001191, 6.349709, 2.794357;;, + 109;3; 0.001191, 6.349710, 2.794357;;, + 110;3; 0.001191, 6.349710, 2.794358;;, + 111;3; 0.001191, 6.349710, 2.794357;;, + 112;3; 0.001191, 6.349709, 2.794357;;, + 113;3; 0.001191, 6.349709, 2.794357;;, + 114;3; 0.001191, 6.349710, 2.794357;;, + 115;3; 0.001191, 6.349710, 2.794357;;, + 116;3; 0.001191, 6.349710, 2.794357;;, + 117;3; 0.001191, 6.349710, 2.794357;;, + 118;3; 0.001191, 6.349710, 2.794357;;, + 119;3; 0.001191, 6.349710, 2.794357;;, + 120;3; 0.001191, 6.349710, 2.794357;;, + 121;3; 0.001191, 6.349710, 2.794358;;, + 122;3; 0.001191, 6.349710, 2.794357;;, + 123;3; 0.001191, 6.349710, 2.794357;;, + 124;3; 0.001191, 6.349710, 2.794357;;, + 125;3; 0.001191, 6.349710, 2.794357;;, + 126;3; 0.001191, 6.349710, 2.794357;;, + 127;3; 0.001191, 6.349710, 2.794357;;, + 128;3; 0.001191, 6.349710, 2.794357;;, + 129;3; 0.001191, 6.349709, 2.794357;;, + 130;3; 0.001191, 6.349709, 2.794357;;, + 131;3; 0.001191, 6.349710, 2.794357;;, + 132;3; 0.001191, 6.349710, 2.794357;;, + 133;3; 0.001191, 6.349710, 2.794357;;, + 134;3; 0.001191, 6.349709, 2.794357;;, + 135;3; 0.001191, 6.349710, 2.794358;;, + 136;3; 0.001191, 6.349709, 2.794357;;, + 137;3; 0.001191, 6.349710, 2.794358;;, + 138;3; 0.001191, 6.349710, 2.794357;;, + 139;3; 0.001191, 6.349710, 2.794357;;, + 140;3; 0.001191, 6.349710, 2.794357;;, + 141;3; 0.001191, 6.349710, 2.794357;;, + 142;3; 0.001191, 6.349710, 2.794357;;, + 143;3; 0.001191, 6.349710, 2.794358;;, + 144;3; 0.001191, 6.349710, 2.794357;;, + 145;3; 0.001191, 6.349710, 2.794357;;, + 146;3; 0.001191, 6.349710, 2.794357;;, + 147;3; 0.001191, 6.349710, 2.794357;;, + 148;3; 0.001191, 6.349709, 2.794357;;, + 149;3; 0.001191, 6.349710, 2.794357;;, + 150;3; 0.001191, 6.349710, 2.794357;;, + 151;3; 0.001191, 6.349709, 2.794357;;, + 152;3; 0.001190, 6.349710, 2.794358;;, + 153;3; 0.001191, 6.349710, 2.794357;;, + 154;3; 0.001191, 6.349710, 2.794357;;, + 155;3; 0.001191, 6.349710, 2.794358;;, + 156;3; 0.001191, 6.349710, 2.794357;;, + 157;3; 0.001191, 6.349710, 2.794357;;, + 158;3; 0.001191, 6.349710, 2.794357;;, + 159;3; 0.001191, 6.349710, 2.794357;;, + 160;3; 0.001191, 6.349710, 2.794357;;, + 161;3; 0.001191, 6.349710, 2.794358;;, + 162;3; 0.001191, 6.349709, 2.794357;;, + 163;3; 0.001191, 6.349709, 2.794357;;, + 164;3; 0.001191, 6.349709, 2.794357;;, + 165;3; 0.001191, 6.349709, 2.794357;;, + 166;3; 0.001191, 6.349709, 2.794357;;, + 167;3; 0.001191, 6.349709, 2.794357;;, + 168;3; 0.001191, 6.349710, 2.794358;;, + 169;3; 0.001191, 6.349709, 2.794357;;, + 170;3; 0.001191, 6.349709, 2.794357;;, + 171;3; 0.001191, 6.349710, 2.794357;;, + 172;3; 0.001191, 6.349709, 2.794358;;, + 173;3; 0.001191, 6.349709, 2.794358;;, + 174;3; 0.001191, 6.349710, 2.794358;;, + 175;3; 0.001191, 6.349710, 2.794357;;, + 176;3; 0.001191, 6.349709, 2.794357;;, + 177;3; 0.001191, 6.349709, 2.794357;;, + 178;3; 0.001191, 6.349710, 2.794358;;, + 179;3; 0.001191, 6.349710, 2.794357;;, + 180;3; 0.001191, 6.349709, 2.794358;;, + 181;3; 0.001191, 6.349710, 2.794357;;, + 182;3; 0.001191, 6.349710, 2.794357;;, + 183;3; 0.001191, 6.349710, 2.794357;;, + 184;3; 0.001191, 6.349710, 2.794357;;, + 185;3; 0.001191, 6.349710, 2.794357;;, + 186;3; 0.001191, 6.349710, 2.794357;;, + 187;3; 0.001191, 6.349709, 2.794357;;, + 188;3; 0.001191, 6.349710, 2.794358;;, + 189;3; 0.001191, 6.349709, 2.794358;;, + 190;3; 0.001191, 6.349710, 2.794358;;, + 191;3; 0.001191, 6.349710, 2.794357;;, + 192;3; 0.001191, 6.349710, 2.794355;;, + 193;3; 0.001191, 6.349710, 2.794358;;, + 194;3; 0.001191, 6.349709, 2.794357;;, + 195;3; 0.001191, 6.349709, 2.794357;;, + 196;3; 0.001191, 6.349710, 2.794358;;, + 197;3; 0.001191, 6.349710, 2.794358;;, + 198;3; 0.001191, 6.349710, 2.794357;;, + 199;3; 0.001191, 6.349709, 2.794358;;, + 200;3; 0.001191, 6.349710, 2.794357;;, + 201;3; 0.001191, 6.349710, 2.794356;;, + 202;3; 0.001191, 6.349710, 2.794358;;, + 203;3; 0.001191, 6.349710, 2.794358;;, + 204;3; 0.001191, 6.349709, 2.794358;;, + 205;3; 0.001191, 6.349710, 2.794358;;, + 206;3; 0.001191, 6.349710, 2.794358;;, + 207;3; 0.001191, 6.349710, 2.794356;;, + 208;3; 0.001191, 6.349710, 2.794357;;, + 209;3; 0.001191, 6.349710, 2.794357;;, + 210;3; 0.001191, 6.349709, 2.794357;;, + 211;3; 0.001191, 6.349710, 2.794357;;, + 212;3; 0.001191, 6.349710, 2.794357;;, + 213;3; 0.001191, 6.349710, 2.794356;;, + 214;3; 0.001191, 6.349710, 2.794358;;, + 215;3; 0.001191, 6.349710, 2.794358;;, + 216;3; 0.001191, 6.349709, 2.794357;;, + 217;3; 0.001191, 6.349710, 2.794357;;, + 218;3; 0.001191, 6.349710, 2.794357;;, + 219;3; 0.001191, 6.349710, 2.794357;;, + 220;3; 0.001191, 6.349710, 2.794357;;; + } + AnimationKey { //Rotation + 0; + 221; + 0;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 1;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 2;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 3;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 4;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 5;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 6;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 7;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 8;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 9;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 10;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 11;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 12;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 13;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 14;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 15;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 16;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 17;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 18;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 19;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 20;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 21;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 22;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 23;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 24;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 25;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 26;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 27;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 28;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 29;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 30;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 31;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 32;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 33;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 34;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 35;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 36;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 37;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 38;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 39;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 40;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 41;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 42;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 43;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 44;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 45;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 46;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 47;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 48;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 49;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 50;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 51;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 52;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 53;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 54;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 55;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 56;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 57;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 58;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 59;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 60;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 61;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 62;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 63;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 64;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 65;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 66;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 67;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 68;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 69;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 70;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 71;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 72;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 73;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 74;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 75;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 76;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 77;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 78;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 79;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 80;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 81;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 82;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 83;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 84;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 85;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 86;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 87;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 88;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 89;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 90;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 91;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 92;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 93;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 94;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 95;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 96;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 97;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 98;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 99;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 100;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 101;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 102;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 103;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 104;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 105;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 106;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 107;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 108;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 109;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 110;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 111;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 112;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 113;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 114;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 115;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 116;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 117;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 118;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 119;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 120;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 121;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 122;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 123;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 124;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 125;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 126;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 127;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 128;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 129;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 130;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 131;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 132;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 133;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 134;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 135;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 136;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 137;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 138;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 139;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 140;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 141;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 142;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 143;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 144;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 145;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 146;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 147;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 148;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 149;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 150;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 151;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 152;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 153;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 154;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 155;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 156;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 157;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 158;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 159;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 160;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 161;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 162;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 163;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 164;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 165;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 166;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 167;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 168;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 169;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 170;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 171;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 172;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 173;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 174;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 175;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 176;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 177;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 178;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 179;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 180;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 181;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 182;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 183;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 184;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 185;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 186;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 187;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 188;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 189;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 190;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 191;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 192;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 193;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 194;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 195;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 196;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 197;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 198;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 199;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 200;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 201;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 202;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 203;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 204;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 205;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 206;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 207;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 208;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 209;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 210;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 211;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 212;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 213;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 214;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 215;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 216;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 217;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 218;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 219;4; -0.639567, 0.221750,-0.661245,-0.323320;;, + 220;4; -0.639567, 0.221750,-0.661245,-0.323320;;; + } + AnimationKey { //Scale + 1; + 221; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;, + 189;3; 1.000000, 1.000000, 1.000000;;, + 190;3; 1.000000, 1.000000, 1.000000;;, + 191;3; 1.000000, 1.000000, 1.000000;;, + 192;3; 1.000000, 1.000000, 1.000000;;, + 193;3; 1.000000, 1.000000, 1.000000;;, + 194;3; 1.000000, 1.000000, 1.000000;;, + 195;3; 1.000000, 1.000000, 1.000000;;, + 196;3; 1.000000, 1.000000, 1.000000;;, + 197;3; 1.000000, 1.000000, 1.000000;;, + 198;3; 1.000000, 1.000000, 1.000000;;, + 199;3; 1.000000, 1.000000, 1.000000;;, + 200;3; 1.000000, 1.000000, 1.000000;;, + 201;3; 1.000000, 1.000000, 1.000000;;, + 202;3; 1.000000, 1.000000, 1.000000;;, + 203;3; 1.000000, 1.000000, 1.000000;;, + 204;3; 1.000000, 1.000000, 1.000000;;, + 205;3; 1.000000, 1.000000, 1.000000;;, + 206;3; 1.000000, 1.000000, 1.000000;;, + 207;3; 1.000000, 1.000000, 1.000000;;, + 208;3; 1.000000, 1.000000, 1.000000;;, + 209;3; 1.000000, 1.000000, 1.000000;;, + 210;3; 1.000000, 1.000000, 1.000000;;, + 211;3; 1.000000, 1.000000, 1.000000;;, + 212;3; 1.000000, 1.000000, 1.000000;;, + 213;3; 1.000000, 1.000000, 1.000000;;, + 214;3; 1.000000, 1.000000, 1.000000;;, + 215;3; 1.000000, 1.000000, 1.000000;;, + 216;3; 1.000000, 1.000000, 1.000000;;, + 217;3; 1.000000, 1.000000, 1.000000;;, + 218;3; 1.000000, 1.000000, 1.000000;;, + 219;3; 1.000000, 1.000000, 1.000000;;, + 220;3; 1.000000, 1.000000, 1.000000;;; + } + } + Animation { + {Armature_Arm_Left} + AnimationKey { //Position + 2; + 221; + 0;3; 2.000000, 6.750000,-0.000000;;, + 1;3; 2.000000, 6.750000, 0.000000;;, + 2;3; 2.000000, 6.750000,-0.000000;;, + 3;3; 2.000000, 6.750000, 0.000000;;, + 4;3; 2.000000, 6.750000,-0.000000;;, + 5;3; 2.000000, 6.750000,-0.000000;;, + 6;3; 2.000000, 6.750000, 0.000000;;, + 7;3; 2.000000, 6.750000, 0.000000;;, + 8;3; 2.000000, 6.750000,-0.000000;;, + 9;3; 2.000000, 6.750000, 0.000000;;, + 10;3; 2.000000, 6.750000,-0.000000;;, + 11;3; 2.000000, 6.750000,-0.000000;;, + 12;3; 2.000000, 6.750000, 0.000000;;, + 13;3; 2.000000, 6.750000, 0.000000;;, + 14;3; 2.000000, 6.750000, 0.000000;;, + 15;3; 2.000000, 6.750000, 0.000000;;, + 16;3; 2.000000, 6.750000,-0.000000;;, + 17;3; 2.000000, 6.750000,-0.000000;;, + 18;3; 2.000000, 6.750000, 0.000000;;, + 19;3; 2.000000, 6.750000, 0.000000;;, + 20;3; 2.000000, 6.750000,-0.000000;;, + 21;3; 2.000000, 6.750000, 0.000000;;, + 22;3; 2.000000, 6.750000,-0.000000;;, + 23;3; 2.000000, 6.750000,-0.000000;;, + 24;3; 2.000000, 6.750000,-0.000000;;, + 25;3; 2.000000, 6.750000, 0.000000;;, + 26;3; 2.000000, 6.750000, 0.000000;;, + 27;3; 2.000000, 6.750000, 0.000000;;, + 28;3; 2.000000, 6.750000, 0.000000;;, + 29;3; 2.000000, 6.750000,-0.000000;;, + 30;3; 2.000000, 6.750000,-0.000000;;, + 31;3; 2.000000, 6.750000,-0.000000;;, + 32;3; 2.000000, 6.750000,-0.000000;;, + 33;3; 2.000000, 6.750000, 0.000000;;, + 34;3; 2.000000, 6.750000,-0.000000;;, + 35;3; 2.000000, 6.750000,-0.000000;;, + 36;3; 2.000000, 6.750000, 0.000000;;, + 37;3; 2.000000, 6.750000, 0.000000;;, + 38;3; 2.000000, 6.750000,-0.000000;;, + 39;3; 2.000000, 6.750000, 0.000000;;, + 40;3; 2.000000, 6.750000,-0.000000;;, + 41;3; 2.000000, 6.750000,-0.000000;;, + 42;3; 2.000000, 6.750000,-0.000000;;, + 43;3; 2.000000, 6.750000, 0.000000;;, + 44;3; 2.000000, 6.750000,-0.000000;;, + 45;3; 2.000000, 6.750000,-0.000000;;, + 46;3; 2.000000, 6.750000,-0.000000;;, + 47;3; 2.000000, 6.750000, 0.000000;;, + 48;3; 2.000000, 6.750000,-0.000000;;, + 49;3; 2.000000, 6.750000,-0.000000;;, + 50;3; 2.000000, 6.750000,-0.000000;;, + 51;3; 2.000000, 6.750000,-0.000000;;, + 52;3; 2.000000, 6.750000, 0.000000;;, + 53;3; 2.000000, 6.750000, 0.000000;;, + 54;3; 2.000000, 6.750000,-0.000000;;, + 55;3; 2.000000, 6.750000,-0.000000;;, + 56;3; 2.000000, 6.750000,-0.000000;;, + 57;3; 2.000000, 6.750000,-0.000000;;, + 58;3; 2.000000, 6.750000, 0.000000;;, + 59;3; 2.000000, 6.750000, 0.000000;;, + 60;3; 2.000000, 6.750000,-0.000000;;, + 61;3; 2.000000, 6.750000,-0.000000;;, + 62;3; 2.000000, 6.750000, 0.000000;;, + 63;3; 2.000000, 6.750000, 0.000000;;, + 64;3; 2.000000, 6.750000, 0.000000;;, + 65;3; 2.000000, 6.750000, 0.000000;;, + 66;3; 2.000000, 6.750000, 0.000000;;, + 67;3; 2.000000, 6.750000,-0.000000;;, + 68;3; 2.000000, 6.750000, 0.000000;;, + 69;3; 2.000000, 6.750000, 0.000000;;, + 70;3; 2.000000, 6.750000, 0.000000;;, + 71;3; 2.000000, 6.750000, 0.000000;;, + 72;3; 2.000000, 6.750000, 0.000000;;, + 73;3; 2.000000, 6.750000,-0.000000;;, + 74;3; 2.000000, 6.750000, 0.000000;;, + 75;3; 2.000000, 6.750000, 0.000000;;, + 76;3; 2.000000, 6.750000, 0.000000;;, + 77;3; 2.000000, 6.750000,-0.000000;;, + 78;3; 2.000000, 6.750001,-0.000000;;, + 79;3; 2.000000, 6.750000,-0.000000;;, + 80;3; 2.000000, 6.750000,-0.000000;;, + 81;3; 2.000000, 6.750000, 0.000000;;, + 82;3; 2.000000, 6.750000,-0.000000;;, + 83;3; 2.000000, 6.750000,-0.000000;;, + 84;3; 2.000000, 6.750000,-0.000000;;, + 85;3; 2.000000, 6.750000,-0.000000;;, + 86;3; 2.000000, 6.750000, 0.000000;;, + 87;3; 2.000000, 6.750000,-0.000000;;, + 88;3; 2.000000, 6.750000,-0.000000;;, + 89;3; 2.000000, 6.750000, 0.000000;;, + 90;3; 2.000000, 6.750000,-0.000000;;, + 91;3; 2.000000, 6.750000, 0.000000;;, + 92;3; 2.000000, 6.750000, 0.000000;;, + 93;3; 2.000000, 6.750000, 0.000000;;, + 94;3; 2.000000, 6.750000,-0.000000;;, + 95;3; 2.000000, 6.750000, 0.000000;;, + 96;3; 2.000000, 6.750000,-0.000000;;, + 97;3; 2.000000, 6.750000,-0.000000;;, + 98;3; 2.000000, 6.750000,-0.000000;;, + 99;3; 2.000000, 6.750000,-0.000000;;, + 100;3; 2.000000, 6.750000, 0.000000;;, + 101;3; 2.000000, 6.750000,-0.000000;;, + 102;3; 2.000000, 6.750000, 0.000000;;, + 103;3; 2.000000, 6.750000,-0.000000;;, + 104;3; 2.000000, 6.750000,-0.000000;;, + 105;3; 2.000000, 6.750000,-0.000000;;, + 106;3; 2.000000, 6.750000,-0.000000;;, + 107;3; 2.000000, 6.750000, 0.000000;;, + 108;3; 2.000000, 6.750000, 0.000000;;, + 109;3; 2.000000, 6.750000,-0.000000;;, + 110;3; 2.000000, 6.750000,-0.000000;;, + 111;3; 2.000000, 6.750000,-0.000000;;, + 112;3; 2.000000, 6.750000,-0.000000;;, + 113;3; 2.000000, 6.750000,-0.000000;;, + 114;3; 2.000000, 6.750000, 0.000000;;, + 115;3; 2.000000, 6.750000,-0.000000;;, + 116;3; 2.000000, 6.750000,-0.000000;;, + 117;3; 2.000000, 6.750000,-0.000000;;, + 118;3; 2.000000, 6.750000,-0.000000;;, + 119;3; 2.000000, 6.750000, 0.000000;;, + 120;3; 2.000000, 6.750000, 0.000000;;, + 121;3; 2.000000, 6.750000, 0.000000;;, + 122;3; 2.000000, 6.750000, 0.000000;;, + 123;3; 2.000000, 6.750000,-0.000000;;, + 124;3; 2.000000, 6.750000,-0.000000;;, + 125;3; 2.000000, 6.750000,-0.000000;;, + 126;3; 2.000000, 6.750000,-0.000000;;, + 127;3; 2.000000, 6.750000,-0.000000;;, + 128;3; 2.000000, 6.750000, 0.000000;;, + 129;3; 2.000000, 6.750000,-0.000000;;, + 130;3; 2.000000, 6.750000, 0.000000;;, + 131;3; 2.000000, 6.750000,-0.000000;;, + 132;3; 2.000000, 6.750000,-0.000000;;, + 133;3; 2.000000, 6.750000,-0.000000;;, + 134;3; 2.000000, 6.750000, 0.000000;;, + 135;3; 2.000000, 6.750000, 0.000000;;, + 136;3; 2.000000, 6.750000,-0.000000;;, + 137;3; 2.000000, 6.750000,-0.000000;;, + 138;3; 2.000000, 6.750000,-0.000000;;, + 139;3; 2.000000, 6.750000,-0.000000;;, + 140;3; 2.000000, 6.750000, 0.000000;;, + 141;3; 2.000000, 6.750000,-0.000000;;, + 142;3; 2.000000, 6.750000,-0.000000;;, + 143;3; 2.000000, 6.750000,-0.000000;;, + 144;3; 2.000000, 6.750000, 0.000000;;, + 145;3; 2.000000, 6.750000,-0.000000;;, + 146;3; 2.000000, 6.750000, 0.000000;;, + 147;3; 2.000000, 6.750000, 0.000000;;, + 148;3; 2.000000, 6.750000,-0.000000;;, + 149;3; 2.000000, 6.750000,-0.000000;;, + 150;3; 2.000000, 6.750000,-0.000000;;, + 151;3; 2.000000, 6.750000,-0.000000;;, + 152;3; 2.000000, 6.750000,-0.000000;;, + 153;3; 2.000000, 6.750000, 0.000000;;, + 154;3; 2.000000, 6.750000,-0.000000;;, + 155;3; 2.000000, 6.750000,-0.000000;;, + 156;3; 2.000000, 6.750000,-0.000000;;, + 157;3; 2.000000, 6.750000,-0.000000;;, + 158;3; 2.000000, 6.750000, 0.000000;;, + 159;3; 2.000000, 6.750000,-0.000000;;, + 160;3; 2.000000, 6.750000, 0.000000;;, + 161;3; 2.000000, 6.750000, 0.000000;;, + 162;3; 2.000000, 6.750000,-0.000000;;, + 163;3; 2.000000, 6.750000,-0.000000;;, + 164;3; 2.000000, 6.750000,-0.000000;;, + 165;3; 2.000000, 6.750000,-0.000000;;, + 166;3; 2.000000, 6.750000,-0.000000;;, + 167;3; 2.000000, 6.750000,-0.000000;;, + 168;3; 2.000000, 6.750000,-0.000000;;, + 169;3; 2.000000, 6.750000,-0.000000;;, + 170;3; 2.000000, 6.750000,-0.000000;;, + 171;3; 2.000000, 6.750000,-0.000000;;, + 172;3; 2.000000, 6.750000,-0.000000;;, + 173;3; 2.000000, 6.750000,-0.000000;;, + 174;3; 2.000000, 6.750000,-0.000000;;, + 175;3; 2.000000, 6.750000,-0.000000;;, + 176;3; 2.000000, 6.750000,-0.000000;;, + 177;3; 2.000000, 6.750000,-0.000000;;, + 178;3; 2.000000, 6.750000,-0.000000;;, + 179;3; 2.000000, 6.750000,-0.000000;;, + 180;3; 2.000000, 6.750000,-0.000000;;, + 181;3; 2.000000, 6.750000,-0.000000;;, + 182;3; 2.000000, 6.750000,-0.000000;;, + 183;3; 2.000000, 6.750000,-0.000000;;, + 184;3; 2.000000, 6.750000,-0.000000;;, + 185;3; 2.000000, 6.750000,-0.000000;;, + 186;3; 2.000000, 6.750000,-0.000000;;, + 187;3; 2.000000, 6.750000,-0.000000;;, + 188;3; 2.000000, 6.750000,-0.000000;;, + 189;3; 2.000000, 6.750000,-0.000000;;, + 190;3; 2.000000, 6.750000, 0.000000;;, + 191;3; 2.000000, 6.750000, 0.000000;;, + 192;3; 2.000000, 6.750000,-0.000000;;, + 193;3; 2.000000, 6.750001, 0.000000;;, + 194;3; 2.000000, 6.750001, 0.000000;;, + 195;3; 2.000000, 6.750001, 0.000000;;, + 196;3; 2.000000, 6.750000,-0.000000;;, + 197;3; 2.000000, 6.750000, 0.000000;;, + 198;3; 2.000000, 6.750000,-0.000000;;, + 199;3; 2.000000, 6.750000,-0.000000;;, + 200;3; 2.000000, 6.750000,-0.000000;;, + 201;3; 2.000000, 6.750000, 0.000000;;, + 202;3; 2.000000, 6.750000,-0.000000;;, + 203;3; 2.000000, 6.750000, 0.000000;;, + 204;3; 2.000000, 6.750000,-0.000000;;, + 205;3; 2.000000, 6.750000,-0.000000;;, + 206;3; 2.000000, 6.750000, 0.000000;;, + 207;3; 2.000000, 6.750000,-0.000000;;, + 208;3; 2.000000, 6.750000, 0.000000;;, + 209;3; 2.000000, 6.750000,-0.000000;;, + 210;3; 2.000000, 6.750001, 0.000000;;, + 211;3; 2.000000, 6.750000,-0.000000;;, + 212;3; 2.000000, 6.750000, 0.000000;;, + 213;3; 2.000000, 6.750000,-0.000000;;, + 214;3; 2.000000, 6.750000, 0.000000;;, + 215;3; 2.000000, 6.750000,-0.000000;;, + 216;3; 2.000000, 6.750000,-0.000000;;, + 217;3; 2.000000, 6.750000, 0.000000;;, + 218;3; 2.000000, 6.750000, 0.000000;;, + 219;3; 2.000000, 6.750000,-0.000000;;, + 220;3; 2.000000, 6.750000,-0.000000;;; + } + AnimationKey { //Rotation + 0; + 221; + 0;4; -0.000993,-0.997299,-0.072152,-0.013694;;, + 1;4; -0.000771,-0.997293,-0.072148,-0.013786;;, + 2;4; -0.000100,-0.997275,-0.072137,-0.014065;;, + 3;4; 0.001022,-0.997244,-0.072119,-0.014531;;, + 4;4; 0.002587,-0.997202,-0.072094,-0.015181;;, + 5;4; 0.004576,-0.997148,-0.072062,-0.016007;;, + 6;4; 0.006956,-0.997083,-0.072024,-0.016996;;, + 7;4; 0.009676,-0.997009,-0.071980,-0.018126;;, + 8;4; 0.012671,-0.996927,-0.071931,-0.019370;;, + 9;4; 0.015858,-0.996840,-0.071880,-0.020693;;, + 10;4; 0.019145,-0.996751,-0.071827,-0.022059;;, + 11;4; 0.022431,-0.996661,-0.071774,-0.023424;;, + 12;4; 0.025618,-0.996574,-0.071723,-0.024748;;, + 13;4; 0.028613,-0.996493,-0.071675,-0.025991;;, + 14;4; 0.031333,-0.996419,-0.071631,-0.027121;;, + 15;4; 0.033713,-0.996354,-0.071592,-0.028110;;, + 16;4; 0.035702,-0.996300,-0.071560,-0.028936;;, + 17;4; 0.037267,-0.996257,-0.071535,-0.029586;;, + 18;4; 0.038389,-0.996226,-0.071517,-0.030052;;, + 19;4; 0.039060,-0.996208,-0.071506,-0.030331;;, + 20;4; 0.039282,-0.996202,-0.071503,-0.030423;;, + 21;4; 0.039060,-0.996208,-0.071506,-0.030331;;, + 22;4; 0.038389,-0.996226,-0.071517,-0.030052;;, + 23;4; 0.037267,-0.996257,-0.071535,-0.029586;;, + 24;4; 0.035702,-0.996300,-0.071560,-0.028936;;, + 25;4; 0.033713,-0.996354,-0.071592,-0.028110;;, + 26;4; 0.031333,-0.996419,-0.071631,-0.027121;;, + 27;4; 0.028613,-0.996493,-0.071675,-0.025991;;, + 28;4; 0.025618,-0.996574,-0.071723,-0.024748;;, + 29;4; 0.022431,-0.996661,-0.071774,-0.023424;;, + 30;4; 0.019145,-0.996751,-0.071827,-0.022059;;, + 31;4; 0.015858,-0.996840,-0.071880,-0.020693;;, + 32;4; 0.012671,-0.996927,-0.071931,-0.019370;;, + 33;4; 0.009676,-0.997009,-0.071980,-0.018126;;, + 34;4; 0.006956,-0.997083,-0.072024,-0.016996;;, + 35;4; 0.004576,-0.997148,-0.072062,-0.016007;;, + 36;4; 0.002587,-0.997202,-0.072094,-0.015181;;, + 37;4; 0.001022,-0.997244,-0.072119,-0.014531;;, + 38;4; -0.000100,-0.997275,-0.072137,-0.014065;;, + 39;4; -0.000771,-0.997293,-0.072148,-0.013786;;, + 40;4; -0.000993,-0.997299,-0.072152,-0.013694;;, + 41;4; -0.000771,-0.997293,-0.072148,-0.013786;;, + 42;4; -0.000100,-0.997275,-0.072137,-0.014065;;, + 43;4; 0.001022,-0.997244,-0.072119,-0.014531;;, + 44;4; 0.002587,-0.997202,-0.072094,-0.015181;;, + 45;4; 0.004576,-0.997148,-0.072062,-0.016007;;, + 46;4; 0.006956,-0.997083,-0.072024,-0.016996;;, + 47;4; 0.009676,-0.997009,-0.071980,-0.018126;;, + 48;4; 0.012671,-0.996927,-0.071931,-0.019370;;, + 49;4; 0.015858,-0.996840,-0.071880,-0.020693;;, + 50;4; 0.019145,-0.996751,-0.071827,-0.022059;;, + 51;4; 0.022431,-0.996661,-0.071774,-0.023424;;, + 52;4; 0.025618,-0.996574,-0.071723,-0.024748;;, + 53;4; 0.028613,-0.996493,-0.071675,-0.025991;;, + 54;4; 0.031333,-0.996419,-0.071631,-0.027121;;, + 55;4; 0.033713,-0.996354,-0.071592,-0.028110;;, + 56;4; 0.035702,-0.996300,-0.071560,-0.028936;;, + 57;4; 0.037267,-0.996257,-0.071535,-0.029586;;, + 58;4; 0.038389,-0.996226,-0.071517,-0.030052;;, + 59;4; 0.039060,-0.996208,-0.071506,-0.030331;;, + 60;4; 0.039282,-0.996202,-0.071503,-0.030423;;, + 61;4; 0.039073,-0.996208,-0.071506,-0.030336;;, + 62;4; 0.038487,-0.996224,-0.071515,-0.030093;;, + 63;4; 0.037574,-0.996249,-0.071530,-0.029714;;, + 64;4; 0.036375,-0.996281,-0.071549,-0.029216;;, + 65;4; 0.034924,-0.996321,-0.071573,-0.028613;;, + 66;4; 0.033248,-0.996367,-0.071600,-0.027917;;, + 67;4; 0.031373,-0.996418,-0.071630,-0.027138;;, + 68;4; 0.029318,-0.996474,-0.071663,-0.026285;;, + 69;4; 0.027103,-0.996534,-0.071699,-0.025365;;, + 70;4; 0.024745,-0.996598,-0.071737,-0.024385;;, + 71;4; 0.022261,-0.996666,-0.071777,-0.023353;;, + 72;4; 0.019665,-0.996737,-0.071819,-0.022275;;, + 73;4; 0.016975,-0.996810,-0.071862,-0.021158;;, + 74;4; 0.014209,-0.996885,-0.071907,-0.020009;;, + 75;4; 0.011390,-0.996962,-0.071952,-0.018837;;, + 76;4; 0.008545,-0.997039,-0.071998,-0.017656;;, + 77;4; 0.005717,-0.997116,-0.072044,-0.016481;;, + 78;4; 0.002983,-0.997191,-0.072088,-0.015346;;, + 79;4; 0.000513,-0.997258,-0.072127,-0.014320;;, + 80;4; -0.000993,-0.997299,-0.072152,-0.013694;;, + 81;4; -0.000993,-0.997299,-0.072152,-0.013694;;, + 82;4; 0.000513,-0.997258,-0.072127,-0.014320;;, + 83;4; 0.002983,-0.997191,-0.072088,-0.015346;;, + 84;4; 0.005717,-0.997116,-0.072044,-0.016481;;, + 85;4; 0.008545,-0.997039,-0.071998,-0.017656;;, + 86;4; 0.011390,-0.996962,-0.071952,-0.018837;;, + 87;4; 0.014209,-0.996885,-0.071907,-0.020009;;, + 88;4; 0.016975,-0.996810,-0.071862,-0.021158;;, + 89;4; 0.019665,-0.996737,-0.071819,-0.022275;;, + 90;4; 0.022261,-0.996666,-0.071777,-0.023353;;, + 91;4; 0.024745,-0.996598,-0.071737,-0.024385;;, + 92;4; 0.027103,-0.996534,-0.071699,-0.025365;;, + 93;4; 0.029318,-0.996474,-0.071663,-0.026285;;, + 94;4; 0.031373,-0.996418,-0.071630,-0.027138;;, + 95;4; 0.033248,-0.996367,-0.071600,-0.027917;;, + 96;4; 0.034924,-0.996321,-0.071573,-0.028613;;, + 97;4; 0.036375,-0.996281,-0.071549,-0.029216;;, + 98;4; 0.037574,-0.996249,-0.071530,-0.029714;;, + 99;4; 0.038487,-0.996224,-0.071515,-0.030093;;, + 100;4; 0.039073,-0.996208,-0.071506,-0.030336;;, + 101;4; 0.039282,-0.996202,-0.071503,-0.030423;;, + 102;4; 0.039060,-0.996208,-0.071506,-0.030331;;, + 103;4; 0.038389,-0.996226,-0.071517,-0.030052;;, + 104;4; 0.037267,-0.996257,-0.071535,-0.029586;;, + 105;4; 0.035702,-0.996300,-0.071560,-0.028936;;, + 106;4; 0.033713,-0.996354,-0.071592,-0.028110;;, + 107;4; 0.031333,-0.996419,-0.071631,-0.027121;;, + 108;4; 0.028613,-0.996493,-0.071675,-0.025991;;, + 109;4; 0.025618,-0.996574,-0.071723,-0.024748;;, + 110;4; 0.022431,-0.996661,-0.071774,-0.023424;;, + 111;4; 0.019145,-0.996751,-0.071827,-0.022059;;, + 112;4; 0.015858,-0.996840,-0.071880,-0.020693;;, + 113;4; 0.012671,-0.996927,-0.071931,-0.019370;;, + 114;4; 0.009676,-0.997009,-0.071980,-0.018126;;, + 115;4; 0.006956,-0.997083,-0.072024,-0.016996;;, + 116;4; 0.004576,-0.997148,-0.072062,-0.016007;;, + 117;4; 0.002587,-0.997202,-0.072094,-0.015181;;, + 118;4; 0.001022,-0.997244,-0.072119,-0.014531;;, + 119;4; -0.000100,-0.997275,-0.072137,-0.014065;;, + 120;4; -0.000771,-0.997293,-0.072148,-0.013786;;, + 121;4; -0.000993,-0.997299,-0.072152,-0.013694;;, + 122;4; -0.000771,-0.997293,-0.072148,-0.013786;;, + 123;4; -0.000100,-0.997275,-0.072137,-0.014065;;, + 124;4; 0.001022,-0.997244,-0.072119,-0.014531;;, + 125;4; 0.002587,-0.997202,-0.072094,-0.015181;;, + 126;4; 0.004576,-0.997148,-0.072062,-0.016007;;, + 127;4; 0.006956,-0.997083,-0.072024,-0.016996;;, + 128;4; 0.009676,-0.997009,-0.071980,-0.018126;;, + 129;4; 0.012671,-0.996927,-0.071931,-0.019370;;, + 130;4; 0.015858,-0.996840,-0.071880,-0.020693;;, + 131;4; 0.019145,-0.996751,-0.071827,-0.022059;;, + 132;4; 0.022431,-0.996661,-0.071774,-0.023424;;, + 133;4; 0.025618,-0.996574,-0.071723,-0.024748;;, + 134;4; 0.028613,-0.996493,-0.071675,-0.025991;;, + 135;4; 0.031333,-0.996419,-0.071631,-0.027121;;, + 136;4; 0.033713,-0.996354,-0.071592,-0.028110;;, + 137;4; 0.035702,-0.996300,-0.071560,-0.028936;;, + 138;4; 0.037267,-0.996257,-0.071535,-0.029586;;, + 139;4; 0.038389,-0.996226,-0.071517,-0.030052;;, + 140;4; 0.039060,-0.996208,-0.071506,-0.030331;;, + 141;4; 0.039282,-0.996202,-0.071503,-0.030423;;, + 142;4; 0.039113,-0.996208,-0.071505,-0.030339;;, + 143;4; 0.038636,-0.996224,-0.071513,-0.030104;;, + 144;4; 0.037890,-0.996249,-0.071526,-0.029737;;, + 145;4; 0.036903,-0.996282,-0.071542,-0.029254;;, + 146;4; 0.035701,-0.996322,-0.071562,-0.028669;;, + 147;4; 0.034303,-0.996368,-0.071585,-0.027993;;, + 148;4; 0.032725,-0.996419,-0.071612,-0.027236;;, + 149;4; 0.030981,-0.996475,-0.071640,-0.026405;;, + 150;4; 0.029082,-0.996536,-0.071672,-0.025508;;, + 151;4; 0.027037,-0.996600,-0.071705,-0.024551;;, + 152;4; 0.024854,-0.996668,-0.071741,-0.023541;;, + 153;4; 0.022538,-0.996739,-0.071779,-0.022483;;, + 154;4; 0.020093,-0.996813,-0.071819,-0.021383;;, + 155;4; 0.017523,-0.996888,-0.071861,-0.020249;;, + 156;4; 0.014827,-0.996965,-0.071905,-0.019086;;, + 157;4; 0.012003,-0.997043,-0.071950,-0.017906;;, + 158;4; 0.009044,-0.997120,-0.071998,-0.016722;;, + 159;4; 0.005935,-0.997194,-0.072047,-0.015559;;, + 160;4; 0.002637,-0.997260,-0.072098,-0.014474;;, + 161;4; -0.000993,-0.997299,-0.072152,-0.013694;;, + 162;4; -0.003932,-0.958043,-0.286296,-0.013156;;, + 163;4; -0.003932,-0.958043,-0.286296,-0.013156;;, + 164;4; -0.003932,-0.958043,-0.286296,-0.013156;;, + 165;4; -0.003932,-0.958043,-0.286296,-0.013156;;, + 166;4; -0.003932,-0.958043,-0.286296,-0.013156;;, + 167;4; -0.003932,-0.958043,-0.286296,-0.013156;;, + 168;4; -0.000993,-0.997299,-0.072152,-0.013694;;, + 169;4; 0.036332,-0.993297,-0.071785,-0.010875;;, + 170;4; 0.112792,-0.981996,-0.071141,-0.000862;;, + 171;4; 0.203761,-0.967480,-0.070405, 0.012516;;, + 172;4; 0.272366,-0.956172,-0.069861, 0.023097;;, + 173;4; 0.296344,-0.952157,-0.069673, 0.026881;;, + 174;4; 0.279502,-0.956187,-0.070025, 0.024565;;, + 175;4; 0.227904,-0.967532,-0.070959, 0.017473;;, + 176;4; 0.150399,-0.982078,-0.072003, 0.006854;;, + 177;4; 0.068082,-0.993365,-0.072516,-0.004361;;, + 178;4; -0.000993,-0.997299,-0.072152,-0.013694;;, + 179;4; -0.070052,-0.993110,-0.070622,-0.022916;;, + 180;4; -0.152323,-0.981518,-0.067851,-0.033816;;, + 181;4; -0.229770,-0.966686,-0.064678,-0.044032;;, + 182;4; -0.281324,-0.955151,-0.062328,-0.050810;;, + 183;4; -0.298149,-0.951059,-0.061515,-0.053015;;, + 184;4; -0.271739,-0.955169,-0.062460,-0.049519;;, + 185;4; -0.197357,-0.966746,-0.065124,-0.039673;;, + 186;4; -0.101840,-0.981611,-0.068543,-0.027032;;, + 187;4; -0.027423,-0.993189,-0.071206,-0.017188;;, + 188;4; -0.000993,-0.997299,-0.072152,-0.013694;;, + 189;4; -0.000993,-0.997299,-0.072152,-0.013694;;, + 190;4; -0.008559,-0.996922,-0.072022,-0.015348;;, + 191;4; -0.029871,-0.995859,-0.071657,-0.020007;;, + 192;4; -0.057234,-0.994494,-0.071189,-0.025990;;, + 193;4; -0.078545,-0.993431,-0.070824,-0.030649;;, + 194;4; -0.086111,-0.993053,-0.070695,-0.032303;;, + 195;4; -0.078545,-0.993431,-0.070824,-0.030649;;, + 196;4; -0.057234,-0.994494,-0.071189,-0.025990;;, + 197;4; -0.029871,-0.995859,-0.071657,-0.020007;;, + 198;4; -0.008559,-0.996922,-0.072022,-0.015348;;, + 199;4; -0.000993,-0.997299,-0.072152,-0.013694;;, + 200;4; -0.000993,-0.997299,-0.072152,-0.013694;;, + 201;4; -0.027386,-0.993193,-0.071206,-0.017191;;, + 202;4; -0.101699,-0.981628,-0.068543,-0.027043;;, + 203;4; -0.197082,-0.966779,-0.065124,-0.039695;;, + 204;4; -0.271360,-0.955214,-0.062460,-0.049549;;, + 205;4; -0.297734,-0.951108,-0.061515,-0.053047;;, + 206;4; -0.280925,-0.955178,-0.062588,-0.050840;;, + 207;4; -0.229428,-0.966656,-0.065555,-0.044059;;, + 208;4; -0.152078,-0.981436,-0.069215,-0.033835;;, + 209;4; -0.069926,-0.993031,-0.071773,-0.022926;;, + 210;4; -0.000993,-0.997299,-0.072152,-0.013694;;, + 211;4; 0.067935,-0.993484,-0.070939,-0.004350;;, + 212;4; 0.150070,-0.982311,-0.069014, 0.006878;;, + 213;4; 0.227401,-0.967858,-0.066917, 0.017510;;, + 214;4; 0.278882,-0.956568,-0.065400, 0.024610;;, + 215;4; 0.295684,-0.952554,-0.064881, 0.026930;;, + 216;4; 0.269327,-0.956531,-0.065527, 0.023318;;, + 217;4; 0.195117,-0.967734,-0.067347, 0.013142;;, + 218;4; 0.099789,-0.982118,-0.069683, 0.000080;;, + 219;4; 0.025442,-0.993322,-0.071505,-0.010087;;, + 220;4; -0.000993,-0.997299,-0.072152,-0.013694;;; + } + AnimationKey { //Scale + 1; + 221; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;, + 189;3; 1.000000, 1.000000, 1.000000;;, + 190;3; 1.000000, 1.000000, 1.000000;;, + 191;3; 1.000000, 1.000000, 1.000000;;, + 192;3; 1.000000, 1.000000, 1.000000;;, + 193;3; 1.000000, 1.000000, 1.000000;;, + 194;3; 1.000000, 1.000000, 1.000000;;, + 195;3; 1.000000, 1.000000, 1.000000;;, + 196;3; 1.000000, 1.000000, 1.000000;;, + 197;3; 1.000000, 1.000000, 1.000000;;, + 198;3; 1.000000, 1.000000, 1.000000;;, + 199;3; 1.000000, 1.000000, 1.000000;;, + 200;3; 1.000000, 1.000000, 1.000000;;, + 201;3; 1.000000, 1.000000, 1.000000;;, + 202;3; 1.000000, 1.000000, 1.000000;;, + 203;3; 1.000000, 1.000000, 1.000000;;, + 204;3; 1.000000, 1.000000, 1.000000;;, + 205;3; 1.000000, 1.000000, 1.000000;;, + 206;3; 1.000000, 1.000000, 1.000000;;, + 207;3; 1.000000, 1.000000, 1.000000;;, + 208;3; 1.000000, 1.000000, 1.000000;;, + 209;3; 1.000000, 1.000000, 1.000000;;, + 210;3; 1.000000, 1.000000, 1.000000;;, + 211;3; 1.000000, 1.000000, 1.000000;;, + 212;3; 1.000000, 1.000000, 1.000000;;, + 213;3; 1.000000, 1.000000, 1.000000;;, + 214;3; 1.000000, 1.000000, 1.000000;;, + 215;3; 1.000000, 1.000000, 1.000000;;, + 216;3; 1.000000, 1.000000, 1.000000;;, + 217;3; 1.000000, 1.000000, 1.000000;;, + 218;3; 1.000000, 1.000000, 1.000000;;, + 219;3; 1.000000, 1.000000, 1.000000;;, + 220;3; 1.000000, 1.000000, 1.000000;;; + } + } + Animation { + {Armature_Leg_Left} + AnimationKey { //Position + 2; + 221; + 0;3; 1.000000, 0.000000,-0.000001;;, + 1;3; 1.000000, 0.000000,-0.000001;;, + 2;3; 1.000000,-0.000000,-0.000001;;, + 3;3; 1.000000,-0.000000,-0.000001;;, + 4;3; 1.000000,-0.000000,-0.000001;;, + 5;3; 1.000000,-0.000000,-0.000001;;, + 6;3; 1.000000,-0.000000,-0.000001;;, + 7;3; 1.000000, 0.000000,-0.000001;;, + 8;3; 1.000000,-0.000000,-0.000001;;, + 9;3; 1.000000,-0.000000,-0.000001;;, + 10;3; 1.000000,-0.000000,-0.000001;;, + 11;3; 1.000000,-0.000000,-0.000001;;, + 12;3; 1.000000,-0.000000,-0.000001;;, + 13;3; 1.000000, 0.000000,-0.000001;;, + 14;3; 1.000000,-0.000000,-0.000001;;, + 15;3; 1.000000,-0.000000,-0.000001;;, + 16;3; 1.000000,-0.000000,-0.000000;;, + 17;3; 1.000000,-0.000000,-0.000001;;, + 18;3; 1.000000, 0.000000,-0.000000;;, + 19;3; 1.000000,-0.000000,-0.000001;;, + 20;3; 1.000000, 0.000000,-0.000000;;, + 21;3; 1.000000,-0.000000,-0.000001;;, + 22;3; 1.000000, 0.000000,-0.000000;;, + 23;3; 1.000000,-0.000000,-0.000001;;, + 24;3; 1.000000,-0.000000,-0.000001;;, + 25;3; 1.000000,-0.000000,-0.000000;;, + 26;3; 1.000000,-0.000000,-0.000000;;, + 27;3; 1.000000, 0.000000,-0.000001;;, + 28;3; 1.000000,-0.000000,-0.000001;;, + 29;3; 1.000000,-0.000000,-0.000001;;, + 30;3; 1.000000,-0.000000,-0.000001;;, + 31;3; 1.000000,-0.000000,-0.000001;;, + 32;3; 1.000000,-0.000000,-0.000001;;, + 33;3; 1.000000, 0.000000,-0.000001;;, + 34;3; 1.000000,-0.000000,-0.000001;;, + 35;3; 1.000000,-0.000000,-0.000001;;, + 36;3; 1.000000,-0.000000,-0.000001;;, + 37;3; 1.000000,-0.000000,-0.000001;;, + 38;3; 1.000000,-0.000000,-0.000001;;, + 39;3; 1.000000, 0.000000,-0.000001;;, + 40;3; 1.000000, 0.000000,-0.000001;;, + 41;3; 1.000000, 0.000000,-0.000001;;, + 42;3; 1.000000,-0.000000,-0.000001;;, + 43;3; 1.000000,-0.000000,-0.000001;;, + 44;3; 1.000000,-0.000000,-0.000001;;, + 45;3; 1.000000,-0.000000,-0.000001;;, + 46;3; 1.000000,-0.000000,-0.000001;;, + 47;3; 1.000000, 0.000000,-0.000001;;, + 48;3; 1.000000,-0.000000,-0.000001;;, + 49;3; 1.000000,-0.000000,-0.000001;;, + 50;3; 1.000000,-0.000000,-0.000001;;, + 51;3; 1.000000,-0.000000,-0.000001;;, + 52;3; 1.000000,-0.000000,-0.000001;;, + 53;3; 1.000000, 0.000000,-0.000001;;, + 54;3; 1.000000,-0.000000,-0.000001;;, + 55;3; 1.000000,-0.000000,-0.000001;;, + 56;3; 1.000000,-0.000000,-0.000000;;, + 57;3; 1.000000,-0.000000,-0.000001;;, + 58;3; 1.000000, 0.000000,-0.000000;;, + 59;3; 1.000000,-0.000000,-0.000001;;, + 60;3; 1.000000, 0.000000,-0.000000;;, + 61;3; 1.000000, 0.000000,-0.000001;;, + 62;3; 1.000000,-0.000000,-0.000001;;, + 63;3; 1.000000,-0.000000,-0.000000;;, + 64;3; 1.000000, 0.000000,-0.000000;;, + 65;3; 1.000000,-0.000000,-0.000001;;, + 66;3; 1.000000,-0.000000,-0.000001;;, + 67;3; 1.000000,-0.000000,-0.000001;;, + 68;3; 1.000000, 0.000000,-0.000001;;, + 69;3; 1.000000,-0.000000,-0.000000;;, + 70;3; 1.000000,-0.000000,-0.000000;;, + 71;3; 1.000000,-0.000000,-0.000001;;, + 72;3; 1.000000,-0.000000,-0.000001;;, + 73;3; 1.000000, 0.000000,-0.000000;;, + 74;3; 1.000000,-0.000000,-0.000001;;, + 75;3; 1.000000, 0.000000,-0.000001;;, + 76;3; 1.000000,-0.000000,-0.000001;;, + 77;3; 1.000000,-0.000000,-0.000001;;, + 78;3; 1.000000, 0.000000,-0.000001;;, + 79;3; 1.000000,-0.000000,-0.000001;;, + 80;3; 1.000000, 0.000000,-0.000001;;, + 81;3; 1.000000, 0.000000,-0.000001;;, + 82;3; 1.000000,-0.000000,-0.000001;;, + 83;3; 1.000000,-0.000000,-0.000001;;, + 84;3; 1.000000,-0.000000,-0.000001;;, + 85;3; 1.000000,-0.000000,-0.000001;;, + 86;3; 1.000000,-0.000000,-0.000001;;, + 87;3; 1.000000,-0.000000,-0.000001;;, + 88;3; 1.000000,-0.000000,-0.000001;;, + 89;3; 1.000000,-0.000000,-0.000001;;, + 90;3; 1.000000,-0.000000,-0.000001;;, + 91;3; 1.000000,-0.000000,-0.000001;;, + 92;3; 1.000000,-0.000000,-0.000001;;, + 93;3; 1.000000,-0.000000,-0.000001;;, + 94;3; 1.000000,-0.000000,-0.000001;;, + 95;3; 1.000000,-0.000000,-0.000001;;, + 96;3; 1.000000,-0.000000,-0.000001;;, + 97;3; 1.000000,-0.000000,-0.000001;;, + 98;3; 1.000000,-0.000000,-0.000001;;, + 99;3; 1.000000,-0.000000,-0.000001;;, + 100;3; 1.000000,-0.000000,-0.000001;;, + 101;3; 1.000000,-0.000000,-0.000001;;, + 102;3; 1.000000,-0.000000,-0.000001;;, + 103;3; 1.000000,-0.000000,-0.000001;;, + 104;3; 1.000000,-0.000000,-0.000001;;, + 105;3; 1.000000,-0.000000,-0.000001;;, + 106;3; 1.000000,-0.000000,-0.000001;;, + 107;3; 1.000000,-0.000000,-0.000001;;, + 108;3; 1.000000,-0.000000,-0.000001;;, + 109;3; 1.000000,-0.000000,-0.000001;;, + 110;3; 1.000000,-0.000000,-0.000001;;, + 111;3; 1.000000,-0.000000,-0.000001;;, + 112;3; 1.000000,-0.000000,-0.000001;;, + 113;3; 1.000000,-0.000000,-0.000001;;, + 114;3; 1.000000,-0.000000,-0.000001;;, + 115;3; 1.000000,-0.000000,-0.000001;;, + 116;3; 1.000000,-0.000000,-0.000001;;, + 117;3; 1.000000,-0.000000,-0.000001;;, + 118;3; 1.000000,-0.000000,-0.000001;;, + 119;3; 1.000000,-0.000000,-0.000001;;, + 120;3; 1.000000,-0.000000,-0.000001;;, + 121;3; 1.000000, 0.000000,-0.000001;;, + 122;3; 1.000000,-0.000000,-0.000001;;, + 123;3; 1.000000,-0.000000,-0.000001;;, + 124;3; 1.000000,-0.000000,-0.000001;;, + 125;3; 1.000000,-0.000000,-0.000001;;, + 126;3; 1.000000,-0.000000,-0.000001;;, + 127;3; 1.000000,-0.000000,-0.000001;;, + 128;3; 1.000000,-0.000000,-0.000001;;, + 129;3; 1.000000,-0.000000,-0.000001;;, + 130;3; 1.000000,-0.000000,-0.000001;;, + 131;3; 1.000000,-0.000000,-0.000001;;, + 132;3; 1.000000,-0.000000,-0.000001;;, + 133;3; 1.000000,-0.000000,-0.000001;;, + 134;3; 1.000000,-0.000000,-0.000001;;, + 135;3; 1.000000,-0.000000,-0.000001;;, + 136;3; 1.000000,-0.000000,-0.000001;;, + 137;3; 1.000000,-0.000000,-0.000001;;, + 138;3; 1.000000,-0.000000,-0.000001;;, + 139;3; 1.000000,-0.000000,-0.000001;;, + 140;3; 1.000000,-0.000000,-0.000001;;, + 141;3; 1.000000,-0.000000,-0.000001;;, + 142;3; 1.000000,-0.000000,-0.000001;;, + 143;3; 1.000000,-0.000000,-0.000001;;, + 144;3; 1.000000,-0.000000,-0.000001;;, + 145;3; 1.000000,-0.000000,-0.000001;;, + 146;3; 1.000000,-0.000000,-0.000001;;, + 147;3; 1.000000,-0.000000,-0.000001;;, + 148;3; 1.000000,-0.000000,-0.000001;;, + 149;3; 1.000000,-0.000000,-0.000001;;, + 150;3; 1.000000,-0.000000,-0.000001;;, + 151;3; 1.000000,-0.000000,-0.000001;;, + 152;3; 1.000000,-0.000000,-0.000001;;, + 153;3; 1.000000,-0.000000,-0.000001;;, + 154;3; 1.000000,-0.000000,-0.000001;;, + 155;3; 1.000000,-0.000000,-0.000001;;, + 156;3; 1.000000,-0.000000,-0.000001;;, + 157;3; 1.000000,-0.000000,-0.000001;;, + 158;3; 1.000000,-0.000000,-0.000001;;, + 159;3; 1.000000,-0.000000,-0.000001;;, + 160;3; 1.000000,-0.000000,-0.000001;;, + 161;3; 1.000000, 0.000000,-0.000001;;, + 162;3; 1.000000,-0.000000,-0.000001;;, + 163;3; 1.000000,-0.000000,-0.000001;;, + 164;3; 1.000000,-0.000000,-0.000001;;, + 165;3; 1.000000,-0.000000,-0.000001;;, + 166;3; 1.000000,-0.000000,-0.000001;;, + 167;3; 1.000000,-0.000000,-0.000001;;, + 168;3; 1.000000, 0.000000,-0.000001;;, + 169;3; 1.000000, 0.000000,-0.000001;;, + 170;3; 1.000000, 0.000000,-0.000001;;, + 171;3; 1.000000, 0.000000,-0.000001;;, + 172;3; 1.000000, 0.000000,-0.000001;;, + 173;3; 1.000000, 0.000000,-0.000001;;, + 174;3; 1.000000, 0.000000,-0.000001;;, + 175;3; 1.000000, 0.000000,-0.000001;;, + 176;3; 1.000000, 0.000000,-0.000001;;, + 177;3; 1.000000, 0.000000,-0.000001;;, + 178;3; 1.000000, 0.000000,-0.000001;;, + 179;3; 1.000000, 0.000000,-0.000001;;, + 180;3; 1.000000, 0.000000,-0.000001;;, + 181;3; 1.000000, 0.000000,-0.000001;;, + 182;3; 1.000000, 0.000000,-0.000001;;, + 183;3; 1.000000, 0.000000,-0.000001;;, + 184;3; 1.000000, 0.000000,-0.000001;;, + 185;3; 1.000000, 0.000000,-0.000001;;, + 186;3; 1.000000, 0.000000,-0.000001;;, + 187;3; 1.000000, 0.000000,-0.000001;;, + 188;3; 1.000000, 0.000000,-0.000001;;, + 189;3; 1.000000, 0.000000,-0.000001;;, + 190;3; 1.000000,-0.000000,-0.000001;;, + 191;3; 1.000000,-0.000000,-0.000001;;, + 192;3; 1.000000,-0.000000,-0.000001;;, + 193;3; 1.000000, 0.000000,-0.000001;;, + 194;3; 1.000000, 0.000000,-0.000000;;, + 195;3; 1.000000, 0.000000,-0.000001;;, + 196;3; 1.000000,-0.000000,-0.000000;;, + 197;3; 1.000000,-0.000000,-0.000001;;, + 198;3; 1.000000,-0.000000,-0.000001;;, + 199;3; 1.000000, 0.000000,-0.000001;;, + 200;3; 1.000000, 0.000000,-0.000001;;, + 201;3; 1.000000,-0.000000,-0.000001;;, + 202;3; 1.000000,-0.000000,-0.000001;;, + 203;3; 1.000000,-0.000000,-0.000001;;, + 204;3; 1.000000,-0.000000,-0.000000;;, + 205;3; 1.000000, 0.000000,-0.000000;;, + 206;3; 1.000000,-0.000000,-0.000001;;, + 207;3; 1.000000,-0.000000,-0.000001;;, + 208;3; 1.000000,-0.000000,-0.000001;;, + 209;3; 1.000000, 0.000000,-0.000001;;, + 210;3; 1.000000, 0.000000,-0.000000;;, + 211;3; 1.000000, 0.000000,-0.000001;;, + 212;3; 1.000000,-0.000000,-0.000001;;, + 213;3; 1.000000,-0.000000,-0.000001;;, + 214;3; 1.000000,-0.000000,-0.000001;;, + 215;3; 1.000000, 0.000000,-0.000000;;, + 216;3; 1.000000,-0.000000,-0.000000;;, + 217;3; 1.000000,-0.000000,-0.000000;;, + 218;3; 1.000000,-0.000000,-0.000001;;, + 219;3; 1.000000,-0.000000,-0.000001;;, + 220;3; 1.000000, 0.000000,-0.000001;;; + } + AnimationKey { //Rotation + 0; + 221; + 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;, + 1;4; -0.000240, 0.999995,-0.000000,-0.000000;;, + 2;4; -0.000967, 0.999979,-0.000000,-0.000000;;, + 3;4; -0.002182, 0.999952,-0.000000,-0.000000;;, + 4;4; -0.003877, 0.999915,-0.000000,-0.000000;;, + 5;4; -0.006032, 0.999868,-0.000000,-0.000000;;, + 6;4; -0.008609, 0.999812,-0.000000,-0.000000;;, + 7;4; -0.011555, 0.999748,-0.000000,-0.000000;;, + 8;4; -0.014798, 0.999677,-0.000000,-0.000000;;, + 9;4; -0.018250, 0.999602,-0.000000,-0.000000;;, + 10;4; -0.021810, 0.999524,-0.000000,-0.000000;;, + 11;4; -0.025369, 0.999446,-0.000000,-0.000000;;, + 12;4; -0.028821, 0.999371,-0.000000,-0.000000;;, + 13;4; -0.032064, 0.999300,-0.000000,-0.000000;;, + 14;4; -0.035010, 0.999236,-0.000000,-0.000000;;, + 15;4; -0.037588, 0.999180,-0.000000,-0.000000;;, + 16;4; -0.039742, 0.999133,-0.000000,-0.000000;;, + 17;4; -0.041437, 0.999096,-0.000000,-0.000000;;, + 18;4; -0.042652, 0.999069,-0.000000,-0.000000;;, + 19;4; -0.043379, 0.999053,-0.000000,-0.000000;;, + 20;4; -0.043619, 0.999048,-0.000000,-0.000000;;, + 21;4; -0.043379, 0.999053,-0.000000,-0.000000;;, + 22;4; -0.042652, 0.999069,-0.000000,-0.000000;;, + 23;4; -0.041437, 0.999096,-0.000000,-0.000000;;, + 24;4; -0.039742, 0.999133,-0.000000,-0.000000;;, + 25;4; -0.037588, 0.999180,-0.000000,-0.000000;;, + 26;4; -0.035010, 0.999236,-0.000000,-0.000000;;, + 27;4; -0.032064, 0.999300,-0.000000,-0.000000;;, + 28;4; -0.028821, 0.999371,-0.000000,-0.000000;;, + 29;4; -0.025369, 0.999446,-0.000000,-0.000000;;, + 30;4; -0.021810, 0.999524,-0.000000,-0.000000;;, + 31;4; -0.018250, 0.999602,-0.000000,-0.000000;;, + 32;4; -0.014798, 0.999677,-0.000000,-0.000000;;, + 33;4; -0.011555, 0.999748,-0.000000,-0.000000;;, + 34;4; -0.008609, 0.999812,-0.000000,-0.000000;;, + 35;4; -0.006032, 0.999868,-0.000000,-0.000000;;, + 36;4; -0.003877, 0.999915,-0.000000,-0.000000;;, + 37;4; -0.002182, 0.999952,-0.000000,-0.000000;;, + 38;4; -0.000967, 0.999979,-0.000000,-0.000000;;, + 39;4; -0.000240, 0.999995,-0.000000,-0.000000;;, + 40;4; -0.000000, 1.000000,-0.000000,-0.000000;;, + 41;4; -0.000240, 0.999995,-0.000000,-0.000000;;, + 42;4; -0.000967, 0.999979,-0.000000,-0.000000;;, + 43;4; -0.002182, 0.999952,-0.000000,-0.000000;;, + 44;4; -0.003877, 0.999915,-0.000000,-0.000000;;, + 45;4; -0.006032, 0.999868,-0.000000,-0.000000;;, + 46;4; -0.008609, 0.999812,-0.000000,-0.000000;;, + 47;4; -0.011555, 0.999748,-0.000000,-0.000000;;, + 48;4; -0.014798, 0.999677,-0.000000,-0.000000;;, + 49;4; -0.018250, 0.999602,-0.000000,-0.000000;;, + 50;4; -0.021810, 0.999524,-0.000000,-0.000000;;, + 51;4; -0.025369, 0.999446,-0.000000,-0.000000;;, + 52;4; -0.028821, 0.999371,-0.000000,-0.000000;;, + 53;4; -0.032064, 0.999300,-0.000000,-0.000000;;, + 54;4; -0.035010, 0.999236,-0.000000,-0.000000;;, + 55;4; -0.037588, 0.999180,-0.000000,-0.000000;;, + 56;4; -0.039742, 0.999133,-0.000000,-0.000000;;, + 57;4; -0.041437, 0.999096,-0.000000,-0.000000;;, + 58;4; -0.042652, 0.999069,-0.000000,-0.000000;;, + 59;4; -0.043379, 0.999053,-0.000000,-0.000000;;, + 60;4; -0.043619, 0.999048,-0.000000,-0.000000;;, + 61;4; -0.043616, 0.999053,-0.000000,-0.000000;;, + 62;4; -0.043594, 0.999067,-0.000000,-0.000000;;, + 63;4; -0.043536, 0.999089,-0.000000,-0.000000;;, + 64;4; -0.043427, 0.999117,-0.000000,-0.000000;;, + 65;4; -0.043250, 0.999151,-0.000000,-0.000000;;, + 66;4; -0.042989, 0.999191,-0.000000,-0.000000;;, + 67;4; -0.042627, 0.999235,-0.000000,-0.000000;;, + 68;4; -0.042144, 0.999283,-0.000000,-0.000000;;, + 69;4; -0.041519, 0.999336,-0.000000,-0.000000;;, + 70;4; -0.040726, 0.999391,-0.000000,-0.000000;;, + 71;4; -0.039733, 0.999450,-0.000000,-0.000000;;, + 72;4; -0.038501, 0.999511,-0.000000,-0.000000;;, + 73;4; -0.036980, 0.999575,-0.000000,-0.000000;;, + 74;4; -0.035101, 0.999640,-0.000000,-0.000000;;, + 75;4; -0.032770, 0.999707,-0.000000,-0.000000;;, + 76;4; -0.029842, 0.999774,-0.000000,-0.000000;;, + 77;4; -0.026086, 0.999841,-0.000000,-0.000000;;, + 78;4; -0.021070, 0.999906,-0.000000,-0.000000;;, + 79;4; -0.013794, 0.999964,-0.000000,-0.000000;;, + 80;4; -0.000000, 1.000000,-0.000000,-0.000000;;, + 81;4; 0.707107, 0.707107, 0.000000,-0.000000;;, + 82;4; 0.705874, 0.708245, 0.000000,-0.000000;;, + 83;4; 0.703907, 0.710101, 0.000000,-0.000000;;, + 84;4; 0.701752, 0.712152, 0.000000,-0.000000;;, + 85;4; 0.699533, 0.714271, 0.000000,-0.000000;;, + 86;4; 0.697308, 0.716402, 0.000000,-0.000000;;, + 87;4; 0.695107, 0.718513, 0.000000,-0.000000;;, + 88;4; 0.692951, 0.720584, 0.000000,-0.000000;;, + 89;4; 0.690857, 0.722597, 0.000000,-0.000000;;, + 90;4; 0.688837, 0.724539, 0.000000,-0.000000;;, + 91;4; 0.686904, 0.726399, 0.000000,-0.000000;;, + 92;4; 0.685070, 0.728163, 0.000000,-0.000000;;, + 93;4; 0.683348, 0.729820, 0.000000,-0.000000;;, + 94;4; 0.681750, 0.731358, 0.000000,-0.000000;;, + 95;4; 0.680291, 0.732761, 0.000000,-0.000000;;, + 96;4; 0.678987, 0.734015, 0.000000,-0.000000;;, + 97;4; 0.677857, 0.735101, 0.000000,-0.000000;;, + 98;4; 0.676923, 0.735999, 0.000000,-0.000000;;, + 99;4; 0.676211, 0.736682, 0.000000,-0.000000;;, + 100;4; 0.675753, 0.737121, 0.000000,-0.000000;;, + 101;4; 0.675590, 0.737277, 0.000000,-0.000000;;, + 102;4; 0.675764, 0.737111, 0.000000,-0.000000;;, + 103;4; 0.676289, 0.736609, 0.000000,-0.000000;;, + 104;4; 0.677167, 0.735768, 0.000000,-0.000000;;, + 105;4; 0.678392, 0.734596, 0.000000,-0.000000;;, + 106;4; 0.679948, 0.733105, 0.000000,-0.000000;;, + 107;4; 0.681811, 0.731323, 0.000000,-0.000000;;, + 108;4; 0.683939, 0.729285, 0.000000,-0.000000;;, + 109;4; 0.686283, 0.727042, 0.000000,-0.000000;;, + 110;4; 0.688777, 0.724654, 0.000000,-0.000000;;, + 111;4; 0.691348, 0.722192, 0.000000,-0.000000;;, + 112;4; 0.693920, 0.719730, 0.000000,-0.000000;;, + 113;4; 0.696414, 0.717343, 0.000000,-0.000000;;, + 114;4; 0.698758, 0.715099, 0.000000,-0.000000;;, + 115;4; 0.700886, 0.713062, 0.000000,-0.000000;;, + 116;4; 0.702749, 0.711279, 0.000000,-0.000000;;, + 117;4; 0.704305, 0.709789, 0.000000,-0.000000;;, + 118;4; 0.705530, 0.708616, 0.000000,-0.000000;;, + 119;4; 0.706408, 0.707776, 0.000000,-0.000000;;, + 120;4; 0.706933, 0.707273, 0.000000,-0.000000;;, + 121;4; 0.707107, 0.707107, 0.000000,-0.000000;;, + 122;4; 0.706933, 0.707273, 0.000000,-0.000000;;, + 123;4; 0.706408, 0.707776, 0.000000,-0.000000;;, + 124;4; 0.705530, 0.708616, 0.000000,-0.000000;;, + 125;4; 0.704305, 0.709789, 0.000000,-0.000000;;, + 126;4; 0.702749, 0.711279, 0.000000,-0.000000;;, + 127;4; 0.700886, 0.713062, 0.000000,-0.000000;;, + 128;4; 0.698758, 0.715099, 0.000000,-0.000000;;, + 129;4; 0.696414, 0.717343, 0.000000,-0.000000;;, + 130;4; 0.693920, 0.719730, 0.000000,-0.000000;;, + 131;4; 0.691348, 0.722192, 0.000000,-0.000000;;, + 132;4; 0.688777, 0.724654, 0.000000,-0.000000;;, + 133;4; 0.686283, 0.727042, 0.000000,-0.000000;;, + 134;4; 0.683939, 0.729285, 0.000000,-0.000000;;, + 135;4; 0.681811, 0.731323, 0.000000,-0.000000;;, + 136;4; 0.679948, 0.733105, 0.000000,-0.000000;;, + 137;4; 0.678392, 0.734596, 0.000000,-0.000000;;, + 138;4; 0.677167, 0.735768, 0.000000,-0.000000;;, + 139;4; 0.676289, 0.736609, 0.000000,-0.000000;;, + 140;4; 0.675764, 0.737111, 0.000000,-0.000000;;, + 141;4; 0.675590, 0.737277, 0.000000,-0.000000;;, + 142;4; 0.675753, 0.737121, 0.000000,-0.000000;;, + 143;4; 0.676211, 0.736682, 0.000000,-0.000000;;, + 144;4; 0.676923, 0.735999, 0.000000,-0.000000;;, + 145;4; 0.677857, 0.735101, 0.000000,-0.000000;;, + 146;4; 0.678987, 0.734015, 0.000000,-0.000000;;, + 147;4; 0.680291, 0.732761, 0.000000,-0.000000;;, + 148;4; 0.681750, 0.731357, 0.000000,-0.000000;;, + 149;4; 0.683348, 0.729820, 0.000000,-0.000000;;, + 150;4; 0.685070, 0.728163, 0.000000,-0.000000;;, + 151;4; 0.686904, 0.726398, 0.000000,-0.000000;;, + 152;4; 0.688837, 0.724539, 0.000000,-0.000000;;, + 153;4; 0.690857, 0.722596, 0.000000,-0.000000;;, + 154;4; 0.692951, 0.720583, 0.000000,-0.000000;;, + 155;4; 0.695107, 0.718512, 0.000000,-0.000000;;, + 156;4; 0.697308, 0.716401, 0.000000,-0.000000;;, + 157;4; 0.699533, 0.714270, 0.000000,-0.000000;;, + 158;4; 0.701752, 0.712151, 0.000000,-0.000000;;, + 159;4; 0.703907, 0.710100, 0.000000,-0.000000;;, + 160;4; 0.705874, 0.708244, 0.000000,-0.000000;;, + 161;4; 0.707107, 0.707107, 0.000000,-0.000000;;, + 162;4; -0.000000, 0.991445, 0.130526,-0.000000;;, + 163;4; -0.000000, 0.991445, 0.130526,-0.000000;;, + 164;4; -0.000000, 0.991445, 0.130526,-0.000000;;, + 165;4; -0.000000, 0.991445, 0.130526,-0.000000;;, + 166;4; -0.000000, 0.991445, 0.130526,-0.000000;;, + 167;4; -0.000000, 0.991445, 0.130526,-0.000000;;, + 168;4; -0.000000, 1.000000, 0.000000,-0.000000;;, + 169;4; 0.034052, 0.993234, 0.000000,-0.000000;;, + 170;4; 0.129903, 0.974175, 0.000000,-0.000000;;, + 171;4; 0.252901, 0.949704, 0.000000,-0.000000;;, + 172;4; 0.348675, 0.930646, 0.000000,-0.000000;;, + 173;4; 0.382683, 0.923880, 0.000000,-0.000000;;, + 174;4; 0.361005, 0.930646, 0.000000,-0.000000;;, + 175;4; 0.294618, 0.949704, 0.000000,-0.000000;;, + 176;4; 0.194899, 0.974175, 0.000000,-0.000000;;, + 177;4; 0.088939, 0.993234, 0.000000,-0.000000;;, + 178;4; -0.000000, 1.000000, 0.000000,-0.000000;;, + 179;4; -0.088939, 0.993234,-0.000000,-0.000000;;, + 180;4; -0.194899, 0.974175,-0.000000,-0.000000;;, + 181;4; -0.294618, 0.949704,-0.000000,-0.000000;;, + 182;4; -0.361005, 0.930646,-0.000000,-0.000000;;, + 183;4; -0.382683, 0.923880,-0.000000,-0.000000;;, + 184;4; -0.348675, 0.930646,-0.000000,-0.000000;;, + 185;4; -0.252901, 0.949704,-0.000000,-0.000000;;, + 186;4; -0.129903, 0.974175,-0.000000,-0.000000;;, + 187;4; -0.034052, 0.993233,-0.000000,-0.000000;;, + 188;4; -0.000000, 1.000000, 0.000000,-0.000000;;, + 189;4; -0.000000, 1.000000,-0.000000,-0.000000;;, + 190;4; 0.003877, 0.999915, 0.000000,-0.000000;;, + 191;4; 0.014798, 0.999677, 0.000000,-0.000000;;, + 192;4; 0.028821, 0.999371, 0.000000,-0.000000;;, + 193;4; 0.039742, 0.999133, 0.000000,-0.000000;;, + 194;4; 0.043619, 0.999048, 0.000000,-0.000000;;, + 195;4; 0.039742, 0.999133, 0.000000,-0.000000;;, + 196;4; 0.028821, 0.999371, 0.000000,-0.000000;;, + 197;4; 0.014798, 0.999677, 0.000000,-0.000000;;, + 198;4; 0.003877, 0.999915, 0.000000,-0.000000;;, + 199;4; -0.000000, 1.000000, 0.000000,-0.000000;;, + 200;4; -0.000000, 1.000000, 0.000000,-0.000000;;, + 201;4; 0.034052, 0.993233, 0.000000,-0.000000;;, + 202;4; 0.129903, 0.974175, 0.000000,-0.000000;;, + 203;4; 0.252901, 0.949704, 0.000000,-0.000000;;, + 204;4; 0.348675, 0.930646, 0.000000,-0.000000;;, + 205;4; 0.382683, 0.923880, 0.000000,-0.000000;;, + 206;4; 0.361005, 0.930646, 0.000000,-0.000000;;, + 207;4; 0.294618, 0.949704, 0.000000,-0.000000;;, + 208;4; 0.194899, 0.974175, 0.000000,-0.000000;;, + 209;4; 0.088939, 0.993234, 0.000000,-0.000000;;, + 210;4; -0.000000, 1.000000, 0.000000,-0.000000;;, + 211;4; -0.088939, 0.993234,-0.000000,-0.000000;;, + 212;4; -0.194899, 0.974175,-0.000000,-0.000000;;, + 213;4; -0.294618, 0.949704,-0.000000,-0.000000;;, + 214;4; -0.361005, 0.930646,-0.000000,-0.000000;;, + 215;4; -0.382683, 0.923880,-0.000000,-0.000000;;, + 216;4; -0.348699, 0.930646,-0.000000,-0.000000;;, + 217;4; -0.253041, 0.949703,-0.000000,-0.000000;;, + 218;4; -0.130122, 0.974173,-0.000000,-0.000000;;, + 219;4; -0.034158, 0.993233,-0.000000,-0.000000;;, + 220;4; -0.000000, 1.000000, 0.000000,-0.000000;;; + } + AnimationKey { //Scale + 1; + 221; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;, + 189;3; 1.000000, 1.000000, 1.000000;;, + 190;3; 1.000000, 1.000000, 1.000000;;, + 191;3; 1.000000, 1.000000, 1.000000;;, + 192;3; 1.000000, 1.000000, 1.000000;;, + 193;3; 1.000000, 1.000000, 1.000000;;, + 194;3; 1.000000, 1.000000, 1.000000;;, + 195;3; 1.000000, 1.000000, 1.000000;;, + 196;3; 1.000000, 1.000000, 1.000000;;, + 197;3; 1.000000, 1.000000, 1.000000;;, + 198;3; 1.000000, 1.000000, 1.000000;;, + 199;3; 1.000000, 1.000000, 1.000000;;, + 200;3; 1.000000, 1.000000, 1.000000;;, + 201;3; 1.000000, 1.000000, 1.000000;;, + 202;3; 1.000000, 1.000000, 1.000000;;, + 203;3; 1.000000, 1.000000, 1.000000;;, + 204;3; 1.000000, 1.000000, 1.000000;;, + 205;3; 1.000000, 1.000000, 1.000000;;, + 206;3; 1.000000, 1.000000, 1.000000;;, + 207;3; 1.000000, 1.000000, 1.000000;;, + 208;3; 1.000000, 1.000000, 1.000000;;, + 209;3; 1.000000, 1.000000, 1.000000;;, + 210;3; 1.000000, 1.000000, 1.000000;;, + 211;3; 1.000000, 1.000000, 1.000000;;, + 212;3; 1.000000, 1.000000, 1.000000;;, + 213;3; 1.000000, 1.000000, 1.000000;;, + 214;3; 1.000000, 1.000000, 1.000000;;, + 215;3; 1.000000, 1.000000, 1.000000;;, + 216;3; 1.000000, 1.000000, 1.000000;;, + 217;3; 1.000000, 1.000000, 1.000000;;, + 218;3; 1.000000, 1.000000, 1.000000;;, + 219;3; 1.000000, 1.000000, 1.000000;;, + 220;3; 1.000000, 1.000000, 1.000000;;; + } + } + Animation { + {Armature_Leg_Right} + AnimationKey { //Position + 2; + 221; + 0;3; -1.000000, 0.000000,-0.000001;;, + 1;3; -1.000000, 0.000000,-0.000001;;, + 2;3; -1.000000,-0.000000,-0.000001;;, + 3;3; -1.000000,-0.000000,-0.000001;;, + 4;3; -1.000000,-0.000000,-0.000001;;, + 5;3; -1.000000,-0.000000,-0.000001;;, + 6;3; -1.000000,-0.000000,-0.000001;;, + 7;3; -1.000000, 0.000000,-0.000001;;, + 8;3; -1.000000,-0.000000,-0.000001;;, + 9;3; -1.000000,-0.000000,-0.000001;;, + 10;3; -1.000000,-0.000000,-0.000001;;, + 11;3; -1.000000,-0.000000,-0.000001;;, + 12;3; -1.000000,-0.000000,-0.000001;;, + 13;3; -1.000000, 0.000000,-0.000001;;, + 14;3; -1.000000,-0.000000,-0.000001;;, + 15;3; -1.000000,-0.000000,-0.000001;;, + 16;3; -1.000000,-0.000000,-0.000000;;, + 17;3; -1.000000,-0.000000,-0.000001;;, + 18;3; -1.000000, 0.000000,-0.000000;;, + 19;3; -1.000000,-0.000000,-0.000001;;, + 20;3; -1.000000, 0.000000,-0.000000;;, + 21;3; -1.000000,-0.000000,-0.000001;;, + 22;3; -1.000000, 0.000000,-0.000000;;, + 23;3; -1.000000,-0.000000,-0.000001;;, + 24;3; -1.000000,-0.000000,-0.000001;;, + 25;3; -1.000000,-0.000000,-0.000000;;, + 26;3; -1.000000,-0.000000,-0.000000;;, + 27;3; -1.000000, 0.000000,-0.000001;;, + 28;3; -1.000000,-0.000000,-0.000001;;, + 29;3; -1.000000,-0.000000,-0.000001;;, + 30;3; -1.000000,-0.000000,-0.000001;;, + 31;3; -1.000000,-0.000000,-0.000001;;, + 32;3; -1.000000,-0.000000,-0.000001;;, + 33;3; -1.000000, 0.000000,-0.000001;;, + 34;3; -1.000000,-0.000000,-0.000001;;, + 35;3; -1.000000,-0.000000,-0.000001;;, + 36;3; -1.000000,-0.000000,-0.000001;;, + 37;3; -1.000000,-0.000000,-0.000001;;, + 38;3; -1.000000,-0.000000,-0.000001;;, + 39;3; -1.000000, 0.000000,-0.000001;;, + 40;3; -1.000000, 0.000000,-0.000001;;, + 41;3; -1.000000, 0.000000,-0.000001;;, + 42;3; -1.000000,-0.000000,-0.000001;;, + 43;3; -1.000000,-0.000000,-0.000001;;, + 44;3; -1.000000,-0.000000,-0.000001;;, + 45;3; -1.000000,-0.000000,-0.000001;;, + 46;3; -1.000000,-0.000000,-0.000001;;, + 47;3; -1.000000, 0.000000,-0.000001;;, + 48;3; -1.000000,-0.000000,-0.000001;;, + 49;3; -1.000000,-0.000000,-0.000001;;, + 50;3; -1.000000,-0.000000,-0.000001;;, + 51;3; -1.000000,-0.000000,-0.000001;;, + 52;3; -1.000000,-0.000000,-0.000001;;, + 53;3; -1.000000, 0.000000,-0.000001;;, + 54;3; -1.000000,-0.000000,-0.000001;;, + 55;3; -1.000000,-0.000000,-0.000001;;, + 56;3; -1.000000,-0.000000,-0.000000;;, + 57;3; -1.000000,-0.000000,-0.000001;;, + 58;3; -1.000000, 0.000000,-0.000000;;, + 59;3; -1.000000,-0.000000,-0.000001;;, + 60;3; -1.000000, 0.000000,-0.000000;;, + 61;3; -1.000000, 0.000000,-0.000001;;, + 62;3; -1.000000,-0.000000,-0.000001;;, + 63;3; -1.000000,-0.000000,-0.000000;;, + 64;3; -1.000000, 0.000000,-0.000000;;, + 65;3; -1.000000,-0.000000,-0.000001;;, + 66;3; -1.000000,-0.000000,-0.000001;;, + 67;3; -1.000000,-0.000000,-0.000001;;, + 68;3; -1.000000, 0.000000,-0.000001;;, + 69;3; -1.000000,-0.000000,-0.000000;;, + 70;3; -1.000000,-0.000000,-0.000000;;, + 71;3; -1.000000,-0.000000,-0.000001;;, + 72;3; -1.000000,-0.000000,-0.000001;;, + 73;3; -1.000000, 0.000000,-0.000000;;, + 74;3; -1.000000,-0.000000,-0.000001;;, + 75;3; -1.000000, 0.000000,-0.000001;;, + 76;3; -1.000000,-0.000000,-0.000001;;, + 77;3; -1.000000,-0.000000,-0.000001;;, + 78;3; -1.000000, 0.000000,-0.000001;;, + 79;3; -1.000000,-0.000000,-0.000001;;, + 80;3; -1.000000, 0.000000,-0.000001;;, + 81;3; -1.000000, 0.000000,-0.000001;;, + 82;3; -1.000000,-0.000000,-0.000001;;, + 83;3; -1.000000,-0.000000,-0.000001;;, + 84;3; -1.000000,-0.000000,-0.000001;;, + 85;3; -1.000000,-0.000000,-0.000001;;, + 86;3; -1.000000,-0.000000,-0.000001;;, + 87;3; -1.000000,-0.000000,-0.000001;;, + 88;3; -1.000000,-0.000000,-0.000001;;, + 89;3; -1.000000,-0.000000,-0.000001;;, + 90;3; -1.000000,-0.000000,-0.000001;;, + 91;3; -1.000000,-0.000000,-0.000001;;, + 92;3; -1.000000,-0.000000,-0.000001;;, + 93;3; -1.000000,-0.000000,-0.000001;;, + 94;3; -1.000000,-0.000000,-0.000001;;, + 95;3; -1.000000,-0.000000,-0.000001;;, + 96;3; -1.000000,-0.000000,-0.000001;;, + 97;3; -1.000000,-0.000000,-0.000001;;, + 98;3; -1.000000,-0.000000,-0.000001;;, + 99;3; -1.000000,-0.000000,-0.000001;;, + 100;3; -1.000000,-0.000000,-0.000001;;, + 101;3; -1.000000,-0.000000,-0.000001;;, + 102;3; -1.000000,-0.000000,-0.000001;;, + 103;3; -1.000000,-0.000000,-0.000001;;, + 104;3; -1.000000,-0.000000,-0.000001;;, + 105;3; -1.000000,-0.000000,-0.000001;;, + 106;3; -1.000000,-0.000000,-0.000001;;, + 107;3; -1.000000,-0.000000,-0.000001;;, + 108;3; -1.000000,-0.000000,-0.000001;;, + 109;3; -1.000000,-0.000000,-0.000001;;, + 110;3; -1.000000,-0.000000,-0.000001;;, + 111;3; -1.000000,-0.000000,-0.000001;;, + 112;3; -1.000000,-0.000000,-0.000001;;, + 113;3; -1.000000,-0.000000,-0.000001;;, + 114;3; -1.000000,-0.000000,-0.000001;;, + 115;3; -1.000000,-0.000000,-0.000001;;, + 116;3; -1.000000,-0.000000,-0.000001;;, + 117;3; -1.000000,-0.000000,-0.000001;;, + 118;3; -1.000000,-0.000000,-0.000001;;, + 119;3; -1.000000,-0.000000,-0.000001;;, + 120;3; -1.000000,-0.000000,-0.000001;;, + 121;3; -1.000000, 0.000000,-0.000001;;, + 122;3; -1.000000,-0.000000,-0.000001;;, + 123;3; -1.000000,-0.000000,-0.000001;;, + 124;3; -1.000000,-0.000000,-0.000001;;, + 125;3; -1.000000,-0.000000,-0.000001;;, + 126;3; -1.000000,-0.000000,-0.000001;;, + 127;3; -1.000000,-0.000000,-0.000001;;, + 128;3; -1.000000,-0.000000,-0.000001;;, + 129;3; -1.000000,-0.000000,-0.000001;;, + 130;3; -1.000000,-0.000000,-0.000001;;, + 131;3; -1.000000,-0.000000,-0.000001;;, + 132;3; -1.000000,-0.000000,-0.000001;;, + 133;3; -1.000000,-0.000000,-0.000001;;, + 134;3; -1.000000,-0.000000,-0.000001;;, + 135;3; -1.000000,-0.000000,-0.000001;;, + 136;3; -1.000000,-0.000000,-0.000001;;, + 137;3; -1.000000,-0.000000,-0.000001;;, + 138;3; -1.000000,-0.000000,-0.000001;;, + 139;3; -1.000000,-0.000000,-0.000001;;, + 140;3; -1.000000,-0.000000,-0.000001;;, + 141;3; -1.000000,-0.000000,-0.000001;;, + 142;3; -1.000000,-0.000000,-0.000001;;, + 143;3; -1.000000,-0.000000,-0.000001;;, + 144;3; -1.000000,-0.000000,-0.000001;;, + 145;3; -1.000000,-0.000000,-0.000001;;, + 146;3; -1.000000,-0.000000,-0.000001;;, + 147;3; -1.000000,-0.000000,-0.000001;;, + 148;3; -1.000000,-0.000000,-0.000001;;, + 149;3; -1.000000,-0.000000,-0.000001;;, + 150;3; -1.000000,-0.000000,-0.000001;;, + 151;3; -1.000000,-0.000000,-0.000001;;, + 152;3; -1.000000,-0.000000,-0.000001;;, + 153;3; -1.000000,-0.000000,-0.000001;;, + 154;3; -1.000000,-0.000000,-0.000001;;, + 155;3; -1.000000,-0.000000,-0.000001;;, + 156;3; -1.000000,-0.000000,-0.000001;;, + 157;3; -1.000000,-0.000000,-0.000001;;, + 158;3; -1.000000,-0.000000,-0.000001;;, + 159;3; -1.000000,-0.000000,-0.000001;;, + 160;3; -1.000000,-0.000000,-0.000001;;, + 161;3; -1.000000, 0.000000,-0.000001;;, + 162;3; -1.000000,-0.000000,-0.000001;;, + 163;3; -1.000000,-0.000000,-0.000001;;, + 164;3; -1.000000,-0.000000,-0.000001;;, + 165;3; -1.000000,-0.000000,-0.000001;;, + 166;3; -1.000000,-0.000000,-0.000001;;, + 167;3; -1.000000,-0.000000,-0.000001;;, + 168;3; -1.000000, 0.000000,-0.000001;;, + 169;3; -1.000000, 0.000000,-0.000001;;, + 170;3; -1.000000, 0.000000,-0.000001;;, + 171;3; -1.000000, 0.000000,-0.000001;;, + 172;3; -1.000000, 0.000000,-0.000001;;, + 173;3; -1.000000, 0.000000,-0.000001;;, + 174;3; -1.000000, 0.000000,-0.000001;;, + 175;3; -1.000000, 0.000000,-0.000001;;, + 176;3; -1.000000, 0.000000,-0.000001;;, + 177;3; -1.000000, 0.000000,-0.000001;;, + 178;3; -1.000000, 0.000000,-0.000001;;, + 179;3; -1.000000, 0.000000,-0.000001;;, + 180;3; -1.000000, 0.000000,-0.000001;;, + 181;3; -1.000000, 0.000000,-0.000001;;, + 182;3; -1.000000, 0.000000,-0.000001;;, + 183;3; -1.000000, 0.000000,-0.000001;;, + 184;3; -1.000000, 0.000000,-0.000001;;, + 185;3; -1.000000, 0.000000,-0.000001;;, + 186;3; -1.000000, 0.000000,-0.000001;;, + 187;3; -1.000000, 0.000000,-0.000001;;, + 188;3; -1.000000, 0.000000,-0.000001;;, + 189;3; -1.000000, 0.000000,-0.000001;;, + 190;3; -1.000000,-0.000000,-0.000001;;, + 191;3; -1.000000,-0.000000,-0.000001;;, + 192;3; -1.000000,-0.000000,-0.000001;;, + 193;3; -1.000000, 0.000000,-0.000001;;, + 194;3; -1.000000, 0.000000,-0.000000;;, + 195;3; -1.000000, 0.000000,-0.000001;;, + 196;3; -1.000000,-0.000000,-0.000000;;, + 197;3; -1.000000,-0.000000,-0.000001;;, + 198;3; -1.000000,-0.000000,-0.000001;;, + 199;3; -1.000000, 0.000000,-0.000001;;, + 200;3; -1.000000, 0.000000,-0.000001;;, + 201;3; -1.000000,-0.000000,-0.000001;;, + 202;3; -1.000000,-0.000000,-0.000001;;, + 203;3; -1.000000,-0.000000,-0.000001;;, + 204;3; -1.000000,-0.000000,-0.000000;;, + 205;3; -1.000000, 0.000000,-0.000000;;, + 206;3; -1.000000,-0.000000,-0.000001;;, + 207;3; -1.000000,-0.000000,-0.000001;;, + 208;3; -1.000000,-0.000000,-0.000001;;, + 209;3; -1.000000, 0.000000,-0.000001;;, + 210;3; -1.000000, 0.000000,-0.000000;;, + 211;3; -1.000000, 0.000000,-0.000001;;, + 212;3; -1.000000,-0.000000,-0.000001;;, + 213;3; -1.000000,-0.000000,-0.000001;;, + 214;3; -1.000000,-0.000000,-0.000001;;, + 215;3; -1.000000, 0.000000,-0.000000;;, + 216;3; -1.000000,-0.000000,-0.000000;;, + 217;3; -1.000000,-0.000000,-0.000000;;, + 218;3; -1.000000,-0.000000,-0.000001;;, + 219;3; -1.000000,-0.000000,-0.000001;;, + 220;3; -1.000000, 0.000000,-0.000001;;; + } + AnimationKey { //Rotation + 0; + 221; + 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;, + 1;4; -0.000240, 0.999995,-0.000000,-0.000000;;, + 2;4; -0.000967, 0.999979,-0.000000,-0.000000;;, + 3;4; -0.002182, 0.999952,-0.000000,-0.000000;;, + 4;4; -0.003877, 0.999915,-0.000000,-0.000000;;, + 5;4; -0.006032, 0.999868,-0.000000,-0.000000;;, + 6;4; -0.008609, 0.999812,-0.000000,-0.000000;;, + 7;4; -0.011555, 0.999748,-0.000000,-0.000000;;, + 8;4; -0.014798, 0.999677,-0.000000,-0.000000;;, + 9;4; -0.018250, 0.999602,-0.000000,-0.000000;;, + 10;4; -0.021810, 0.999524,-0.000000,-0.000000;;, + 11;4; -0.025369, 0.999446,-0.000000,-0.000000;;, + 12;4; -0.028821, 0.999371,-0.000000,-0.000000;;, + 13;4; -0.032064, 0.999300,-0.000000,-0.000000;;, + 14;4; -0.035010, 0.999236,-0.000000,-0.000000;;, + 15;4; -0.037588, 0.999180,-0.000000,-0.000000;;, + 16;4; -0.039742, 0.999133,-0.000000,-0.000000;;, + 17;4; -0.041437, 0.999096,-0.000000,-0.000000;;, + 18;4; -0.042652, 0.999069,-0.000000,-0.000000;;, + 19;4; -0.043379, 0.999053,-0.000000,-0.000000;;, + 20;4; -0.043619, 0.999048,-0.000000,-0.000000;;, + 21;4; -0.043379, 0.999053,-0.000000,-0.000000;;, + 22;4; -0.042652, 0.999069,-0.000000,-0.000000;;, + 23;4; -0.041437, 0.999096,-0.000000,-0.000000;;, + 24;4; -0.039742, 0.999133,-0.000000,-0.000000;;, + 25;4; -0.037588, 0.999180,-0.000000,-0.000000;;, + 26;4; -0.035010, 0.999236,-0.000000,-0.000000;;, + 27;4; -0.032064, 0.999300,-0.000000,-0.000000;;, + 28;4; -0.028821, 0.999371,-0.000000,-0.000000;;, + 29;4; -0.025369, 0.999446,-0.000000,-0.000000;;, + 30;4; -0.021810, 0.999524,-0.000000,-0.000000;;, + 31;4; -0.018250, 0.999602,-0.000000,-0.000000;;, + 32;4; -0.014798, 0.999677,-0.000000,-0.000000;;, + 33;4; -0.011555, 0.999748,-0.000000,-0.000000;;, + 34;4; -0.008609, 0.999812,-0.000000,-0.000000;;, + 35;4; -0.006032, 0.999868,-0.000000,-0.000000;;, + 36;4; -0.003877, 0.999915,-0.000000,-0.000000;;, + 37;4; -0.002182, 0.999952,-0.000000,-0.000000;;, + 38;4; -0.000967, 0.999979,-0.000000,-0.000000;;, + 39;4; -0.000240, 0.999995,-0.000000,-0.000000;;, + 40;4; -0.000000, 1.000000,-0.000000,-0.000000;;, + 41;4; -0.000240, 0.999995,-0.000000,-0.000000;;, + 42;4; -0.000967, 0.999979,-0.000000,-0.000000;;, + 43;4; -0.002182, 0.999952,-0.000000,-0.000000;;, + 44;4; -0.003877, 0.999915,-0.000000,-0.000000;;, + 45;4; -0.006032, 0.999868,-0.000000,-0.000000;;, + 46;4; -0.008609, 0.999812,-0.000000,-0.000000;;, + 47;4; -0.011555, 0.999748,-0.000000,-0.000000;;, + 48;4; -0.014798, 0.999677,-0.000000,-0.000000;;, + 49;4; -0.018250, 0.999602,-0.000000,-0.000000;;, + 50;4; -0.021810, 0.999524,-0.000000,-0.000000;;, + 51;4; -0.025369, 0.999446,-0.000000,-0.000000;;, + 52;4; -0.028821, 0.999371,-0.000000,-0.000000;;, + 53;4; -0.032064, 0.999300,-0.000000,-0.000000;;, + 54;4; -0.035010, 0.999236,-0.000000,-0.000000;;, + 55;4; -0.037588, 0.999180,-0.000000,-0.000000;;, + 56;4; -0.039742, 0.999133,-0.000000,-0.000000;;, + 57;4; -0.041437, 0.999096,-0.000000,-0.000000;;, + 58;4; -0.042652, 0.999069,-0.000000,-0.000000;;, + 59;4; -0.043379, 0.999053,-0.000000,-0.000000;;, + 60;4; -0.043619, 0.999048,-0.000000,-0.000000;;, + 61;4; -0.043616, 0.999053,-0.000000,-0.000000;;, + 62;4; -0.043594, 0.999067,-0.000000,-0.000000;;, + 63;4; -0.043536, 0.999089,-0.000000,-0.000000;;, + 64;4; -0.043427, 0.999117,-0.000000,-0.000000;;, + 65;4; -0.043250, 0.999151,-0.000000,-0.000000;;, + 66;4; -0.042989, 0.999191,-0.000000,-0.000000;;, + 67;4; -0.042627, 0.999235,-0.000000,-0.000000;;, + 68;4; -0.042144, 0.999283,-0.000000,-0.000000;;, + 69;4; -0.041519, 0.999336,-0.000000,-0.000000;;, + 70;4; -0.040726, 0.999391,-0.000000,-0.000000;;, + 71;4; -0.039733, 0.999450,-0.000000,-0.000000;;, + 72;4; -0.038501, 0.999511,-0.000000,-0.000000;;, + 73;4; -0.036980, 0.999575,-0.000000,-0.000000;;, + 74;4; -0.035101, 0.999640,-0.000000,-0.000000;;, + 75;4; -0.032770, 0.999707,-0.000000,-0.000000;;, + 76;4; -0.029842, 0.999774,-0.000000,-0.000000;;, + 77;4; -0.026086, 0.999841,-0.000000,-0.000000;;, + 78;4; -0.021070, 0.999906,-0.000000,-0.000000;;, + 79;4; -0.013794, 0.999964,-0.000000,-0.000000;;, + 80;4; -0.000000, 1.000000,-0.000000,-0.000000;;, + 81;4; 0.707107, 0.707107, 0.000000,-0.000000;;, + 82;4; 0.705874, 0.708245, 0.000000,-0.000000;;, + 83;4; 0.703907, 0.710101, 0.000000,-0.000000;;, + 84;4; 0.701752, 0.712152, 0.000000,-0.000000;;, + 85;4; 0.699533, 0.714271, 0.000000,-0.000000;;, + 86;4; 0.697308, 0.716402, 0.000000,-0.000000;;, + 87;4; 0.695107, 0.718513, 0.000000,-0.000000;;, + 88;4; 0.692951, 0.720584, 0.000000,-0.000000;;, + 89;4; 0.690857, 0.722597, 0.000000,-0.000000;;, + 90;4; 0.688837, 0.724539, 0.000000,-0.000000;;, + 91;4; 0.686904, 0.726399, 0.000000,-0.000000;;, + 92;4; 0.685070, 0.728163, 0.000000,-0.000000;;, + 93;4; 0.683348, 0.729820, 0.000000,-0.000000;;, + 94;4; 0.681750, 0.731358, 0.000000,-0.000000;;, + 95;4; 0.680291, 0.732761, 0.000000,-0.000000;;, + 96;4; 0.678987, 0.734015, 0.000000,-0.000000;;, + 97;4; 0.677857, 0.735101, 0.000000,-0.000000;;, + 98;4; 0.676923, 0.735999, 0.000000,-0.000000;;, + 99;4; 0.676211, 0.736682, 0.000000,-0.000000;;, + 100;4; 0.675753, 0.737121, 0.000000,-0.000000;;, + 101;4; 0.675590, 0.737277, 0.000000,-0.000000;;, + 102;4; 0.675764, 0.737111, 0.000000,-0.000000;;, + 103;4; 0.676289, 0.736609, 0.000000,-0.000000;;, + 104;4; 0.677167, 0.735768, 0.000000,-0.000000;;, + 105;4; 0.678392, 0.734596, 0.000000,-0.000000;;, + 106;4; 0.679948, 0.733105, 0.000000,-0.000000;;, + 107;4; 0.681811, 0.731323, 0.000000,-0.000000;;, + 108;4; 0.683939, 0.729285, 0.000000,-0.000000;;, + 109;4; 0.686283, 0.727042, 0.000000,-0.000000;;, + 110;4; 0.688777, 0.724654, 0.000000,-0.000000;;, + 111;4; 0.691348, 0.722192, 0.000000,-0.000000;;, + 112;4; 0.693920, 0.719730, 0.000000,-0.000000;;, + 113;4; 0.696414, 0.717343, 0.000000,-0.000000;;, + 114;4; 0.698758, 0.715099, 0.000000,-0.000000;;, + 115;4; 0.700886, 0.713062, 0.000000,-0.000000;;, + 116;4; 0.702749, 0.711279, 0.000000,-0.000000;;, + 117;4; 0.704305, 0.709789, 0.000000,-0.000000;;, + 118;4; 0.705530, 0.708616, 0.000000,-0.000000;;, + 119;4; 0.706408, 0.707776, 0.000000,-0.000000;;, + 120;4; 0.706933, 0.707273, 0.000000,-0.000000;;, + 121;4; 0.707107, 0.707107, 0.000000,-0.000000;;, + 122;4; 0.706933, 0.707273, 0.000000,-0.000000;;, + 123;4; 0.706408, 0.707776, 0.000000,-0.000000;;, + 124;4; 0.705530, 0.708616, 0.000000,-0.000000;;, + 125;4; 0.704305, 0.709789, 0.000000,-0.000000;;, + 126;4; 0.702749, 0.711279, 0.000000,-0.000000;;, + 127;4; 0.700886, 0.713062, 0.000000,-0.000000;;, + 128;4; 0.698758, 0.715099, 0.000000,-0.000000;;, + 129;4; 0.696414, 0.717343, 0.000000,-0.000000;;, + 130;4; 0.693920, 0.719730, 0.000000,-0.000000;;, + 131;4; 0.691348, 0.722192, 0.000000,-0.000000;;, + 132;4; 0.688777, 0.724654, 0.000000,-0.000000;;, + 133;4; 0.686283, 0.727042, 0.000000,-0.000000;;, + 134;4; 0.683939, 0.729285, 0.000000,-0.000000;;, + 135;4; 0.681811, 0.731323, 0.000000,-0.000000;;, + 136;4; 0.679948, 0.733105, 0.000000,-0.000000;;, + 137;4; 0.678392, 0.734596, 0.000000,-0.000000;;, + 138;4; 0.677167, 0.735768, 0.000000,-0.000000;;, + 139;4; 0.676289, 0.736609, 0.000000,-0.000000;;, + 140;4; 0.675764, 0.737111, 0.000000,-0.000000;;, + 141;4; 0.675590, 0.737277, 0.000000,-0.000000;;, + 142;4; 0.675753, 0.737121, 0.000000,-0.000000;;, + 143;4; 0.676211, 0.736682, 0.000000,-0.000000;;, + 144;4; 0.676923, 0.735999, 0.000000,-0.000000;;, + 145;4; 0.677857, 0.735101, 0.000000,-0.000000;;, + 146;4; 0.678987, 0.734015, 0.000000,-0.000000;;, + 147;4; 0.680291, 0.732761, 0.000000,-0.000000;;, + 148;4; 0.681750, 0.731357, 0.000000,-0.000000;;, + 149;4; 0.683348, 0.729820, 0.000000,-0.000000;;, + 150;4; 0.685070, 0.728163, 0.000000,-0.000000;;, + 151;4; 0.686904, 0.726398, 0.000000,-0.000000;;, + 152;4; 0.688837, 0.724539, 0.000000,-0.000000;;, + 153;4; 0.690857, 0.722596, 0.000000,-0.000000;;, + 154;4; 0.692951, 0.720583, 0.000000,-0.000000;;, + 155;4; 0.695107, 0.718512, 0.000000,-0.000000;;, + 156;4; 0.697308, 0.716401, 0.000000,-0.000000;;, + 157;4; 0.699533, 0.714270, 0.000000,-0.000000;;, + 158;4; 0.701752, 0.712151, 0.000000,-0.000000;;, + 159;4; 0.703907, 0.710100, 0.000000,-0.000000;;, + 160;4; 0.705874, 0.708244, 0.000000,-0.000000;;, + 161;4; 0.707107, 0.707107, 0.000000,-0.000000;;, + 162;4; -0.000000, 0.991445,-0.130526,-0.000000;;, + 163;4; -0.000000, 0.991445,-0.130526,-0.000000;;, + 164;4; -0.000000, 0.991445,-0.130526,-0.000000;;, + 165;4; -0.000000, 0.991445,-0.130526,-0.000000;;, + 166;4; -0.000000, 0.991445,-0.130526,-0.000000;;, + 167;4; -0.000000, 0.991445,-0.130526,-0.000000;;, + 168;4; -0.000000, 1.000000,-0.000000,-0.000000;;, + 169;4; -0.034052, 0.993234,-0.000000,-0.000000;;, + 170;4; -0.129904, 0.974175,-0.000000,-0.000000;;, + 171;4; -0.252901, 0.949704,-0.000000,-0.000000;;, + 172;4; -0.348675, 0.930646,-0.000000,-0.000000;;, + 173;4; -0.382683, 0.923880,-0.000000,-0.000000;;, + 174;4; -0.361005, 0.930646,-0.000000,-0.000000;;, + 175;4; -0.294618, 0.949704,-0.000000,-0.000000;;, + 176;4; -0.194899, 0.974175,-0.000000,-0.000000;;, + 177;4; -0.088939, 0.993234,-0.000000,-0.000000;;, + 178;4; -0.000000, 1.000000,-0.000000,-0.000000;;, + 179;4; 0.088939, 0.993234, 0.000000,-0.000000;;, + 180;4; 0.194899, 0.974175, 0.000000,-0.000000;;, + 181;4; 0.294618, 0.949704, 0.000000,-0.000000;;, + 182;4; 0.361005, 0.930646, 0.000000,-0.000000;;, + 183;4; 0.382683, 0.923880, 0.000000,-0.000000;;, + 184;4; 0.348675, 0.930646, 0.000000,-0.000000;;, + 185;4; 0.252901, 0.949704, 0.000000,-0.000000;;, + 186;4; 0.129903, 0.974175, 0.000000,-0.000000;;, + 187;4; 0.034052, 0.993233, 0.000000,-0.000000;;, + 188;4; -0.000000, 1.000000, 0.000000,-0.000000;;, + 189;4; -0.000000, 1.000000,-0.000000,-0.000000;;, + 190;4; 0.003877, 0.999915, 0.000000,-0.000000;;, + 191;4; 0.014798, 0.999677, 0.000000,-0.000000;;, + 192;4; 0.028821, 0.999371, 0.000000,-0.000000;;, + 193;4; 0.039742, 0.999133, 0.000000,-0.000000;;, + 194;4; 0.043619, 0.999048, 0.000000,-0.000000;;, + 195;4; 0.039742, 0.999133, 0.000000,-0.000000;;, + 196;4; 0.028821, 0.999371, 0.000000,-0.000000;;, + 197;4; 0.014798, 0.999677, 0.000000,-0.000000;;, + 198;4; 0.003877, 0.999915, 0.000000,-0.000000;;, + 199;4; -0.000000, 1.000000, 0.000000,-0.000000;;, + 200;4; -0.000000, 1.000000,-0.000000,-0.000000;;, + 201;4; -0.034052, 0.993233,-0.000000,-0.000000;;, + 202;4; -0.129903, 0.974175,-0.000000,-0.000000;;, + 203;4; -0.252901, 0.949704,-0.000000,-0.000000;;, + 204;4; -0.348675, 0.930646,-0.000000,-0.000000;;, + 205;4; -0.382683, 0.923880,-0.000000,-0.000000;;, + 206;4; -0.361005, 0.930646,-0.000000,-0.000000;;, + 207;4; -0.294618, 0.949704,-0.000000,-0.000000;;, + 208;4; -0.194899, 0.974175,-0.000000,-0.000000;;, + 209;4; -0.088939, 0.993234,-0.000000,-0.000000;;, + 210;4; -0.000000, 1.000000,-0.000000,-0.000000;;, + 211;4; 0.088939, 0.993234, 0.000000,-0.000000;;, + 212;4; 0.194899, 0.974175, 0.000000,-0.000000;;, + 213;4; 0.294618, 0.949704, 0.000000,-0.000000;;, + 214;4; 0.361005, 0.930646, 0.000000,-0.000000;;, + 215;4; 0.382683, 0.923880, 0.000000,-0.000000;;, + 216;4; 0.348699, 0.930646, 0.000000,-0.000000;;, + 217;4; 0.253041, 0.949703, 0.000000,-0.000000;;, + 218;4; 0.130122, 0.974173, 0.000000,-0.000000;;, + 219;4; 0.034158, 0.993233, 0.000000,-0.000000;;, + 220;4; -0.000000, 1.000000, 0.000000,-0.000000;;; + } + AnimationKey { //Scale + 1; + 221; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;, + 189;3; 1.000000, 1.000000, 1.000000;;, + 190;3; 1.000000, 1.000000, 1.000000;;, + 191;3; 1.000000, 1.000000, 1.000000;;, + 192;3; 1.000000, 1.000000, 1.000000;;, + 193;3; 1.000000, 1.000000, 1.000000;;, + 194;3; 1.000000, 1.000000, 1.000000;;, + 195;3; 1.000000, 1.000000, 1.000000;;, + 196;3; 1.000000, 1.000000, 1.000000;;, + 197;3; 1.000000, 1.000000, 1.000000;;, + 198;3; 1.000000, 1.000000, 1.000000;;, + 199;3; 1.000000, 1.000000, 1.000000;;, + 200;3; 1.000000, 1.000000, 1.000000;;, + 201;3; 1.000000, 1.000000, 1.000000;;, + 202;3; 1.000000, 1.000000, 1.000000;;, + 203;3; 1.000000, 1.000000, 1.000000;;, + 204;3; 1.000000, 1.000000, 1.000000;;, + 205;3; 1.000000, 1.000000, 1.000000;;, + 206;3; 1.000000, 1.000000, 1.000000;;, + 207;3; 1.000000, 1.000000, 1.000000;;, + 208;3; 1.000000, 1.000000, 1.000000;;, + 209;3; 1.000000, 1.000000, 1.000000;;, + 210;3; 1.000000, 1.000000, 1.000000;;, + 211;3; 1.000000, 1.000000, 1.000000;;, + 212;3; 1.000000, 1.000000, 1.000000;;, + 213;3; 1.000000, 1.000000, 1.000000;;, + 214;3; 1.000000, 1.000000, 1.000000;;, + 215;3; 1.000000, 1.000000, 1.000000;;, + 216;3; 1.000000, 1.000000, 1.000000;;, + 217;3; 1.000000, 1.000000, 1.000000;;, + 218;3; 1.000000, 1.000000, 1.000000;;, + 219;3; 1.000000, 1.000000, 1.000000;;, + 220;3; 1.000000, 1.000000, 1.000000;;; + } + } + Animation { + {Player} + AnimationKey { //Position + 2; + 221; + 0;3; 0.000000, 0.000000, 0.000000;;, + 1;3; 0.000000, 0.000000, 0.000000;;, + 2;3; 0.000000, 0.000000, 0.000000;;, + 3;3; 0.000000, 0.000000, 0.000000;;, + 4;3; 0.000000, 0.000000, 0.000000;;, + 5;3; 0.000000, 0.000000, 0.000000;;, + 6;3; 0.000000, 0.000000, 0.000000;;, + 7;3; 0.000000, 0.000000, 0.000000;;, + 8;3; 0.000000, 0.000000, 0.000000;;, + 9;3; 0.000000, 0.000000, 0.000000;;, + 10;3; 0.000000, 0.000000, 0.000000;;, + 11;3; 0.000000, 0.000000, 0.000000;;, + 12;3; 0.000000, 0.000000, 0.000000;;, + 13;3; 0.000000, 0.000000, 0.000000;;, + 14;3; 0.000000, 0.000000, 0.000000;;, + 15;3; 0.000000, 0.000000, 0.000000;;, + 16;3; 0.000000, 0.000000, 0.000000;;, + 17;3; 0.000000, 0.000000, 0.000000;;, + 18;3; 0.000000, 0.000000, 0.000000;;, + 19;3; 0.000000, 0.000000, 0.000000;;, + 20;3; 0.000000, 0.000000, 0.000000;;, + 21;3; 0.000000, 0.000000, 0.000000;;, + 22;3; 0.000000, 0.000000, 0.000000;;, + 23;3; 0.000000, 0.000000, 0.000000;;, + 24;3; 0.000000, 0.000000, 0.000000;;, + 25;3; 0.000000, 0.000000, 0.000000;;, + 26;3; 0.000000, 0.000000, 0.000000;;, + 27;3; 0.000000, 0.000000, 0.000000;;, + 28;3; 0.000000, 0.000000, 0.000000;;, + 29;3; 0.000000, 0.000000, 0.000000;;, + 30;3; 0.000000, 0.000000, 0.000000;;, + 31;3; 0.000000, 0.000000, 0.000000;;, + 32;3; 0.000000, 0.000000, 0.000000;;, + 33;3; 0.000000, 0.000000, 0.000000;;, + 34;3; 0.000000, 0.000000, 0.000000;;, + 35;3; 0.000000, 0.000000, 0.000000;;, + 36;3; 0.000000, 0.000000, 0.000000;;, + 37;3; 0.000000, 0.000000, 0.000000;;, + 38;3; 0.000000, 0.000000, 0.000000;;, + 39;3; 0.000000, 0.000000, 0.000000;;, + 40;3; 0.000000, 0.000000, 0.000000;;, + 41;3; 0.000000, 0.000000, 0.000000;;, + 42;3; 0.000000, 0.000000, 0.000000;;, + 43;3; 0.000000, 0.000000, 0.000000;;, + 44;3; 0.000000, 0.000000, 0.000000;;, + 45;3; 0.000000, 0.000000, 0.000000;;, + 46;3; 0.000000, 0.000000, 0.000000;;, + 47;3; 0.000000, 0.000000, 0.000000;;, + 48;3; 0.000000, 0.000000, 0.000000;;, + 49;3; 0.000000, 0.000000, 0.000000;;, + 50;3; 0.000000, 0.000000, 0.000000;;, + 51;3; 0.000000, 0.000000, 0.000000;;, + 52;3; 0.000000, 0.000000, 0.000000;;, + 53;3; 0.000000, 0.000000, 0.000000;;, + 54;3; 0.000000, 0.000000, 0.000000;;, + 55;3; 0.000000, 0.000000, 0.000000;;, + 56;3; 0.000000, 0.000000, 0.000000;;, + 57;3; 0.000000, 0.000000, 0.000000;;, + 58;3; 0.000000, 0.000000, 0.000000;;, + 59;3; 0.000000, 0.000000, 0.000000;;, + 60;3; 0.000000, 0.000000, 0.000000;;, + 61;3; 0.000000, 0.000000, 0.000000;;, + 62;3; 0.000000, 0.000000, 0.000000;;, + 63;3; 0.000000, 0.000000, 0.000000;;, + 64;3; 0.000000, 0.000000, 0.000000;;, + 65;3; 0.000000, 0.000000, 0.000000;;, + 66;3; 0.000000, 0.000000, 0.000000;;, + 67;3; 0.000000, 0.000000, 0.000000;;, + 68;3; 0.000000, 0.000000, 0.000000;;, + 69;3; 0.000000, 0.000000, 0.000000;;, + 70;3; 0.000000, 0.000000, 0.000000;;, + 71;3; 0.000000, 0.000000, 0.000000;;, + 72;3; 0.000000, 0.000000, 0.000000;;, + 73;3; 0.000000, 0.000000, 0.000000;;, + 74;3; 0.000000, 0.000000, 0.000000;;, + 75;3; 0.000000, 0.000000, 0.000000;;, + 76;3; 0.000000, 0.000000, 0.000000;;, + 77;3; 0.000000, 0.000000, 0.000000;;, + 78;3; 0.000000, 0.000000, 0.000000;;, + 79;3; 0.000000, 0.000000, 0.000000;;, + 80;3; 0.000000, 0.000000, 0.000000;;, + 81;3; 0.000000, 0.000000, 0.000000;;, + 82;3; 0.000000, 0.000000, 0.000000;;, + 83;3; 0.000000, 0.000000, 0.000000;;, + 84;3; 0.000000, 0.000000, 0.000000;;, + 85;3; 0.000000, 0.000000, 0.000000;;, + 86;3; 0.000000, 0.000000, 0.000000;;, + 87;3; 0.000000, 0.000000, 0.000000;;, + 88;3; 0.000000, 0.000000, 0.000000;;, + 89;3; 0.000000, 0.000000, 0.000000;;, + 90;3; 0.000000, 0.000000, 0.000000;;, + 91;3; 0.000000, 0.000000, 0.000000;;, + 92;3; 0.000000, 0.000000, 0.000000;;, + 93;3; 0.000000, 0.000000, 0.000000;;, + 94;3; 0.000000, 0.000000, 0.000000;;, + 95;3; 0.000000, 0.000000, 0.000000;;, + 96;3; 0.000000, 0.000000, 0.000000;;, + 97;3; 0.000000, 0.000000, 0.000000;;, + 98;3; 0.000000, 0.000000, 0.000000;;, + 99;3; 0.000000, 0.000000, 0.000000;;, + 100;3; 0.000000, 0.000000, 0.000000;;, + 101;3; 0.000000, 0.000000, 0.000000;;, + 102;3; 0.000000, 0.000000, 0.000000;;, + 103;3; 0.000000, 0.000000, 0.000000;;, + 104;3; 0.000000, 0.000000, 0.000000;;, + 105;3; 0.000000, 0.000000, 0.000000;;, + 106;3; 0.000000, 0.000000, 0.000000;;, + 107;3; 0.000000, 0.000000, 0.000000;;, + 108;3; 0.000000, 0.000000, 0.000000;;, + 109;3; 0.000000, 0.000000, 0.000000;;, + 110;3; 0.000000, 0.000000, 0.000000;;, + 111;3; 0.000000, 0.000000, 0.000000;;, + 112;3; 0.000000, 0.000000, 0.000000;;, + 113;3; 0.000000, 0.000000, 0.000000;;, + 114;3; 0.000000, 0.000000, 0.000000;;, + 115;3; 0.000000, 0.000000, 0.000000;;, + 116;3; 0.000000, 0.000000, 0.000000;;, + 117;3; 0.000000, 0.000000, 0.000000;;, + 118;3; 0.000000, 0.000000, 0.000000;;, + 119;3; 0.000000, 0.000000, 0.000000;;, + 120;3; 0.000000, 0.000000, 0.000000;;, + 121;3; 0.000000, 0.000000, 0.000000;;, + 122;3; 0.000000, 0.000000, 0.000000;;, + 123;3; 0.000000, 0.000000, 0.000000;;, + 124;3; 0.000000, 0.000000, 0.000000;;, + 125;3; 0.000000, 0.000000, 0.000000;;, + 126;3; 0.000000, 0.000000, 0.000000;;, + 127;3; 0.000000, 0.000000, 0.000000;;, + 128;3; 0.000000, 0.000000, 0.000000;;, + 129;3; 0.000000, 0.000000, 0.000000;;, + 130;3; 0.000000, 0.000000, 0.000000;;, + 131;3; 0.000000, 0.000000, 0.000000;;, + 132;3; 0.000000, 0.000000, 0.000000;;, + 133;3; 0.000000, 0.000000, 0.000000;;, + 134;3; 0.000000, 0.000000, 0.000000;;, + 135;3; 0.000000, 0.000000, 0.000000;;, + 136;3; 0.000000, 0.000000, 0.000000;;, + 137;3; 0.000000, 0.000000, 0.000000;;, + 138;3; 0.000000, 0.000000, 0.000000;;, + 139;3; 0.000000, 0.000000, 0.000000;;, + 140;3; 0.000000, 0.000000, 0.000000;;, + 141;3; 0.000000, 0.000000, 0.000000;;, + 142;3; 0.000000, 0.000000, 0.000000;;, + 143;3; 0.000000, 0.000000, 0.000000;;, + 144;3; 0.000000, 0.000000, 0.000000;;, + 145;3; 0.000000, 0.000000, 0.000000;;, + 146;3; 0.000000, 0.000000, 0.000000;;, + 147;3; 0.000000, 0.000000, 0.000000;;, + 148;3; 0.000000, 0.000000, 0.000000;;, + 149;3; 0.000000, 0.000000, 0.000000;;, + 150;3; 0.000000, 0.000000, 0.000000;;, + 151;3; 0.000000, 0.000000, 0.000000;;, + 152;3; 0.000000, 0.000000, 0.000000;;, + 153;3; 0.000000, 0.000000, 0.000000;;, + 154;3; 0.000000, 0.000000, 0.000000;;, + 155;3; 0.000000, 0.000000, 0.000000;;, + 156;3; 0.000000, 0.000000, 0.000000;;, + 157;3; 0.000000, 0.000000, 0.000000;;, + 158;3; 0.000000, 0.000000, 0.000000;;, + 159;3; 0.000000, 0.000000, 0.000000;;, + 160;3; 0.000000, 0.000000, 0.000000;;, + 161;3; 0.000000, 0.000000, 0.000000;;, + 162;3; 0.000000, 0.000000, 0.000000;;, + 163;3; 0.000000, 0.000000, 0.000000;;, + 164;3; 0.000000, 0.000000, 0.000000;;, + 165;3; 0.000000, 0.000000, 0.000000;;, + 166;3; 0.000000, 0.000000, 0.000000;;, + 167;3; 0.000000, 0.000000, 0.000000;;, + 168;3; 0.000000, 0.000000, 0.000000;;, + 169;3; 0.000000, 0.000000, 0.000000;;, + 170;3; 0.000000, 0.000000, 0.000000;;, + 171;3; 0.000000, 0.000000, 0.000000;;, + 172;3; 0.000000, 0.000000, 0.000000;;, + 173;3; 0.000000, 0.000000, 0.000000;;, + 174;3; 0.000000, 0.000000, 0.000000;;, + 175;3; 0.000000, 0.000000, 0.000000;;, + 176;3; 0.000000, 0.000000, 0.000000;;, + 177;3; 0.000000, 0.000000, 0.000000;;, + 178;3; 0.000000, 0.000000, 0.000000;;, + 179;3; 0.000000, 0.000000, 0.000000;;, + 180;3; 0.000000, 0.000000, 0.000000;;, + 181;3; 0.000000, 0.000000, 0.000000;;, + 182;3; 0.000000, 0.000000, 0.000000;;, + 183;3; 0.000000, 0.000000, 0.000000;;, + 184;3; 0.000000, 0.000000, 0.000000;;, + 185;3; 0.000000, 0.000000, 0.000000;;, + 186;3; 0.000000, 0.000000, 0.000000;;, + 187;3; 0.000000, 0.000000, 0.000000;;, + 188;3; 0.000000, 0.000000, 0.000000;;, + 189;3; 0.000000, 0.000000, 0.000000;;, + 190;3; 0.000000, 0.000000, 0.000000;;, + 191;3; 0.000000, 0.000000, 0.000000;;, + 192;3; 0.000000, 0.000000, 0.000000;;, + 193;3; 0.000000, 0.000000, 0.000000;;, + 194;3; 0.000000, 0.000000, 0.000000;;, + 195;3; 0.000000, 0.000000, 0.000000;;, + 196;3; 0.000000, 0.000000, 0.000000;;, + 197;3; 0.000000, 0.000000, 0.000000;;, + 198;3; 0.000000, 0.000000, 0.000000;;, + 199;3; 0.000000, 0.000000, 0.000000;;, + 200;3; 0.000000, 0.000000, 0.000000;;, + 201;3; 0.000000, 0.000000, 0.000000;;, + 202;3; 0.000000, 0.000000, 0.000000;;, + 203;3; 0.000000, 0.000000, 0.000000;;, + 204;3; 0.000000, 0.000000, 0.000000;;, + 205;3; 0.000000, 0.000000, 0.000000;;, + 206;3; 0.000000, 0.000000, 0.000000;;, + 207;3; 0.000000, 0.000000, 0.000000;;, + 208;3; 0.000000, 0.000000, 0.000000;;, + 209;3; 0.000000, 0.000000, 0.000000;;, + 210;3; 0.000000, 0.000000, 0.000000;;, + 211;3; 0.000000, 0.000000, 0.000000;;, + 212;3; 0.000000, 0.000000, 0.000000;;, + 213;3; 0.000000, 0.000000, 0.000000;;, + 214;3; 0.000000, 0.000000, 0.000000;;, + 215;3; 0.000000, 0.000000, 0.000000;;, + 216;3; 0.000000, 0.000000, 0.000000;;, + 217;3; 0.000000, 0.000000, 0.000000;;, + 218;3; 0.000000, 0.000000, 0.000000;;, + 219;3; 0.000000, 0.000000, 0.000000;;, + 220;3; 0.000000, 0.000000, 0.000000;;; + } + AnimationKey { //Rotation + 0; + 221; + 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 51;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 52;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 53;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 54;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 55;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 56;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 57;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 58;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 59;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 60;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 61;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 62;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 63;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 64;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 65;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 66;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 67;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 68;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 69;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 70;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 71;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 72;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 73;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 74;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 75;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 76;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 77;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 78;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 79;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 80;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 81;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 82;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 83;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 84;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 85;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 86;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 87;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 88;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 89;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 90;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 91;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 92;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 93;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 94;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 95;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 96;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 97;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 98;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 99;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 100;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 101;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 102;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 103;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 104;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 105;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 106;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 107;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 108;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 109;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 110;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 111;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 112;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 113;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 114;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 115;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 116;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 117;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 118;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 119;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 120;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 121;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 122;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 123;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 124;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 125;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 126;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 127;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 128;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 129;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 130;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 131;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 132;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 133;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 134;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 135;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 136;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 137;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 138;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 139;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 140;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 141;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 142;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 143;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 144;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 145;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 146;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 147;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 148;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 149;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 150;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 151;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 152;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 153;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 154;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 155;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 156;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 157;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 158;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 159;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 160;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 161;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 162;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 163;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 164;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 165;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 166;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 167;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 168;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 169;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 170;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 171;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 172;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 173;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 174;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 175;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 176;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 177;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 178;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 179;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 180;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 181;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 182;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 183;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 184;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 185;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 186;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 187;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 188;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 189;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 190;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 191;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 192;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 193;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 194;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 195;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 196;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 197;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 198;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 199;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 200;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 201;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 202;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 203;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 204;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 205;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 206;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 207;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 208;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 209;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 210;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 211;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 212;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 213;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 214;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 215;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 216;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 217;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 218;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 219;4; -1.000000, 0.000000, 0.000000, 0.000000;;, + 220;4; -1.000000, 0.000000, 0.000000, 0.000000;;; + } + AnimationKey { //Scale + 1; + 221; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;, + 81;3; 1.000000, 1.000000, 1.000000;;, + 82;3; 1.000000, 1.000000, 1.000000;;, + 83;3; 1.000000, 1.000000, 1.000000;;, + 84;3; 1.000000, 1.000000, 1.000000;;, + 85;3; 1.000000, 1.000000, 1.000000;;, + 86;3; 1.000000, 1.000000, 1.000000;;, + 87;3; 1.000000, 1.000000, 1.000000;;, + 88;3; 1.000000, 1.000000, 1.000000;;, + 89;3; 1.000000, 1.000000, 1.000000;;, + 90;3; 1.000000, 1.000000, 1.000000;;, + 91;3; 1.000000, 1.000000, 1.000000;;, + 92;3; 1.000000, 1.000000, 1.000000;;, + 93;3; 1.000000, 1.000000, 1.000000;;, + 94;3; 1.000000, 1.000000, 1.000000;;, + 95;3; 1.000000, 1.000000, 1.000000;;, + 96;3; 1.000000, 1.000000, 1.000000;;, + 97;3; 1.000000, 1.000000, 1.000000;;, + 98;3; 1.000000, 1.000000, 1.000000;;, + 99;3; 1.000000, 1.000000, 1.000000;;, + 100;3; 1.000000, 1.000000, 1.000000;;, + 101;3; 1.000000, 1.000000, 1.000000;;, + 102;3; 1.000000, 1.000000, 1.000000;;, + 103;3; 1.000000, 1.000000, 1.000000;;, + 104;3; 1.000000, 1.000000, 1.000000;;, + 105;3; 1.000000, 1.000000, 1.000000;;, + 106;3; 1.000000, 1.000000, 1.000000;;, + 107;3; 1.000000, 1.000000, 1.000000;;, + 108;3; 1.000000, 1.000000, 1.000000;;, + 109;3; 1.000000, 1.000000, 1.000000;;, + 110;3; 1.000000, 1.000000, 1.000000;;, + 111;3; 1.000000, 1.000000, 1.000000;;, + 112;3; 1.000000, 1.000000, 1.000000;;, + 113;3; 1.000000, 1.000000, 1.000000;;, + 114;3; 1.000000, 1.000000, 1.000000;;, + 115;3; 1.000000, 1.000000, 1.000000;;, + 116;3; 1.000000, 1.000000, 1.000000;;, + 117;3; 1.000000, 1.000000, 1.000000;;, + 118;3; 1.000000, 1.000000, 1.000000;;, + 119;3; 1.000000, 1.000000, 1.000000;;, + 120;3; 1.000000, 1.000000, 1.000000;;, + 121;3; 1.000000, 1.000000, 1.000000;;, + 122;3; 1.000000, 1.000000, 1.000000;;, + 123;3; 1.000000, 1.000000, 1.000000;;, + 124;3; 1.000000, 1.000000, 1.000000;;, + 125;3; 1.000000, 1.000000, 1.000000;;, + 126;3; 1.000000, 1.000000, 1.000000;;, + 127;3; 1.000000, 1.000000, 1.000000;;, + 128;3; 1.000000, 1.000000, 1.000000;;, + 129;3; 1.000000, 1.000000, 1.000000;;, + 130;3; 1.000000, 1.000000, 1.000000;;, + 131;3; 1.000000, 1.000000, 1.000000;;, + 132;3; 1.000000, 1.000000, 1.000000;;, + 133;3; 1.000000, 1.000000, 1.000000;;, + 134;3; 1.000000, 1.000000, 1.000000;;, + 135;3; 1.000000, 1.000000, 1.000000;;, + 136;3; 1.000000, 1.000000, 1.000000;;, + 137;3; 1.000000, 1.000000, 1.000000;;, + 138;3; 1.000000, 1.000000, 1.000000;;, + 139;3; 1.000000, 1.000000, 1.000000;;, + 140;3; 1.000000, 1.000000, 1.000000;;, + 141;3; 1.000000, 1.000000, 1.000000;;, + 142;3; 1.000000, 1.000000, 1.000000;;, + 143;3; 1.000000, 1.000000, 1.000000;;, + 144;3; 1.000000, 1.000000, 1.000000;;, + 145;3; 1.000000, 1.000000, 1.000000;;, + 146;3; 1.000000, 1.000000, 1.000000;;, + 147;3; 1.000000, 1.000000, 1.000000;;, + 148;3; 1.000000, 1.000000, 1.000000;;, + 149;3; 1.000000, 1.000000, 1.000000;;, + 150;3; 1.000000, 1.000000, 1.000000;;, + 151;3; 1.000000, 1.000000, 1.000000;;, + 152;3; 1.000000, 1.000000, 1.000000;;, + 153;3; 1.000000, 1.000000, 1.000000;;, + 154;3; 1.000000, 1.000000, 1.000000;;, + 155;3; 1.000000, 1.000000, 1.000000;;, + 156;3; 1.000000, 1.000000, 1.000000;;, + 157;3; 1.000000, 1.000000, 1.000000;;, + 158;3; 1.000000, 1.000000, 1.000000;;, + 159;3; 1.000000, 1.000000, 1.000000;;, + 160;3; 1.000000, 1.000000, 1.000000;;, + 161;3; 1.000000, 1.000000, 1.000000;;, + 162;3; 1.000000, 1.000000, 1.000000;;, + 163;3; 1.000000, 1.000000, 1.000000;;, + 164;3; 1.000000, 1.000000, 1.000000;;, + 165;3; 1.000000, 1.000000, 1.000000;;, + 166;3; 1.000000, 1.000000, 1.000000;;, + 167;3; 1.000000, 1.000000, 1.000000;;, + 168;3; 1.000000, 1.000000, 1.000000;;, + 169;3; 1.000000, 1.000000, 1.000000;;, + 170;3; 1.000000, 1.000000, 1.000000;;, + 171;3; 1.000000, 1.000000, 1.000000;;, + 172;3; 1.000000, 1.000000, 1.000000;;, + 173;3; 1.000000, 1.000000, 1.000000;;, + 174;3; 1.000000, 1.000000, 1.000000;;, + 175;3; 1.000000, 1.000000, 1.000000;;, + 176;3; 1.000000, 1.000000, 1.000000;;, + 177;3; 1.000000, 1.000000, 1.000000;;, + 178;3; 1.000000, 1.000000, 1.000000;;, + 179;3; 1.000000, 1.000000, 1.000000;;, + 180;3; 1.000000, 1.000000, 1.000000;;, + 181;3; 1.000000, 1.000000, 1.000000;;, + 182;3; 1.000000, 1.000000, 1.000000;;, + 183;3; 1.000000, 1.000000, 1.000000;;, + 184;3; 1.000000, 1.000000, 1.000000;;, + 185;3; 1.000000, 1.000000, 1.000000;;, + 186;3; 1.000000, 1.000000, 1.000000;;, + 187;3; 1.000000, 1.000000, 1.000000;;, + 188;3; 1.000000, 1.000000, 1.000000;;, + 189;3; 1.000000, 1.000000, 1.000000;;, + 190;3; 1.000000, 1.000000, 1.000000;;, + 191;3; 1.000000, 1.000000, 1.000000;;, + 192;3; 1.000000, 1.000000, 1.000000;;, + 193;3; 1.000000, 1.000000, 1.000000;;, + 194;3; 1.000000, 1.000000, 1.000000;;, + 195;3; 1.000000, 1.000000, 1.000000;;, + 196;3; 1.000000, 1.000000, 1.000000;;, + 197;3; 1.000000, 1.000000, 1.000000;;, + 198;3; 1.000000, 1.000000, 1.000000;;, + 199;3; 1.000000, 1.000000, 1.000000;;, + 200;3; 1.000000, 1.000000, 1.000000;;, + 201;3; 1.000000, 1.000000, 1.000000;;, + 202;3; 1.000000, 1.000000, 1.000000;;, + 203;3; 1.000000, 1.000000, 1.000000;;, + 204;3; 1.000000, 1.000000, 1.000000;;, + 205;3; 1.000000, 1.000000, 1.000000;;, + 206;3; 1.000000, 1.000000, 1.000000;;, + 207;3; 1.000000, 1.000000, 1.000000;;, + 208;3; 1.000000, 1.000000, 1.000000;;, + 209;3; 1.000000, 1.000000, 1.000000;;, + 210;3; 1.000000, 1.000000, 1.000000;;, + 211;3; 1.000000, 1.000000, 1.000000;;, + 212;3; 1.000000, 1.000000, 1.000000;;, + 213;3; 1.000000, 1.000000, 1.000000;;, + 214;3; 1.000000, 1.000000, 1.000000;;, + 215;3; 1.000000, 1.000000, 1.000000;;, + 216;3; 1.000000, 1.000000, 1.000000;;, + 217;3; 1.000000, 1.000000, 1.000000;;, + 218;3; 1.000000, 1.000000, 1.000000;;, + 219;3; 1.000000, 1.000000, 1.000000;;, + 220;3; 1.000000, 1.000000, 1.000000;;; + } + } +} //End of AnimationSet diff --git a/mods/wield3d/rotation.lua b/mods/wield3d/rotation.lua new file mode 100644 index 0000000..6f62cdb --- /dev/null +++ b/mods/wield3d/rotation.lua @@ -0,0 +1,30 @@ +-- Wielded Item Rotation Overrides - [item_name]=degrees, + +wield3d_rotation = { + ["default:torch"]=315, + ["default:sapling"]=315, + ["flowers:dandelion_white"]=315, + ["flowers:dandelion_yellow"]=315, + ["flowers:geranium"]=315, + ["flowers:rose"]=315, + ["flowers:tulip"]=315, + ["flowers:viola"]=315, + ["default:shovel_wood"]=270, + ["default:shovel_stone"]=270, + ["default:shovel_steel"]=270, + ["default:shovel_bronze"]=270, + ["default:shovel_mese"]=270, + ["default:shovel_diamond"]=270, + ["bucket:bucket_empty"]=270, + ["bucket:bucket_water"]=270, + ["bucket:bucket_lava"]=270, + ["screwdriver:screwdriver"]=270, + ["screwdriver:screwdriver1"]=270, + ["screwdriver:screwdriver2"]=270, + ["screwdriver:screwdriver3"]=270, + ["screwdriver:screwdriver4"]=270, + ["vessels:glass_bottle"]=270, + ["vessels:drinking_glass"]=270, + ["vessels:steel_bottle"]=270, +} + diff --git a/mods/wield3d/textures/wield3d_trans.png b/mods/wield3d/textures/wield3d_trans.png new file mode 100644 index 0000000..a82df66 Binary files /dev/null and b/mods/wield3d/textures/wield3d_trans.png differ diff --git a/todo/TODO.md b/todo/TODO.md new file mode 100644 index 0000000..14073b6 --- /dev/null +++ b/todo/TODO.md @@ -0,0 +1,4 @@ +* Update fishing, so it can replace outdated /mods/fishing + * Source: https://github.com/MinetestForFun/fishing +* Update farming, so it can replace outdated /mods/farming + * Source: minetest_game diff --git a/todo/farming/README.txt b/todo/farming/README.txt new file mode 100644 index 0000000..3ccd8c3 --- /dev/null +++ b/todo/farming/README.txt @@ -0,0 +1,37 @@ +Minetest Game mod: farming +========================== +See license.txt for license information. + +Authors of source code +---------------------- +Originally by PilzAdam (MIT) +webdesigner97 (MIT) +Various Minetest developers and contributors (MIT) + +Authors of media (textures) +--------------------------- +Created by PilzAdam (CC BY 3.0): + farming_bread.png + farming_soil.png + farming_soil_wet.png + farming_soil_wet_side.png + farming_string.png + +Created by BlockMen (CC BY 3.0): + farming_tool_diamondhoe.png + farming_tool_mesehoe.png + farming_tool_bronzehoe.png + farming_tool_steelhoe.png + farming_tool_stonehoe.png + farming_tool_woodhoe.png + +Created by MasterGollum (CC BY 3.0): + farming_straw.png + +Created by Gambit (CC BY 3.0): + farming_wheat.png + farming_wheat_*.png + farming_cotton_*.png + farming_flour.png + farming_cotton_seed.png + farming_wheat_seed.png diff --git a/mods/farming/api.lua b/todo/farming/api.lua similarity index 100% rename from mods/farming/api.lua rename to todo/farming/api.lua diff --git a/mods/beds/depends.txt b/todo/farming/depends.txt similarity index 100% rename from mods/beds/depends.txt rename to todo/farming/depends.txt diff --git a/todo/farming/hoes.lua b/todo/farming/hoes.lua new file mode 100644 index 0000000..5aae390 --- /dev/null +++ b/todo/farming/hoes.lua @@ -0,0 +1,42 @@ +farming.register_hoe(":farming:hoe_wood", { + description = "Wooden Hoe", + inventory_image = "farming_tool_woodhoe.png", + max_uses = 30, + material = "group:wood", + groups = {flammable = 2}, +}) + +farming.register_hoe(":farming:hoe_stone", { + description = "Stone Hoe", + inventory_image = "farming_tool_stonehoe.png", + max_uses = 90, + material = "group:stone" +}) + +farming.register_hoe(":farming:hoe_steel", { + description = "Steel Hoe", + inventory_image = "farming_tool_steelhoe.png", + max_uses = 200, + material = "default:steel_ingot" +}) + +farming.register_hoe(":farming:hoe_bronze", { + description = "Bronze Hoe", + inventory_image = "farming_tool_bronzehoe.png", + max_uses = 220, + material = "default:bronze_ingot" +}) + +farming.register_hoe(":farming:hoe_mese", { + description = "Mese Hoe", + inventory_image = "farming_tool_mesehoe.png", + max_uses = 350, + material = "default:mese_crystal" +}) + +farming.register_hoe(":farming:hoe_diamond", { + description = "Diamond Hoe", + inventory_image = "farming_tool_diamondhoe.png", + max_uses = 500, + material = "default:diamond" +}) diff --git a/todo/farming/init.lua b/todo/farming/init.lua new file mode 100644 index 0000000..97dc9b4 --- /dev/null +++ b/todo/farming/init.lua @@ -0,0 +1,109 @@ +-- Global farming namespace +farming = {} +farming.path = minetest.get_modpath("farming") + +-- Load files +dofile(farming.path .. "/api.lua") +dofile(farming.path .. "/nodes.lua") +dofile(farming.path .. "/hoes.lua") + +-- WHEAT +farming.register_plant("farming:wheat", { + description = "Wheat seed", + paramtype2 = "meshoptions", + inventory_image = "farming_wheat_seed.png", + steps = 8, + minlight = 13, + maxlight = default.LIGHT_MAX, + fertility = {"grassland"}, + groups = {flammable = 4}, + place_param2 = 3, +}) +minetest.register_craftitem("farming:flour", { + description = "Flour", + inventory_image = "farming_flour.png", + groups = {flammable = 1}, +}) + +minetest.register_craftitem("farming:bread", { + description = "Bread", + inventory_image = "farming_bread.png", + on_use = minetest.item_eat(5), + groups = {flammable = 2}, +}) + +minetest.register_craft({ + type = "shapeless", + output = "farming:flour", + recipe = {"farming:wheat", "farming:wheat", "farming:wheat", "farming:wheat"} +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 15, + output = "farming:bread", + recipe = "farming:flour" +}) + +-- Cotton +farming.register_plant("farming:cotton", { + description = "Cotton seed", + inventory_image = "farming_cotton_seed.png", + steps = 8, + minlight = 13, + maxlight = default.LIGHT_MAX, + fertility = {"grassland", "desert"}, + groups = {flammable = 4}, +}) + +minetest.register_alias("farming:string", "farming:cotton") + +minetest.register_craft({ + output = "wool:white", + recipe = { + {"farming:cotton", "farming:cotton"}, + {"farming:cotton", "farming:cotton"}, + } +}) + +-- Straw +minetest.register_craft({ + output = "farming:straw 3", + recipe = { + {"farming:wheat", "farming:wheat", "farming:wheat"}, + {"farming:wheat", "farming:wheat", "farming:wheat"}, + {"farming:wheat", "farming:wheat", "farming:wheat"}, + } +}) + +minetest.register_craft({ + output = "farming:wheat 3", + recipe = { + {"farming:straw"}, + } +}) + +-- Fuels +minetest.register_craft({ + type = "fuel", + recipe = "farming:straw", + burntime = 3, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:wheat", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:cotton", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:hoe_wood", + burntime = 5, +}) diff --git a/mods/farming/license.txt b/todo/farming/license.txt similarity index 100% rename from mods/farming/license.txt rename to todo/farming/license.txt diff --git a/mods/farming/nodes.lua b/todo/farming/nodes.lua similarity index 100% rename from mods/farming/nodes.lua rename to todo/farming/nodes.lua diff --git a/todo/farming/textures/farming_bread.png b/todo/farming/textures/farming_bread.png new file mode 100644 index 0000000..0c25678 Binary files /dev/null and b/todo/farming/textures/farming_bread.png differ diff --git a/todo/farming/textures/farming_cotton.png b/todo/farming/textures/farming_cotton.png new file mode 100644 index 0000000..e2bbfd7 Binary files /dev/null and b/todo/farming/textures/farming_cotton.png differ diff --git a/todo/farming/textures/farming_cotton_1.png b/todo/farming/textures/farming_cotton_1.png new file mode 100644 index 0000000..5fc2180 Binary files /dev/null and b/todo/farming/textures/farming_cotton_1.png differ diff --git a/todo/farming/textures/farming_cotton_2.png b/todo/farming/textures/farming_cotton_2.png new file mode 100644 index 0000000..db4f4a3 Binary files /dev/null and b/todo/farming/textures/farming_cotton_2.png differ diff --git a/mods/farming/textures/farming_cotton_3.png b/todo/farming/textures/farming_cotton_3.png similarity index 100% rename from mods/farming/textures/farming_cotton_3.png rename to todo/farming/textures/farming_cotton_3.png diff --git a/mods/farming/textures/farming_cotton_4.png b/todo/farming/textures/farming_cotton_4.png similarity index 100% rename from mods/farming/textures/farming_cotton_4.png rename to todo/farming/textures/farming_cotton_4.png diff --git a/mods/farming/textures/farming_cotton_5.png b/todo/farming/textures/farming_cotton_5.png similarity index 100% rename from mods/farming/textures/farming_cotton_5.png rename to todo/farming/textures/farming_cotton_5.png diff --git a/mods/farming/textures/farming_cotton_6.png b/todo/farming/textures/farming_cotton_6.png similarity index 100% rename from mods/farming/textures/farming_cotton_6.png rename to todo/farming/textures/farming_cotton_6.png diff --git a/mods/farming/textures/farming_cotton_7.png b/todo/farming/textures/farming_cotton_7.png similarity index 100% rename from mods/farming/textures/farming_cotton_7.png rename to todo/farming/textures/farming_cotton_7.png diff --git a/mods/farming/textures/farming_cotton_8.png b/todo/farming/textures/farming_cotton_8.png similarity index 100% rename from mods/farming/textures/farming_cotton_8.png rename to todo/farming/textures/farming_cotton_8.png diff --git a/todo/farming/textures/farming_cotton_seed.png b/todo/farming/textures/farming_cotton_seed.png new file mode 100644 index 0000000..f1d5b8a Binary files /dev/null and b/todo/farming/textures/farming_cotton_seed.png differ diff --git a/mods/farming/textures/farming_desert_sand_soil.png b/todo/farming/textures/farming_desert_sand_soil.png similarity index 100% rename from mods/farming/textures/farming_desert_sand_soil.png rename to todo/farming/textures/farming_desert_sand_soil.png diff --git a/mods/farming/textures/farming_desert_sand_soil_wet.png b/todo/farming/textures/farming_desert_sand_soil_wet.png similarity index 100% rename from mods/farming/textures/farming_desert_sand_soil_wet.png rename to todo/farming/textures/farming_desert_sand_soil_wet.png diff --git a/mods/farming/textures/farming_desert_sand_soil_wet_side.png b/todo/farming/textures/farming_desert_sand_soil_wet_side.png similarity index 100% rename from mods/farming/textures/farming_desert_sand_soil_wet_side.png rename to todo/farming/textures/farming_desert_sand_soil_wet_side.png diff --git a/todo/farming/textures/farming_flour.png b/todo/farming/textures/farming_flour.png new file mode 100644 index 0000000..b1a9783 Binary files /dev/null and b/todo/farming/textures/farming_flour.png differ diff --git a/todo/farming/textures/farming_soil.png b/todo/farming/textures/farming_soil.png new file mode 100644 index 0000000..5cd3e68 Binary files /dev/null and b/todo/farming/textures/farming_soil.png differ diff --git a/todo/farming/textures/farming_soil_wet.png b/todo/farming/textures/farming_soil_wet.png new file mode 100644 index 0000000..0b4487d Binary files /dev/null and b/todo/farming/textures/farming_soil_wet.png differ diff --git a/todo/farming/textures/farming_soil_wet_side.png b/todo/farming/textures/farming_soil_wet_side.png new file mode 100644 index 0000000..f0b1bd4 Binary files /dev/null and b/todo/farming/textures/farming_soil_wet_side.png differ diff --git a/mods/farming/textures/farming_straw.png b/todo/farming/textures/farming_straw.png similarity index 100% rename from mods/farming/textures/farming_straw.png rename to todo/farming/textures/farming_straw.png diff --git a/mods/farming/textures/farming_tool_bronzehoe.png b/todo/farming/textures/farming_tool_bronzehoe.png similarity index 100% rename from mods/farming/textures/farming_tool_bronzehoe.png rename to todo/farming/textures/farming_tool_bronzehoe.png diff --git a/mods/farming/textures/farming_tool_diamondhoe.png b/todo/farming/textures/farming_tool_diamondhoe.png similarity index 100% rename from mods/farming/textures/farming_tool_diamondhoe.png rename to todo/farming/textures/farming_tool_diamondhoe.png diff --git a/mods/farming/textures/farming_tool_mesehoe.png b/todo/farming/textures/farming_tool_mesehoe.png similarity index 100% rename from mods/farming/textures/farming_tool_mesehoe.png rename to todo/farming/textures/farming_tool_mesehoe.png diff --git a/mods/farming/textures/farming_tool_steelhoe.png b/todo/farming/textures/farming_tool_steelhoe.png similarity index 100% rename from mods/farming/textures/farming_tool_steelhoe.png rename to todo/farming/textures/farming_tool_steelhoe.png diff --git a/mods/farming/textures/farming_tool_stonehoe.png b/todo/farming/textures/farming_tool_stonehoe.png similarity index 100% rename from mods/farming/textures/farming_tool_stonehoe.png rename to todo/farming/textures/farming_tool_stonehoe.png diff --git a/mods/farming/textures/farming_tool_woodhoe.png b/todo/farming/textures/farming_tool_woodhoe.png similarity index 100% rename from mods/farming/textures/farming_tool_woodhoe.png rename to todo/farming/textures/farming_tool_woodhoe.png diff --git a/todo/farming/textures/farming_wheat.png b/todo/farming/textures/farming_wheat.png new file mode 100644 index 0000000..1e0ad3b Binary files /dev/null and b/todo/farming/textures/farming_wheat.png differ diff --git a/todo/farming/textures/farming_wheat_1.png b/todo/farming/textures/farming_wheat_1.png new file mode 100644 index 0000000..c16ad94 Binary files /dev/null and b/todo/farming/textures/farming_wheat_1.png differ diff --git a/todo/farming/textures/farming_wheat_2.png b/todo/farming/textures/farming_wheat_2.png new file mode 100644 index 0000000..baddb4c Binary files /dev/null and b/todo/farming/textures/farming_wheat_2.png differ diff --git a/todo/farming/textures/farming_wheat_3.png b/todo/farming/textures/farming_wheat_3.png new file mode 100644 index 0000000..36ebb19 Binary files /dev/null and b/todo/farming/textures/farming_wheat_3.png differ diff --git a/todo/farming/textures/farming_wheat_4.png b/todo/farming/textures/farming_wheat_4.png new file mode 100644 index 0000000..735ed77 Binary files /dev/null and b/todo/farming/textures/farming_wheat_4.png differ diff --git a/todo/farming/textures/farming_wheat_5.png b/todo/farming/textures/farming_wheat_5.png new file mode 100644 index 0000000..f40b5f0 Binary files /dev/null and b/todo/farming/textures/farming_wheat_5.png differ diff --git a/todo/farming/textures/farming_wheat_6.png b/todo/farming/textures/farming_wheat_6.png new file mode 100644 index 0000000..e9c78e0 Binary files /dev/null and b/todo/farming/textures/farming_wheat_6.png differ diff --git a/todo/farming/textures/farming_wheat_7.png b/todo/farming/textures/farming_wheat_7.png new file mode 100644 index 0000000..cc26ca9 Binary files /dev/null and b/todo/farming/textures/farming_wheat_7.png differ diff --git a/todo/farming/textures/farming_wheat_8.png b/todo/farming/textures/farming_wheat_8.png new file mode 100644 index 0000000..d050093 Binary files /dev/null and b/todo/farming/textures/farming_wheat_8.png differ diff --git a/todo/farming/textures/farming_wheat_seed.png b/todo/farming/textures/farming_wheat_seed.png new file mode 100644 index 0000000..a9031fb Binary files /dev/null and b/todo/farming/textures/farming_wheat_seed.png differ diff --git a/todo/fishing/bobber.lua b/todo/fishing/bobber.lua new file mode 100644 index 0000000..66e7092 --- /dev/null +++ b/todo/fishing/bobber.lua @@ -0,0 +1,299 @@ +----------------------------------------------------------------------------------------------- +-- Fishing - Mossmanikin's version - Bobber 0.1.0 +-- License (code & textures): WTFPL +-- Contains code from: fishing (original), mobs, throwing +-- Supports: animal_clownfish, animal_fish_blue_white, animal_rat, mobs +----------------------------------------------------------------------------------------------- +-- 0.0625 (= 1 pixel on 16x16 texture) +-- 0.125 +-- 0.1875 +-- 0.25 +-- 0.3125 +-- 0.375 +-- 0.4375 +-- 0.5 (= 8 pixels on 16x16 texture) +-- 0.5625 (= 9 pixels on 16x16 texture) +-- 0.625 +-- 0.6875 +-- 0.75 +-- 0.8125 +-- 0.875 +-- 0.9375 +-- 1.0 (= 16 pixels on 16x16 texture) + +minetest.register_node("fishing:bobber_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { +-- { left , bottom , front , right , top , back } + {-0.0625, -0.6875, -0.0625, 0.0625, -0.5625, 0.0625}, + } + }, + tiles = {"fishing_bobber.png"}, + groups = {not_in_creative_inventory=1}, +}) + +minetest.register_node("fishing:bobber_box_ready", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { +-- { left , bottom , front , right , top , back } + {-0.0625, -0.6875, -0.0625, 0.0625, -0.5625, 0.0625}, + } + }, + tiles = {"fishing_bobber_ready.png"}, + groups = {not_in_creative_inventory=1}, +}) + +local FISHING_BOBBER_ENTITY={ + hp_max = 605, + water_damage = 1, + physical = true, + timer = 0, + env_damage_timer = 0, + visual = "wielditem", + visual_size = {x=0.5, y=0.5, z=0.5}, + textures = {"fishing:bobber_box"}, + -- { left , bottom , front , right , top , back } + collisionbox = {-0.125 , -0.5625, -0.125 , 0.125 , -0.3125, 0.125 }, + view_range = 7, +-- DESTROY BOBBER WHEN PUNCHING IT + on_punch = function (self, puncher, time_from_last_punch, tool_capabilities, dir) + local player = puncher:get_player_name() + if MESSAGES == true then + --minetest.chat_send_all("Your fish escaped.") + minetest.chat_send_player(player, "Your fish escaped.", false) + end + minetest.sound_play("fishing_bobber1", { + pos = self.object:getpos(), + gain = 0.5, + }) + self.object:remove() + end, +-- WHEN RIGHTCLICKING THE BOBBER THE FOLLOWING HAPPENS (CLICK AT THE RIGHT TIME WHILE HOLDING A FISHING POLE) + on_rightclick = function (self, clicker) + local item = clicker:get_wielded_item() + local player = clicker:get_player_name() + if item:get_name() == "fishing:pole" then + local inv = clicker:get_inventory() + local room_fish = inv:room_for_item("main", {name="fishing:fish_raw", count=1, wear=0, metadata=""}) + if self.object:get_hp() <= 300 then + if math.random(1, 100) < FISH_CHANCE then + local chance = math.random(1, 84) + if chance <= 60 then + if room_fish then + inv:add_item("main", {name="fishing:fish_raw", count=1, wear=0, metadata=""}) + if MESSAGES == true then + --minetest.chat_send_all("You caught a Fish.") + minetest.chat_send_player(player, "You caught a Fish.", false) + end + end + elseif chance <= 70 then + if minetest.get_modpath("animal_clownfish") ~= nil then + if inv:room_for_item("main", {name="animal_clownfish:clownfish", count=1, wear=0, metadata=""}) then + inv:add_item("main", {name="animal_clownfish:clownfish", count=1, wear=0, metadata=""}) + if MESSAGES == true then + --minetest.chat_send_all("You caught a Clownfish.") + minetest.chat_send_player(player, "You caught a Clownfish.", false) + end + end + else + if room_fish then + inv:add_item("main", {name="fishing:fish_raw", count=1, wear=0, metadata=""}) + if MESSAGES == true then + --minetest.chat_send_all("You caught a Fish.") + minetest.chat_send_player(player, "You caught a Fish.", false) + end + end + end + elseif chance <= 80 then + if minetest.get_modpath("animal_fish_blue_white") ~= nil then + if inv:room_for_item("main", {name="animal_fish_blue_white:fish_blue_white", count=1, wear=0, metadata=""}) then + inv:add_item("main", {name="animal_fish_blue_white:fish_blue_white", count=1, wear=0, metadata=""}) + if MESSAGES == true then + --minetest.chat_send_all("You caught a Blue white fish.") + minetest.chat_send_player(player, "You caught a Blue white fish.", false) + end + end + else + if room_fish then + inv:add_item("main", {name="fishing:fish_raw", count=1, wear=0, metadata=""}) + if MESSAGES == true then + --minetest.chat_send_all("You caught a Fish.") + minetest.chat_send_player(player, "You caught a Fish.", false) + end + end + end + elseif chance == 81 then + if inv:room_for_item("main", {name="default:stick", count=1, wear=0, metadata=""}) then + inv:add_item("main", {name="default:stick", count=1, wear=0, metadata=""}) + if MESSAGES == true then + --minetest.chat_send_all("You caught a Stick.") + minetest.chat_send_player(player, "You caught a Stick.", false) + end + end + elseif chance == 82 then + if minetest.get_modpath("mobs") ~= nil then + if inv:room_for_item("main", {name="mobs:rat", count=1, wear=0, metadata=""}) then + inv:add_item("main", {name="mobs:rat", count=1, wear=0, metadata=""}) + if MESSAGES == true then + --minetest.chat_send_all("You caught a Rat.") + minetest.chat_send_player(player, "You caught a Rat.", false) + end + end + elseif minetest.get_modpath("animal_rat") ~= nil then + if inv:room_for_item("main", {name="animal_rat:rat", count=1, wear=0, metadata=""}) then + inv:add_item("main", {name="animal_rat:rat", count=1, wear=0, metadata=""}) + if MESSAGES == true then + --minetest.chat_send_all("You caught a Rat.") + minetest.chat_send_player(player, "You caught a Rat.", false) + end + end + else + if inv:room_for_item("main", {name="rat", count=1, wear=0, metadata=""}) then + inv:add_item("main", {name="rat", count=1, wear=0, metadata=""}) + if MESSAGES == true then + --minetest.chat_send_all("You caught a Rat.") + minetest.chat_send_player(player, "You caught a Rat.", false) + end + end + end + end + elseif chance == 83 then + if minetest.get_modpath("flowers_plus") ~= nil then + if inv:room_for_item("main", {name="flowers:seaweed", count=1, wear=0, metadata=""}) then + inv:add_item("main", {name="flowers:seaweed", count=1, wear=0, metadata=""}) + if MESSAGES == true then + --minetest.chat_send_all("You caught a Clownfish.") + minetest.chat_send_player(player, "You caught some Seaweed.", false) + end + end + else + if room_fish then + inv:add_item("main", {name="fishing:fish_raw", count=1, wear=0, metadata=""}) + if MESSAGES == true then + --minetest.chat_send_all("You caught a Fish.") + minetest.chat_send_player(player, "You caught a Fish.", false) + end + end + end + elseif chance == 84 then + if minetest.get_modpath("seaplants") ~= nil then + if inv:room_for_item("main", {name="seaplants:leavysnackgreen", count=1, wear=0, metadata=""}) then + inv:add_item("main", {name="seaplants:leavysnackgreen", count=1, wear=0, metadata=""}) + if MESSAGES == true then + --minetest.chat_send_all("You caught a Clownfish.") + minetest.chat_send_player(player, "You caught a Leavy Snack.", false) + end + end + else + if room_fish then + inv:add_item("main", {name="fishing:fish_raw", count=1, wear=0, metadata=""}) + if MESSAGES == true then + --minetest.chat_send_all("You caught a Fish.") + minetest.chat_send_player(player, "You caught a Fish.", false) + end + end + end + else + if MESSAGES == true then + --minetest.chat_send_all("Your fish escaped.") + minetest.chat_send_player(player, "Your fish escaped.", false) + end + end + else + if MESSAGES == true then + --minetest.chat_send_all("Your fish escaped.") + minetest.chat_send_player(player, "Your fish escaped.", false) + end + end + else + if MESSAGES == true then + --minetest.chat_send_all("Your fish escaped.") + minetest.chat_send_player(player, "Your fish escaped.", false) + end + end + minetest.sound_play("fishing_bobber1", { + pos = self.object:getpos(), + gain = 0.5, + }) + self.object:remove() + end, +-- AS SOON AS THE BOBBER IS PLACED IT WILL ACT LIKE + on_step = function(self, dtime) + local pos = self.object:getpos() + if BOBBER_CHECK_RADIUS > 0 then + local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, BOBBER_CHECK_RADIUS) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name == "fishing:bobber_entity" then + if obj:get_luaentity() ~= self then + self.object:remove() + end + end + end + end + end + if math.random(1, 4) == 1 then + self.object:setyaw(self.object:getyaw()+((math.random(0,360)-180)/180*math.pi)) + end + for _,player in pairs(minetest.get_connected_players()) do + local s = self.object:getpos() + local p = player:getpos() + local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5 + if dist > self.view_range then + minetest.sound_play("fishing_bobber1", { + pos = self.object:getpos(), + gain = 0.5, + }) + self.object:remove() + end + end + local do_env_damage = function(self) + self.object:set_hp(self.object:get_hp()-self.water_damage) + --local pos = self.object:getpos() + if self.object:get_hp() == 600 then + self.object:moveto({x=pos.x,y=pos.y-0.03125,z=pos.z}) + elseif self.object:get_hp() == 595 then + self.object:moveto({x=pos.x,y=pos.y+0.03125,z=pos.z}) + elseif self.object:get_hp() == 590 then + self.object:moveto({x=pos.x,y=pos.y+0.03125,z=pos.z}) + elseif self.object:get_hp() == 585 then + self.object:moveto({x=pos.x,y=pos.y-0.03125,z=pos.z}) + self.object:set_hp(self.object:get_hp()-(math.random(1, 200))) + elseif self.object:get_hp() == 300 then + minetest.sound_play("fishing_bobber1", { + pos = self.object:getpos(), + gain = 0.5, + }) + if BOBBER_COLOR_CHANGE == true then + self.object:set_properties({ + textures = {"fishing:bobber_box_ready"}, + }) + end + self.object:moveto({x=pos.x,y=pos.y-0.0625,z=pos.z}) + elseif self.object:get_hp() == 295 then + self.object:moveto({x=pos.x,y=pos.y+0.0625,z=pos.z}) + elseif self.object:get_hp() == 290 then + self.object:moveto({x=pos.x,y=pos.y+0.0625,z=pos.z}) + elseif self.object:get_hp() == 285 then + self.object:moveto({x=pos.x,y=pos.y-0.0625,z=pos.z}) + elseif self.object:get_hp() < 284 then + self.object:moveto({x=pos.x+(0.001*(math.random(-8, 8))),y=pos.y,z=pos.z+(0.001*(math.random(-8, 8)))}) + elseif self.object:get_hp() == 0 then + minetest.sound_play("fishing_bobber1", { + pos = self.object:getpos(), + gain = 0.5, + }) + self.object:remove() + end + end + do_env_damage(self) + end, +} + +minetest.register_entity("fishing:bobber_entity", FISHING_BOBBER_ENTITY) + + diff --git a/todo/fishing/crafting.lua b/todo/fishing/crafting.lua new file mode 100644 index 0000000..348181f --- /dev/null +++ b/todo/fishing/crafting.lua @@ -0,0 +1,69 @@ +----------------------------------------------------------------------------------------------- +-- Fishing - Mossmanikin's version - Recipes 0.0.5 +----------------------------------------------------------------------------------------------- +-- original by wulfsdad (http://forum.minetest.net/viewtopic.php?id=4375) +-- this version by Mossmanikin +-- License (code & textures): WTFPL +-- Contains code from: animal_clownfish, animal_fish_blue_white, fishing (original), stoneage +-- Looked at code from: +-- Dependencies: default, farming +-- Supports: animal_clownfish, animal_fish_blue_white, animal_rat, mobs +----------------------------------------------------------------------------------------------- + +----------------------------------------------------------------------------------------------- +-- Fishing Pole +----------------------------------------------------------------------------------------------- +-- mc style +minetest.register_craft({ + output = "fishing:pole", + recipe = { + {"", "", "default:stick" }, + {"", "default:stick", "farming:string"}, + {"default:stick", "", "farming:string"}, + } +}) + +minetest.register_craft({ + output = "fishing:pole", + recipe = { + {"", "", "default:stick" }, + {"", "default:stick", "moreblocks:rope"}, + {"default:stick", "", "moreblocks:rope"}, + } +}) + +minetest.register_craft({ + output = "fishing:pole", + recipe = { + {"", "", "default:stick" }, + {"", "default:stick", "ropes:rope" }, + {"default:stick", "", "ropes:rope" }, + } +}) + + +----------------------------------------------------------------------------------------------- +-- Fish +----------------------------------------------------------------------------------------------- +minetest.register_craft({ + type = "cooking", + output = "fishing:fish", + recipe = "fishing:fish_raw", + cooktime = 2, +}) + +----------------------------------------------------------------------------------------------- +-- Sushi +----------------------------------------------------------------------------------------------- +minetest.register_craft({ + type = "shapeless", + output = "fishing:sushi", + recipe = {"fishing:fish_raw","flowers:seaweed"}, +}) + +minetest.register_craft({ + type = "shapeless", + output = "fishing:sushi", + recipe = {"fishing:fish_raw","seaplants:leavysnackgreen"}, +}) + diff --git a/todo/fishing/depends.txt b/todo/fishing/depends.txt new file mode 100644 index 0000000..3d9111b --- /dev/null +++ b/todo/fishing/depends.txt @@ -0,0 +1,2 @@ +default +farming diff --git a/todo/fishing/fishes.lua b/todo/fishing/fishes.lua new file mode 100644 index 0000000..0816886 --- /dev/null +++ b/todo/fishing/fishes.lua @@ -0,0 +1,30 @@ +----------------------------------------------------------------------------------------------- +-- Fish +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:fish_raw", { + description = "Fish", + groups = {}, + inventory_image = "fishing_fish.png", + on_use = minetest.item_eat(2), +}) + +----------------------------------------------------------------------------------------------- +-- Roasted Fish +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:fish", { + description = "Roasted Fish", + groups = {}, + inventory_image = "fishing_fish_cooked.png", + on_use = minetest.item_eat(4), +}) + +----------------------------------------------------------------------------------------------- +-- Sushi +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:sushi", { + description = "Sushi (Hoso Maki)", + groups = {}, + inventory_image = "fishing_sushi.png", + on_use = minetest.item_eat(8), +}) + diff --git a/todo/fishing/init.lua b/todo/fishing/init.lua new file mode 100644 index 0000000..b76cff7 --- /dev/null +++ b/todo/fishing/init.lua @@ -0,0 +1,309 @@ +----------------------------------------------------------------------------------------------- +local title = "Fishing - Mossmanikin's version" +local version = "0.1.2-LGN" +local mname = "fishing" +----------------------------------------------------------------------------------------------- +-- original by wulfsdad (http://forum.minetest.net/viewtopic.php?id=4375) +-- this version by Mossmanikin +-- License (code & textures): WTFPL (exception below) +-- except for: "fishing_fish_cooked.png" contributed by Tirifto, +-- released into public domain under CC0. +-- Contains code from: animal_clownfish, animal_fish_blue_white, fishing (original), stoneage +-- Looked at code from: default, farming +-- Dependencies: default +-- Supports: animal_clownfish, animal_fish_blue_white, animal_rat, mobs +----------------------------------------------------------------------------------------------- + +-- todo: item wear done +-- automatic re-baiting option done +-- different types of fish, sort of +-- add sound done +-- bobber done +-- change rainworms filling inv & make 'em disappear done + +-- placable fishing rod for decoration done +-- make bobber move slowly while fish on hook done +-- catch bigger fish with smaller +-- change color of bobber when fish on hook done + +----------------------------------------------------------------------------------------------- + +dofile(minetest.get_modpath("fishing").."/settings.txt") +dofile(minetest.get_modpath("fishing").."/bobber.lua") +dofile(minetest.get_modpath("fishing").."/crafting.lua") +dofile(minetest.get_modpath("fishing").."/fishes.lua") +dofile(minetest.get_modpath("fishing").."/worm.lua") + +----------------------------------------------------------------------------------------------- +-- Fishing Pole +----------------------------------------------------------------------------------------------- + +local function rod_wear(itemstack, user, pointed_thing, uses) + itemstack:add_wear(65535/(uses-1)) + return itemstack +end + +minetest.register_tool("fishing:pole", { + + description = "Fishing Pole", + groups = {}, + inventory_image = "fishing_pole.png", + wield_image = "fishing_pole.png^[transformFXR270", + stack_max = 1, + liquids_pointable = true, + on_use = function (itemstack, user, pointed_thing) + if pointed_thing and pointed_thing.under then + local pt = pointed_thing + local node = minetest.env:get_node(pt.under) + if string.find(node.name, "default:water") then + local player = user:get_player_name() + local inv = user:get_inventory() + if inv:get_stack("main", user:get_wield_index()+1):get_name() == "fishing:bait_worm" then + inv:remove_item("main", "fishing:bait_worm") + minetest.sound_play("fishing_bobber2", { + pos = pt.under, + gain = 0.5, + }) + minetest.env:add_entity({interval = 1,x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, "fishing:bobber_entity") + + if WEAR_OUT == true then + return rod_wear(itemstack, user, pointed_thing, 30) + else + return {name="fishing:pole", count=1, wear=0, metadata=""} + end + end + end + end + return nil + end, + on_place = function(itemstack, placer, pointed_thing) + local pt = pointed_thing + if minetest.get_node(pt.under).name~="default:water_source" and minetest.get_node(pt.under).name~="default:water_flowing" then + local wear = itemstack:get_wear() + local direction = minetest.dir_to_facedir(placer:get_look_dir()) + local meta1 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y , z=pt.under.z}) + local meta2 = minetest.env:get_meta({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}) + minetest.set_node({x=pt.under.x, y=pt.under.y+1, z=pt.under.z}, {name="fishing:pole_deco", param2=direction}) + meta1:set_int("wear", wear) + meta2:set_int("wear", wear) + itemstack:take_item() + end + return itemstack + end, +}) + +if SIMPLE_DECO_FISHING_POLE == true then +minetest.register_node("fishing:pole_deco", { + description = "Fishing Pole", + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + tiles = { + "fishing_pole_top.png", "fishing_pole_bottom.png", "fishing_pole.png", "fishing_pole.png^[transformFX", "fishing_pole_front.png", "fishing_pole_back.png", + }, + groups = { + snappy=3, + flammable=2, + not_in_creative_inventory=1 + }, + node_box = { + type = "fixed", + fixed = { + {-0.5/3, -1.5/3, -1.5/3, 0.5/3, -0.5/3, -0.5/3},{-0.5/3, -0.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3},{-0.5/3, 0.5/3, 0.5/3, 0.5/3, 1.5/3, 1.5/3},{-0.5/3, -1.5/3, 0.5/3, 0.5/3, 0.5/3, 1.5/3}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5/3, -1.5/3, -1.5/3, 0.5/3, -0.5/3, -0.5/3},{-0.5/3, -0.5/3, -0.5/3, 0.5/3, 0.5/3, 0.5/3},{-0.5/3, 0.5/3, 0.5/3, 0.5/3, 1.5/3, 1.5/3},{-0.5/3, -1.5/3, 0.5/3, 0.5/3, 0.5/3, 1.5/3}, + } + }, + sounds = default.node_sound_wood_defaults(), + on_dig = function(pos, node, digger) + if digger:is_player() and digger:get_inventory() then + local meta = minetest.env:get_meta(pos) + local wear_out = meta:get_int("wear") + digger:get_inventory():add_item("main", {name="fishing:pole", count=1, wear=wear_out, metadata=""}) + end + minetest.remove_node(pos) + end, +}) + +else +minetest.register_node("fishing:pole_deco", { + description = "Fishing Pole", + inventory_image = "fishing_pole.png", + wield_image = "fishing_pole.png^[transformFXR270", + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + tiles = { + "fishing_pole_top.png", + "fishing_pole_bottom.png", + "fishing_pole_deco.png", -- right + "fishing_pole_deco.png^[transformFX", -- left + "fishing_pole_back.png", + "fishing_pole_front.png" + }, + node_box = { + type = "fixed", +-- { left , bottom , front , right , top , back } + fixed = { + {-1/32 , -1/16 , 14/16 , 1/32 , 6/16 , 15/16}, + {-1/32 , -3/16 , 13/16 , 1/32 , -1/16 , 14/16}, + {-1/32 , -4/16 , 12/16 , 1/32 , -3/16 , 13/16}, + {-1/32 , -5/16 , 11/16 , 1/32 , -4/16 , 12/16}, + {-1/32 , -6/16 , 9/16 , 1/32 , -5/16 , 11/16}, + {-1/32 , -5/16 , 9/16 , 1/32 , -4/16 , 10/16}, + -- stick + {-1/32 , 6/16 , 12/16 , 1/32 , 7/16 , 15/16}, -- top + {-1/32 , 5/16 , 11/16 , 1/32 , 7/16 , 12/16}, + {-1/32 , 5/16 , 10/16 , 1/32 , 6/16 , 11/16}, + {-1/32 , 4/16 , 9/16 , 1/32 , 6/16 , 10/16}, + {-1/32 , 3/16 , 8/16 , 1/32 , 5/16 , 9/16}, + {-1/32 , 2/16 , 7/16 , 1/32 , 4/16 , 8/16}, + {-1/32 , 1/16 , 6/16 , 1/32 , 3/16 , 7/16}, + {-1/32 , 0 , 5/16 , 1/32 , 2/16 , 6/16}, + {-1/32 , -2/16 , 4/16 , 1/32 , 1/16 , 5/16}, + {-1/32 , -3/16 , 3/16 , 1/32 , 0 , 4/16}, + {-1/32 , -5/16 , 2/16 , 1/32 , -1/16 , 3/16}, + {-1/32 , -7/16 , 1/16 , 1/32 , -3/16 , 2/16}, + {-1/32 , -1/2 , 0 , 1/32 , -5/16 , 1/16}, -- bottom + } + }, + selection_box = { + type = "fixed", + fixed = { + {-1/16 , -1/2 , 0 , 1/16 , 1/2 , 1 }, + } + }, + groups = { + snappy=3, + flammable=2, + not_in_creative_inventory=1 + }, + sounds = default.node_sound_wood_defaults(), + on_dig = function(pos, node, digger) + if digger:is_player() and digger:get_inventory() then + local meta = minetest.env:get_meta(pos) + local wear_out = meta:get_int("wear") + digger:get_inventory():add_item("main", {name="fishing:pole", count=1, wear=wear_out, metadata=""}) + end + minetest.remove_node(pos) + end, +}) + +end +----------------------------------------------------------------------------------------------- +-- GETTING WORMS +----------------------------------------------------------------------------------------------- +-- get worms from digging in dirt: +if NEW_WORM_SOURCE == false then + +minetest.register_node(":default:dirt", { + description = "Dirt", + tiles = {"default_dirt.png"}, + is_ground_content = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults(), + after_dig_node = function (pos, oldnode, oldmetadata, digger) + if math.random(1, 100) < WORM_CHANCE then + local tool_in_use = digger:get_wielded_item():get_name() + if tool_in_use == "" or tool_in_use == "default:dirt" then + minetest.env:add_entity({x = pos.x, y = pos.y+0.4, z = pos.z}, "fishing:bait_worm_entity") + --local inv = digger:get_inventory() + --if inv:room_for_item("main", {name="fishing:bait_worm", count=1, wear=0, metadata=""}) then + --inv:add_item("main", {name="fishing:bait_worm", count=1, wear=0, metadata=""}) + --end + end + end + end, +}) + +else +-- get worms from digging with hoes: + +-- turns nodes with group soil=1 into soil +local function hoe_on_use(itemstack, user, pointed_thing, uses) + local pt = pointed_thing + -- check if pointing at a node + if not pt then + return + end + if pt.type ~= "node" then + return + end + + local under = minetest.get_node(pt.under) + local p = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z} + local above = minetest.get_node(p) + + -- return if any of the nodes is not registered + if not minetest.registered_nodes[under.name] then + return + end + if not minetest.registered_nodes[above.name] then + return + end + + -- check if the node above the pointed thing is air + if above.name ~= "air" then + return + end + + -- check if pointing at dirt + if minetest.get_item_group(under.name, "soil") ~= 1 then + return + end + + -- turn the node into soil, play sound, get worm and wear out item + minetest.set_node(pt.under, {name="farming:soil"}) + minetest.sound_play("default_dig_crumbly", { + pos = pt.under, + gain = 0.5, + }) + --local inv = user:get_inventory() + if math.random(1, 100) < WORM_CHANCE then + minetest.env:add_entity({x=pt.under.x, y=pt.under.y+0.4, z=pt.under.z}, "fishing:bait_worm_entity") + --if inv:room_for_item("main", {name="fishing:bait_worm", count=1, wear=0, metadata=""}) then + --inv:add_item("main", {name="fishing:bait_worm", count=1, wear=0, metadata=""}) + --end + end + itemstack:add_wear(65535/(uses-1)) + return itemstack +end + +-- didn't change the hoes, just here because hoe_on_use is local +minetest.register_tool(":farming:hoe_wood", { + description = "Wooden Hoe", + inventory_image = "farming_tool_woodhoe.png", + on_use = function(itemstack, user, pointed_thing) + return hoe_on_use(itemstack, user, pointed_thing, 30) + end, +}) +minetest.register_tool(":farming:hoe_stone", { + description = "Stone Hoe", + inventory_image = "farming_tool_stonehoe.png", + on_use = function(itemstack, user, pointed_thing) + return hoe_on_use(itemstack, user, pointed_thing, 90) + end, +}) +minetest.register_tool(":farming:hoe_steel", { + description = "Steel Hoe", + inventory_image = "farming_tool_steelhoe.png", + on_use = function(itemstack, user, pointed_thing) + return hoe_on_use(itemstack, user, pointed_thing, 200) + end, +}) +minetest.register_tool(":farming:hoe_bronze", { + description = "Bronze Hoe", + inventory_image = "farming_tool_bronzehoe.png", + on_use = function(itemstack, user, pointed_thing) + return hoe_on_use(itemstack, user, pointed_thing, 220) + end, +}) + +end +----------------------------------------------------------------------------------------------- +print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...") +----------------------------------------------------------------------------------------------- diff --git a/todo/fishing/settings.txt b/todo/fishing/settings.txt new file mode 100644 index 0000000..4bbb1a4 --- /dev/null +++ b/todo/fishing/settings.txt @@ -0,0 +1,8 @@ +MESSAGES = true +FISH_CHANCE = 70 +NEW_WORM_SOURCE = false +WORM_CHANCE = 60 +WEAR_OUT = true +BOBBER_CHECK_RADIUS = 5 +BOBBER_COLOR_CHANGE = true +SIMPLE_DECO_FISHING_POLE = true diff --git a/todo/fishing/sounds/SoundLicense.txt b/todo/fishing/sounds/SoundLicense.txt new file mode 100644 index 0000000..1f137b0 --- /dev/null +++ b/todo/fishing/sounds/SoundLicense.txt @@ -0,0 +1,4 @@ +These sounds are used for the Mod for Minetest; Fishing - Mossmanikin's version. +The included sounds are http://creativecommons.org/licenses/by-nc-sa/3.0/ + +--"fishing_bobber1" & "fishing_bobber2" sampled from "01260 water swimming splashing 1.wav", Attribution Noncommercial License, Robinhood76, http://www.freesound.org/people/Robinhood76/sounds/79657/ \ No newline at end of file diff --git a/todo/fishing/sounds/fishing_bobber1.ogg b/todo/fishing/sounds/fishing_bobber1.ogg new file mode 100644 index 0000000..6c86a0c Binary files /dev/null and b/todo/fishing/sounds/fishing_bobber1.ogg differ diff --git a/todo/fishing/sounds/fishing_bobber2.ogg b/todo/fishing/sounds/fishing_bobber2.ogg new file mode 100644 index 0000000..932cf0b Binary files /dev/null and b/todo/fishing/sounds/fishing_bobber2.ogg differ diff --git a/todo/fishing/textures/alternates/fishing_bobber.png b/todo/fishing/textures/alternates/fishing_bobber.png new file mode 100644 index 0000000..5779a71 Binary files /dev/null and b/todo/fishing/textures/alternates/fishing_bobber.png differ diff --git a/todo/fishing/textures/alternates/fishing_pole.png b/todo/fishing/textures/alternates/fishing_pole.png new file mode 100644 index 0000000..4625a09 Binary files /dev/null and b/todo/fishing/textures/alternates/fishing_pole.png differ diff --git a/todo/fishing/textures/fishing_bobber.png b/todo/fishing/textures/fishing_bobber.png new file mode 100644 index 0000000..d86bf1c Binary files /dev/null and b/todo/fishing/textures/fishing_bobber.png differ diff --git a/todo/fishing/textures/fishing_bobber_ready.png b/todo/fishing/textures/fishing_bobber_ready.png new file mode 100644 index 0000000..2a37b4e Binary files /dev/null and b/todo/fishing/textures/fishing_bobber_ready.png differ diff --git a/todo/fishing/textures/fishing_fish.png b/todo/fishing/textures/fishing_fish.png new file mode 100644 index 0000000..0976617 Binary files /dev/null and b/todo/fishing/textures/fishing_fish.png differ diff --git a/todo/fishing/textures/fishing_fish_cooked.png b/todo/fishing/textures/fishing_fish_cooked.png new file mode 100644 index 0000000..f572d30 Binary files /dev/null and b/todo/fishing/textures/fishing_fish_cooked.png differ diff --git a/todo/fishing/textures/fishing_pole.png b/todo/fishing/textures/fishing_pole.png new file mode 100644 index 0000000..8246751 Binary files /dev/null and b/todo/fishing/textures/fishing_pole.png differ diff --git a/todo/fishing/textures/fishing_pole_back.png b/todo/fishing/textures/fishing_pole_back.png new file mode 100644 index 0000000..575f1a9 Binary files /dev/null and b/todo/fishing/textures/fishing_pole_back.png differ diff --git a/todo/fishing/textures/fishing_pole_bottom.png b/todo/fishing/textures/fishing_pole_bottom.png new file mode 100644 index 0000000..2b7871a Binary files /dev/null and b/todo/fishing/textures/fishing_pole_bottom.png differ diff --git a/todo/fishing/textures/fishing_pole_deco.png b/todo/fishing/textures/fishing_pole_deco.png new file mode 100644 index 0000000..9224988 Binary files /dev/null and b/todo/fishing/textures/fishing_pole_deco.png differ diff --git a/todo/fishing/textures/fishing_pole_front.png b/todo/fishing/textures/fishing_pole_front.png new file mode 100644 index 0000000..ec2b8f9 Binary files /dev/null and b/todo/fishing/textures/fishing_pole_front.png differ diff --git a/todo/fishing/textures/fishing_pole_on_use.png b/todo/fishing/textures/fishing_pole_on_use.png new file mode 100644 index 0000000..33414b5 Binary files /dev/null and b/todo/fishing/textures/fishing_pole_on_use.png differ diff --git a/todo/fishing/textures/fishing_pole_simple.png b/todo/fishing/textures/fishing_pole_simple.png new file mode 100644 index 0000000..afa5b19 Binary files /dev/null and b/todo/fishing/textures/fishing_pole_simple.png differ diff --git a/todo/fishing/textures/fishing_pole_top.png b/todo/fishing/textures/fishing_pole_top.png new file mode 100644 index 0000000..e72a946 Binary files /dev/null and b/todo/fishing/textures/fishing_pole_top.png differ diff --git a/todo/fishing/textures/fishing_sushi.png b/todo/fishing/textures/fishing_sushi.png new file mode 100644 index 0000000..c64ceca Binary files /dev/null and b/todo/fishing/textures/fishing_sushi.png differ diff --git a/todo/fishing/textures/fishing_worm.png b/todo/fishing/textures/fishing_worm.png new file mode 100644 index 0000000..9be4dd7 Binary files /dev/null and b/todo/fishing/textures/fishing_worm.png differ diff --git a/todo/fishing/textures/old/fishing_pole_wield.png b/todo/fishing/textures/old/fishing_pole_wield.png new file mode 100644 index 0000000..cb0dcc9 Binary files /dev/null and b/todo/fishing/textures/old/fishing_pole_wield.png differ diff --git a/todo/fishing/worm.lua b/todo/fishing/worm.lua new file mode 100644 index 0000000..e05eea2 --- /dev/null +++ b/todo/fishing/worm.lua @@ -0,0 +1,118 @@ +----------------------------------------------------------------------------------------------- +-- Fishing - Mossmanikin's version - Worm 0.0.2 +----------------------------------------------------------------------------------------------- +-- License (code & textures): WTFPL +-- Contains code from: fishing (original), mobs +-- Looked at code from: my_mobs +-- Dependencies: default +----------------------------------------------------------------------------------------------- +----------------------------------------------------------------------------------------------- +-- WORM ITEM +----------------------------------------------------------------------------------------------- +minetest.register_craftitem("fishing:bait_worm", { + description = "Worm", + groups = { fishing_bait=1 }, + inventory_image = "fishing_worm.png", + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) + local pt = pointed_thing + minetest.env:add_entity({x=pt.under.x, y=pt.under.y+0.6, z=pt.under.z}, "fishing:bait_worm_entity") + itemstack:take_item() + return itemstack + end, + on_drop = function(itemstack, dropper, pos) + minetest.env:add_entity({x = pos.x, y = pos.y, z = pos.z}, "fishing:bait_worm_entity") + itemstack:take_item() + return itemstack + end, +}) + +----------------------------------------------------------------------------------------------- +-- WORM MOB +----------------------------------------------------------------------------------------------- +minetest.register_entity("fishing:bait_worm_entity", { + hp_max = 300, + damage_over_time = 1, + collisionbox = {-3/16, -3/16, -3/16, 3/16, 3/16, 3/16}, + visual = "sprite", + visual_size = {x=1/2, y=1/2}, + textures = { "fishing_worm.png", "fishing_worm.png"}, + view_range = 32, + -- Don't punch this poor creature... + on_punch = function(self, puncher) + self.object:remove() + end, + -- ...softly take it into your hand. + on_rightclick = function(self, clicker) + if clicker:is_player() and clicker:get_inventory() then + clicker:get_inventory():add_item("main", "fishing:bait_worm") + self.object:remove() + end + end, + -- AI :D + on_step = function(self, dtime) + local pos = self.object:getpos() + local n = minetest.env:get_node({x=pos.x,y=pos.y-0.3,z=pos.z}) + -- despawn when no player in range + for _,player in pairs(minetest.get_connected_players()) do + local s = self.object:getpos() + local p = player:getpos() + local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5 + if dist > self.view_range then + self.object:remove() + end + end + -- move in world + local look_whats_up = function(self) + self.object:set_hp(self.object:get_hp()-self.damage_over_time) -- creature is getting older + if n.name == "air" then -- fall when in air + self.object:moveto({x=pos.x,y=pos.y-0.5,z=pos.z}) + self.object:set_hp(self.object:get_hp()-75) + + --if n.name == "snappy" then -- fall when leaves or similar + elseif minetest.get_item_group(n.name, "snappy") ~= 0 then + self.object:moveto({x=pos.x+(0.001*(math.random(-32, 32))),y=pos.y-(0.001*(math.random(0, 64))),z=pos.z+(0.001*(math.random(-32, 32)))}) + + + elseif string.find(n.name, "default:water") then -- sink when in water + self.object:moveto({x=pos.x,y=pos.y-0.25,z=pos.z}) + self.object:set_hp(self.object:get_hp()-37) + + elseif minetest.get_item_group(n.name, "soil") ~= 0 then + if minetest.get_item_group(minetest.env:get_node({x=pos.x,y=pos.y-0.1,z=pos.z}).name, "soil") == 0 and self.object:get_hp() > 200 then + self.object:set_hp(199) + elseif self.object:get_hp() > 200 then -- leave dirt to see whats going on + self.object:moveto({x=pos.x+(0.001*(math.random(-2, 2))),y=pos.y+0.003,z=pos.z+(0.001*(math.random(-2, 2)))}) + elseif self.object:get_hp() < 199 then -- no rain here, let's get outa here + self.object:moveto({x=pos.x+(0.001*(math.random(-2, 2))),y=pos.y-0.001,z=pos.z+(0.001*(math.random(-2, 2)))}) + elseif self.object:get_hp() == 0 then + self.object:remove() + end + else -- check if there's dirt anywhere (not finished) + local check_group = minetest.get_item_group + local goal_01 = check_group(minetest.env:get_node({x = pos.x + 1, y = pos.y-0.4, z = pos.z }).name, "soil") + local goal_02 = check_group(minetest.env:get_node({x = pos.x, y = pos.y-0.4, z = pos.z + 1}).name, "soil") + local goal_03 = check_group(minetest.env:get_node({x = pos.x - 1, y = pos.y-0.4, z = pos.z }).name, "soil") + local goal_04 = check_group(minetest.env:get_node({x = pos.x, y = pos.y-0.4, z = pos.z - 1}).name, "soil") + + local goal_1a = check_group(minetest.env:get_node({x = pos.x + 1, y = pos.y+0.6, z = pos.z }).name, "soil") + local goal_2a = check_group(minetest.env:get_node({x = pos.x, y = pos.y+0.6, z = pos.z + 1}).name, "soil") + local goal_3a = check_group(minetest.env:get_node({x = pos.x - 1, y = pos.y+0.6, z = pos.z }).name, "soil") + local goal_4a = check_group(minetest.env:get_node({x = pos.x, y = pos.y+0.6, z = pos.z - 1}).name, "soil") + -- if there's dirt nearby, go there + if goal_01 ~= 0 or goal_1a ~= 0 then + self.object:moveto({x=pos.x+0.002,y=pos.y,z=pos.z+(0.001*(math.random(-2, 2)))}) + elseif goal_02 ~= 0 or goal_2a ~= 0 then + self.object:moveto({x=pos.x+(0.001*(math.random(-2, 2))),y=pos.y,z=pos.z+0.002}) + elseif goal_03 ~= 0 or goal_3a ~= 0 then + self.object:moveto({x=pos.x-0.002,y=pos.y,z=pos.z+(0.001*(math.random(-2, 2)))}) + elseif goal_04 ~= 0 or goal_4a ~= 0 then + self.object:moveto({x=pos.x+(0.001*(math.random(-2, 2))),y=pos.y,z=pos.z-0.002}) + else -- I'm lost, no dirt + self.object:moveto({x=pos.x+(0.001*(math.random(-8, 8))),y=pos.y,z=pos.z+(0.001*(math.random(-8, 8)))}) + end + end + end + look_whats_up(self) + end, +}) \ No newline at end of file