From 4c1e1b0960fb57cc87db687bac2dc25819072ef9 Mon Sep 17 00:00:00 2001 From: stub Date: Wed, 29 Nov 2017 22:03:25 +0300 Subject: [PATCH] Fixed some bugs, removed obsolete code, added correct survival recipies and item wear --- build_arrow.lua | 117 -------------------- defaults.conf | 34 ------ defaults.lua | 25 +++-- depends.txt | 1 - dig_arrow.lua | 4 +- fire_arrow.lua | 142 ------------------------- fireworks_arrows.lua | 57 +--------- init.lua | 10 -- lightning_arrow.lua | 6 +- rope_arrow.lua | 8 +- standard_arrows.lua | 4 +- textures/compound_bow.xcf | Bin 8337 -> 0 bytes textures/compound_bow_unload.xcf | Bin 4483 -> 0 bytes textures/repeater_crossbow.xcf | Bin 7040 -> 0 bytes textures/throwing_arrow_lightning.xcf | Bin 1741 -> 0 bytes textures/throwing_rope_arrow.xcf | Bin 2385 -> 0 bytes throwing.conf => throwing.conf.example | 15 ++- tools.lua | 32 +++--- torch_arrow.lua | 25 ++--- 19 files changed, 63 insertions(+), 417 deletions(-) delete mode 100755 build_arrow.lua delete mode 100755 defaults.conf delete mode 100755 fire_arrow.lua delete mode 100755 textures/compound_bow.xcf delete mode 100755 textures/compound_bow_unload.xcf delete mode 100755 textures/repeater_crossbow.xcf delete mode 100755 textures/throwing_arrow_lightning.xcf delete mode 100755 textures/throwing_rope_arrow.xcf rename throwing.conf => throwing.conf.example (54%) diff --git a/build_arrow.lua b/build_arrow.lua deleted file mode 100755 index 6c66828..0000000 --- a/build_arrow.lua +++ /dev/null @@ -1,117 +0,0 @@ -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 = "", - player = "", - inventory = false, - stack = false, - bow_damage = 0, -} - -THROWING_ARROW_ENTITY.on_step = function(self, dtime) - self.timer=self.timer+dtime - local newpos = self.object:getpos() - if self.lastpos.x ~= nil then - for _, pos in pairs(throwing_get_trajectoire(self, newpos)) do - local node = minetest.get_node(pos) - local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 1) - for k, obj in pairs(objs) do - if throwing_is_player(self.player, obj) or throwing_is_entity(obj) then - if self.inventory and self.stack and not minetest.setting_getbool("creative_mode") then - self.inventory:remove_item("main", {name=self.stack:get_name()}) - end - if self.stack then - minetest.add_item(pos, {name=self.stack:get_name()}) - end - local toughness = 0.95 - if math.random() < toughness then - minetest.add_item(pos, 'throwing:arrow_build') - else - minetest.add_item(pos, 'default:stick') - end - self.object:remove() - return - end - end - - if node.name ~= "air" - and not string.find(node.name, "water_") - and not (string.find(node.name, 'grass') and not string.find(node.name, 'dirt')) - and not (string.find(node.name, 'farming:') and not string.find(node.name, 'soil')) - and not string.find(node.name, 'flowers:') - and not string.find(node.name, 'fire:') then - if node.name ~= "ignore" and self.inventory and self.stack then - if not minetest.is_protected(self.lastpos, "") - and not string.find(node.name, "lava") - and not string.find(node.name, "torch") - and self.stack:get_definition().type == "node" - and self.stack:get_name() ~= "default:torch" then - minetest.place_node(self.lastpos, {name=self.stack:get_name()}) - else - minetest.add_item(self.lastpos, {name=self.stack:get_name()}) - end - if not minetest.setting_getbool("creative_mode") then - self.inventory:remove_item("main", {name=self.stack:get_name()}) - end - end - minetest.add_item(self.lastpos, 'default:shovel_steel') - self.object:remove() - return - end - self.lastpos={x=pos.x, y=pos.y, z=pos.z} - end - end - self.lastpos={x=newpos.x, y=newpos.y, z=newpos.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'}, - } -}) - -minetest.register_craft({ - output = 'throwing:arrow_build', - recipe = { - {'default:shovel_steel', 'default:stick', 'default:stick'}, - } -}) diff --git a/defaults.conf b/defaults.conf deleted file mode 100755 index e44b769..0000000 --- a/defaults.conf +++ /dev/null @@ -1,34 +0,0 @@ - --- Bows -DISABLE_WOODEN_BOW = false -DISABLE_LONGBOW = false -DISABLE_COMPOSITE_BOW = false -DISABLE_STEEL_BOW = false -DISABLE_ROYAL_BOW = false - --- Crossbows -DISABLE_CROSSBOW = false -DISABLE_ARBALEST = false -DISABLE_AUTOMATED_ARBALEST = false - --- Special Arrows -DISABLE_TELEPORT_ARROW = false -DISABLE_DIG_ARROW = false -- Deactivated to prevent griefing -DISABLE_BUILD_ARROW = false -- Deactivated to prevent griefing -DISABLE_TNT_ARROW = false -- Deactivated to prevent griefing -DISABLE_FIRE_ARROW = false -- Deactivated to prevent griefing -DISABLE_TORCH_ARROW = false -DISABLE_SHELL_ARROW = false -- Deactivated until crash bug related to this arrow is resolved -DISABLE_ROPE_ARROW = false - --- Fireworks arrows -DISABLE_FIREWORKS_BLUE_ARROW = false -DISABLE_FIREWORKS_RED_ARROW = false - --- Normal arrows -DISABLE_STONE_ARROW = false -DISABLE_STEEL_ARROW = false -DISABLE_OBSIDIAN_ARROW = false -DISABLE_DIAMOND_ARROW = false --- lesser damages to better damages - diff --git a/defaults.lua b/defaults.lua index 90518fa..c03bae4 100755 --- a/defaults.lua +++ b/defaults.lua @@ -1,25 +1,32 @@ +-- Bows DISABLE_WOODEN_BOW = false DISABLE_LONGBOW = false DISABLE_COMPOSITE_BOW = false DISABLE_STEEL_BOW = false -DISABLE_ROYAL_BOW = false +DISABLE_COMPOUND_BOW = false + +-- Crossbows DISABLE_CROSSBOW = false +DISABLE_REPEATING_CROSSBOW = false DISABLE_ARBALEST = false DISABLE_AUTOMATED_ARBALEST = false -DISABLE_TELEPORT_ARROW = true -DISABLE_DIG_ARROW = true -DISABLE_BUILD_ARROW = true -DISABLE_TNT_ARROW = true -DISABLE_FIRE_ARROW = true +-- Special Arrows +DISABLE_TELEPORT_ARROW = false +DISABLE_DIG_ARROW = false +DISABLE_TNT_ARROW = false DISABLE_TORCH_ARROW = false -DISABLE_SHELL_ARROW = false +DISABLE_ROPE_ARROW = false +DISABLE_LIGHTNING_ARROW = false +-- Fireworks arrows DISABLE_FIREWORKS_BLUE_ARROW = false DISABLE_FIREWORKS_RED_ARROW = false +DISABLE_FIREWORKS_GREEN_ARROW = false +-- Normal arrows DISABLE_STONE_ARROW = false DISABLE_STEEL_ARROW = false -DISABLE_DIAMOND_ARROW = false DISABLE_OBSIDIAN_ARROW = false - +DISABLE_DIAMOND_ARROW = false +DISABLE_MITHRIL_ARROW = false diff --git a/depends.txt b/depends.txt index c1d3108..5bddd6f 100755 --- a/depends.txt +++ b/depends.txt @@ -1,7 +1,6 @@ default farming dye -bucket? fire? tnt? moreores? diff --git a/dig_arrow.lua b/dig_arrow.lua index 3cdd689..993901a 100755 --- a/dig_arrow.lua +++ b/dig_arrow.lua @@ -105,14 +105,14 @@ end minetest.register_entity("throwing:arrow_dig_entity", THROWING_ARROW_ENTITY) minetest.register_craft({ - output = 'throwing:arrow_dig', + output = 'throwing:arrow_dig 4', recipe = { {'default:stick', 'default:stick', 'default:pick_steel'}, } }) minetest.register_craft({ - output = 'throwing:arrow_dig', + output = 'throwing:arrow_dig 4', recipe = { {'default:pick_steel', 'default:stick', 'default:stick'}, } diff --git a/fire_arrow.lua b/fire_arrow.lua deleted file mode 100755 index bc40246..0000000 --- a/fire_arrow.lua +++ /dev/null @@ -1,142 +0,0 @@ -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, - visual = "wielditem", - visual_size = {x=0.1, y=0.1}, - textures = {"throwing:arrow_fire_box"}, - lastpos={}, - collisionbox = {0,0,0,0,0,0}, - player = "", -} - -THROWING_ARROW_ENTITY.on_step = function(self, dtime) - local newpos = self.object:getpos() - if self.lastpos.x ~= nil then - for _, pos in pairs(throwing_get_trajectoire(self, newpos)) do - local node = minetest.get_node(pos) - local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) - for k, obj in pairs(objs) do - local objpos = obj:getpos() - if throwing_is_player(self.player, obj) or throwing_is_entity(obj) then - if throwing_touch(pos, objpos) then - local puncher = self.object - if self.player and minetest.get_player_by_name(self.player) then - puncher = minetest.get_player_by_name(self.player) - end - local speed = vector.length(self.object:getvelocity()) - local damage = ((speed + 15)^1.2)/10 - obj:punch(puncher, 1.0, { - full_punch_interval=1.0, - damage_groups={fleshy=damage}, - }, nil) - if math.random(0,100) % 2 == 0 then -- 50% of chance to drop //MFF (Mg|07/27/15) - minetest.add_item(pos, 'default:stick') - end - self.object:remove() - return - end - end - end - - if node.name ~= "air" - and node.name ~= "throwing:light" - and node.name ~= "fire:basic_flame" - and not (string.find(node.name, 'grass') and not string.find(node.name, 'dirt')) - and not (string.find(node.name, 'farming:') and not string.find(node.name, 'soil')) - and not string.find(node.name, 'flowers:') - and not string.find(node.name, 'fire:') then - if node.name ~= "ignore" then - minetest.set_node(self.lastpos, {name="fire:basic_flame"}) - end - self.object:remove() - return - end - - if minetest.get_node(pos).name == "air" then - minetest.set_node(pos, {name="throwing:light"}) - end - if minetest.get_node(self.lastpos).name == "throwing:light" then - minetest.remove_node(self.lastpos) - end - self.lastpos={x=pos.x, y=pos.y, z=pos.z} - end - end - self.lastpos={x=newpos.x, y=newpos.y, z=newpos.z} -end - - -minetest.register_entity("throwing:arrow_fire_entity", THROWING_ARROW_ENTITY) - -minetest.register_node("throwing:light", { - drawtype = "airlike", - paramtype = "light", - sunlight_propagates = true, - tiles = {"throwing_empty.png"}, - light_source = default.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.remove_node(pos) - end -}) - -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_craft({ - output = 'throwing:arrow_fire 4', - recipe = { - {'bucket:bucket_lava', 'default:stick', 'default:stick'}, - }, - replacements = { - {"bucket:bucket_lava", "bucket:bucket_empty"} - } -}) diff --git a/fireworks_arrows.lua b/fireworks_arrows.lua index 8efc2c1..0ad9b31 100755 --- a/fireworks_arrows.lua +++ b/fireworks_arrows.lua @@ -83,10 +83,6 @@ local function throwing_register_fireworks(color, color2, desc) local function boom(pos) minetest.sound_play("throwing_firework_boom", {pos=pos, gain=1, max_hear_distance=2*64}) - if minetest.get_node(pos).name == 'air' or minetest.get_node(pos).name == 'throwing:firework_trail' then - minetest.add_node(pos, {name="throwing:firework_boom"}) - minetest.get_node_timer(pos):start(0.2) - end add_effects(pos, radius) end @@ -136,15 +132,11 @@ local function throwing_register_fireworks(color, color2, desc) end end local node = minetest.get_node(newpos) - if self.timer > 2 or node.name ~= "air" and node.name ~= "throwing:firework_trail" then + if self.timer > 2 or node.name ~= "air" then boom(self.lastpos) self.object:remove() return end - if node.name == 'air' then - minetest.add_node(newpos, {name="throwing:firework_trail"}) - minetest.get_node_timer(newpos):start(0.1) - end end self.lastpos={x=newpos.x, y=newpos.y, z=newpos.z} end @@ -153,16 +145,16 @@ local function throwing_register_fireworks(color, color2, desc) minetest.register_entity("throwing:arrow_fireworks_" .. color .. "_entity", THROWING_ARROW_ENTITY) minetest.register_craft({ - output = 'throwing:arrow_fireworks_' .. color .. ' 8', + output = 'throwing:arrow_fireworks_' .. color .. , recipe = { - {'default:stick', 'tnt:gunpowder', 'dye:' .. color}, + {'default:stick', 'group:coal', 'dye:' .. color}, } }) minetest.register_craft({ - output = 'throwing:arrow_fireworks_' .. color .. ' 8', + output = 'throwing:arrow_fireworks_' .. color .. , recipe = { - {'dye:' .. color, 'tnt:gunpowder', 'default:stick'}, + {'dye:' .. color, 'group:coal', 'default:stick'}, } }) end @@ -181,42 +173,3 @@ if not DISABLE_FIREWORKS_GREEN_ARROW then throwing_register_fireworks('green', 'cyan', 'Green') end ---~ Nodes - -minetest.register_node("throwing:firework_trail", { - drawtype = "airlike", - light_source = 9, - walkable = false, - drop = "", - groups = {dig_immediate=3}, - on_timer = function(pos, elapsed) - minetest.remove_node(pos) - end, -}) - -minetest.register_node("throwing:firework_boom", { - drawtype = "plantlike", - tiles = {"throwing_sparkle.png"}, - light_source = default.LIGHT_MAX, - walkable = false, - drop = "", - groups = {dig_immediate=3}, - on_timer = function(pos, elapsed) - minetest.remove_node(pos) - end, - after_destruct = function(pos, oldnode) - minetest.set_node(pos, {name="throwing:firework_light"}) - minetest.get_node_timer(pos):start(3) - end, -}) - -minetest.register_node("throwing:firework_light", { - drawtype = "airlike", - light_source = default.LIGHT_MAX, - walkable = false, - drop = "", - groups = {dig_immediate=3}, - on_timer = function(pos, elapsed) - minetest.remove_node(pos) - end, -}) diff --git a/init.lua b/init.lua index fe07f41..048ec5b 100755 --- a/init.lua +++ b/init.lua @@ -4,10 +4,8 @@ throwing_arrows = { {"throwing:arrow_obsidian", "throwing:arrow_obsidian_entity"}, {"throwing:arrow_diamond", "throwing:arrow_diamond_entity"}, {"throwing:arrow_mithril", "throwing:arrow_mithril_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"}, {"throwing:arrow_tnt", "throwing:arrow_tnt_entity"}, {"throwing:arrow_torch", "throwing:arrow_torch_entity"}, {"throwing:arrow_fireworks_red", "throwing:arrow_fireworks_red_entity"}, @@ -32,10 +30,6 @@ dofile(minetest.get_modpath("throwing").."/tools.lua") dofile(minetest.get_modpath("throwing").."/standard_arrows.lua") -if minetest.get_modpath('fire') and minetest.get_modpath('bucket') and not DISABLE_FIRE_ARROW then - dofile(minetest.get_modpath("throwing").."/fire_arrow.lua") -end - if not DISABLE_TELEPORT_ARROW then dofile(minetest.get_modpath("throwing").."/teleport_arrow.lua") end @@ -44,10 +38,6 @@ if not DISABLE_DIG_ARROW then dofile(minetest.get_modpath("throwing").."/dig_arrow.lua") end -if not DISABLE_BUILD_ARROW then - dofile(minetest.get_modpath("throwing").."/build_arrow.lua") -end - if minetest.get_modpath('tnt') and not DISABLE_TNT_ARROW then dofile(minetest.get_modpath("throwing").."/tnt_arrow.lua") end diff --git a/lightning_arrow.lua b/lightning_arrow.lua index 51f801d..d49b6c8 100755 --- a/lightning_arrow.lua +++ b/lightning_arrow.lua @@ -125,7 +125,7 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) puncher = minetest.get_player_by_name(self.player) end local speed = vector.length(self.object:getvelocity()) - local damage = ((speed + 10)^1.2)/10 + local damage = ((speed + 20)^1.2)/10 obj:punch(puncher, 1.0, { full_punch_interval=1.0, damage_groups={fleshy=damage}, @@ -157,13 +157,13 @@ minetest.register_entity("throwing:arrow_lightning_entity", THROWING_ARROW_ENTIT minetest.register_craft({ output = 'throwing:arrow_lightning', recipe = { - {'default:stick', 'default:stick', 'default:pick_steel'}, + {'default:stick', 'default:mese_crystal', 'default:obsidian_shard'}, } }) minetest.register_craft({ output = 'throwing:arrow_lightning', recipe = { - {'default:pick_steel', 'default:stick', 'default:stick'}, + {'default:obsidian_shard', 'default:mese_crystal', 'default:stick'}, } }) diff --git a/rope_arrow.lua b/rope_arrow.lua index 4bb10d2..a560e4d 100755 --- a/rope_arrow.lua +++ b/rope_arrow.lua @@ -127,15 +127,15 @@ end minetest.register_entity("throwing:arrow_rope_entity", THROWING_ARROW_ENTITY) minetest.register_craft({ - output = 'throwing:arrow_rope 4', + output = 'throwing:arrow_rope', recipe = { - {'default:stick', 'default:stick', 'group:coal'}, + {'default:stick', 'default:stick', 'vines:rope_block'}, } }) minetest.register_craft({ - output = 'throwing:arrow_rope 4', + output = 'throwing:arrow_rope', recipe = { - {'group:coal', 'default:stick', 'default:stick'}, + {'vines:rope_block', 'default:stick', 'default:stick'}, } }) diff --git a/standard_arrows.lua b/standard_arrows.lua index bc60c83..ea5d75d 100755 --- a/standard_arrows.lua +++ b/standard_arrows.lua @@ -120,14 +120,14 @@ end minetest.register_entity("throwing:arrow_" .. kind .. "_entity", THROWING_ARROW_ENTITY) minetest.register_craft({ - output = 'throwing:arrow_' .. kind .. ' 16', + output = 'throwing:arrow_' .. kind .. ' 4', recipe = { {'default:stick', 'default:stick', craft}, } }) minetest.register_craft({ - output = 'throwing:arrow_' .. kind .. ' 16', + output = 'throwing:arrow_' .. kind .. ' 4', recipe = { {craft, 'default:stick', 'default:stick'}, } diff --git a/textures/compound_bow.xcf b/textures/compound_bow.xcf deleted file mode 100755 index 0540c8267241da807bad42b4d154efa93809ad75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8337 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 diff --git a/textures/compound_bow_unload.xcf b/textures/compound_bow_unload.xcf deleted file mode 100755 index 7ded188af1fb1641a683a9f987b44aa48b77c285..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4483 zcmc&%-A`M|9i1^?zLqRiKcuP^wN$AJ+InSUFkl;Od?5~Bz6Q)U4&W@;y@*Ys*eh+M z%1K+LQvZa0yjQ8zyzx@)Q`MDFc*#qp{RjG1X;*2s#98dybLP$^c0=;kbfkOdH)qbw z?|AN+xz{E8<2!**Z(0G%J~|L6{rY13EnHIK_HA5U=`UaYnHS>k;A+Rk5#Q4>dEW*9 zhp78Ym^NsCyk9y9mhRdg0TSq!;%d2a@8}>H@0laq^sIlNDx9m#5zIF3w2W5`G zZCT}m%7s9VejRd=)}dSnUF7eD=-3j%|2Hh{2SW7xU5LIvV(EV3F;IICgKOKpuz&C1 zZs5lw?Dym11Bl@2(lIL0-4yddki*i0%Zq!P;`f^3zNYwn#GKbFod`IdW4(vZId$bsdy7HA{FX z5*Z##&Mf4~kef0rhn|5GPtWF*mZ31AGm@??f+W^uLGIS~_KRJ`v;1~p_r~7-e$ik2 z_iS#XaAS8D9UaBzli=>4$-cJY*Rg~#yR=y-?C$Q%eP2<=&f>|;Vx9!K=PUkUYzb0>LQQ$>o>;z**JvB(g}l#8G*;DHV@rWwvJKa^%STH`(jPM7AyaH8`ZK=H_Sa zOX0xm-frOb?a|veJj!k0?O(Fq<^E-EZ~v~d;TAv70Txd&_OCynkPFNoV*97!{IPh9 zbD;59^tthU@e4Qjfm?NxbRtejIw6U%A~67ol_H&rQ<6?eVys9EKw_mx4we!mha|>| z!~i5#Jn}AdHy@O5TxdnYAn!o@UmTPaeDw`>Qw!tY^4 zKVXIUzWCLDLp@}jkaaS_3bA6fLW*@t)@hOz)?2Y!A;ogg?Q{CL+KSTDR;RtEy2a2# zl-GN7mBM@1KXmLV$20G$wPM}ML2=QD;MdE@xqWQIR4*g;;h~Mqc@flr z2tlYGI>fh3!^W>YKO7kF;Ty-csFurBB|`_bNVO~kp?apw)K$tT2ZLUGR<1^13{W7WTt@>ks+6G` zNS2|DDrHn}6(I=KQx&GRD5Eks=*4FhDrz*NcBZR9JJVH=@f1{Lu*sG|Drm8#(6$twEp-3|+Lp2c1vI6s zxC&f@x(c)@T?N{du7Z@Oz>ZqlI(}HgzTCv7TMbbfjhxr|> zGXwRyQecN0D;)DG8)N+) zj+{?fBd7WBVUECg)XXub$(-(dxFhFlKvd=AVb~7q_?(7t+8p|@9S!VobyD)g>;{3S zs(Rt`=;U>U7Hny}`PCnCAESG6{y)EE=`~&YzwiRo#NogGf3{-%=WH9I@tOFMXp{wh e^ILA=3+6nTZ@Fpaeeo9#aX7idA#b^b#eV>1ta=Ur diff --git a/textures/repeater_crossbow.xcf b/textures/repeater_crossbow.xcf deleted file mode 100755 index 34d35bdf7d23d6d7275170422b6ddd315cd73535..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7040 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 HI_v%)5C5}> diff --git a/textures/throwing_arrow_lightning.xcf b/textures/throwing_arrow_lightning.xcf deleted file mode 100755 index 8a239f332ff467b9fb2b6b12d94406376af62a61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1741 zcmd5+J#Q015S=@p9p{1xh>r@1laL}u$Vr@zf`)<$DmTaqM2>wvpXAuq`H*8FenFc1 z0Z53J_9RM5N+kRr=tF@bg|nA8d%N~o7(u$Mw7YL+=grK`?4IWz51f-`+iCkUxz_u#hTA2&R=;st&SD#E!zT~DsfT<_LL8IySJg2H-K{;Nf zRJzLRo*z1Xui0^j%+GI$f1{pzs>p!vGfIekcEK2lg`3tRK~vd(Tn1wmjX>6zo#6_>%17eY@}9ej2A~WdO@>@6%$?}*d`IlZ9)@B7ZK59 zZotyhPZ@KQrV*QIdY+P$r@W+kB9Xb|75vEvlz|BrxzI+WQyV-i3fC^JGVWP%(LRbG(O;0aF&{& zPBGP15_gk$R}vpe;?^|Y`ahzT#Fivll4wmKu8PQyDovH2VM)wLT*n(L3Hc201%hN7 GYxEn3mt(L1 diff --git a/textures/throwing_rope_arrow.xcf b/textures/throwing_rope_arrow.xcf deleted file mode 100755 index 1e4071291f36f4c214f50bb90653c8f076188a1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2385 zcmd5-O-~w86umQmAo$VRkF-hCOdLZr7SX!2>B3bPCS8~=niv5Q#xZ_M)5y5yUFzX%=DNk^{V<2qI%%_Y@%qW@Lpa}a4&6X?G zTt+JwbLRG3cs6UKi@9P+n{_X-lChQ278e#>8v>TZ)*M{7hPcXo?eBnH_sdo)Z59k| zN!|-&br>nQ*t>#R(ab`6CsStsVm4dORJsYW_aN0_`dzsW!jvyWY71q|6OHT=1rOy8 zuCfVS)6un5HB-{`W!_hLf{kEs13qAc1a`#&<3ijB*06;!B<7|`Jm$gU9y|%mais+T z*vE$6q`k05V||*LT{_`F`0NTjUT-^n4m!Q(tcTpEaNvm>abIg(z}wJy zey<4&J`%vw`QWpDF8G4i2lSEJ7Fje#sxeOO4cef+4jZR9v-4o16qT$W?@+LQundLP zA%|H9EW^$SBX>!AWKSD4zT%A)U}0P6{Uf03NB3 z*`XvCs`7f9>^eSYwuSQuq)^zpa_SBl5u<&9GJx1lyEQ#^HHL z^O1RYx}l=*JY>)4P)~o?(+^L4*&=@X0`jo``n-