2020-07-13 00:43:15 +02:00
--[[
Research N ' Duplication
Copyright ( C ) 2020 Noodlemire
This library 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 library 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 .
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
--]]
2020-08-06 04:20:34 +02:00
--Gun components
if not ( pipeworks or waterworks ) then
minetest.register_craftitem ( " projectile:steel_pipe " , {
description = " Steel Pipe " ,
inventory_image = " projectile_steel_pipe.png "
} )
end
--Basic slingshot ammo
if not hardtrees then
minetest.register_craftitem ( " projectile:rock " , {
description = " Rock " ,
inventory_image = " projectile_rock.png "
} )
end
2020-07-13 00:43:15 +02:00
--A basic arrow
minetest.register_craftitem ( " projectile:arrow " , {
description = " Arrow " ,
inventory_image = " projectile_arrow.png " ,
} )
--An arrow that burns flammable nodes that it touches
2020-07-20 02:45:20 +02:00
minetest.register_craftitem ( " projectile:arrow_fire " , {
description = " Fire Arrow " ,
inventory_image = " projectile_arrow_fire.png " ,
} )
2020-07-13 00:43:15 +02:00
--An arrow with exceptionally high velocity
minetest.register_craftitem ( " projectile:arrow_high_velocity " , {
description = " High Velocity Arrow " ,
inventory_image = " projectile_arrow_high_velocity.png " ,
} )
--An arrow that explodes on contact, rather than dealing direct damage.
2020-07-20 02:45:20 +02:00
minetest.register_craftitem ( " projectile:arrow_bomb " , {
description = " Bomb Arrow " ,
inventory_image = " projectile_arrow_bomb.png " ,
} )
--Basic flintlock ammo, small steel balls
minetest.register_craftitem ( " projectile:musket_ball " , {
description = " Musket Ball " ,
inventory_image = " projectile_musket_ball.png " ,
} )
--Easily shattered ammo with less direct damage than a musket ball, but much greater crowd control abilities.
minetest.register_craftitem ( " projectile:musket_ball_diamond " , {
description = " Diamond Musket Ball " ,
inventory_image = " projectile_musket_ball_diamond.png " ,
} )
--An upgrade to regular musket balls
minetest.register_craftitem ( " projectile:musket_ball_mithril " , {
description = " Mithril Musket Ball " ,
inventory_image = " projectile_musket_ball_mithril.png " ,
} )
--Standard shotgun ammo, a pile of 9 tiny balls
minetest.register_craftitem ( " projectile:shot_pile " , {
description = " Shot Pile " ,
inventory_image = " projectile_shot_pile.png " ,
} )
--Easily shattered ammo with less direct damage than shot, but each ball splits into 2 in the initial blast, causing a total of 18 pellets to be spewed.
minetest.register_craftitem ( " projectile:shot_pile_diamond " , {
description = " Diamond Shot Pile " ,
inventory_image = " projectile_shot_pile_diamond.png " ,
} )
--An upgrade to regular shot.
minetest.register_craftitem ( " projectile:shot_pile_mithril " , {
description = " Mithril Shot Pile " ,
inventory_image = " projectile_shot_pile_mithril.png " ,
} )
2020-07-13 00:43:15 +02:00
2020-08-06 04:20:34 +02:00
if hardtrees then
--Two cobblestone blocks can shapelessly be used to craft 18 rocks.
--Two are used since it's very possible that other mods use one rock to make other things.
minetest.register_craft ( {
type = " shapeless " ,
output = " hardtrees:rock 18 " ,
recipe = { " default:cobble " , " default:cobble " }
} )
2020-07-13 00:43:15 +02:00
2020-08-06 04:20:34 +02:00
--If the player no longer needs rocks, 9 can be crafted back into a cobblestone block.
minetest.register_craft ( {
output = " default:cobble " ,
recipe = {
{ " hardtrees:rock " , " hardtrees:rock " , " hardtrees:rock " } ,
{ " hardtrees:rock " , " hardtrees:rock " , " hardtrees:rock " } ,
{ " hardtrees:rock " , " hardtrees:rock " , " hardtrees:rock " }
}
} )
else
--Two cobblestone blocks can shapelessly be used to craft 18 rocks.
--Two are used since it's very possible that other mods use one rock to make other things.
minetest.register_craft ( {
type = " shapeless " ,
output = " projectile:rock 18 " ,
recipe = { " default:cobble " , " default:cobble " }
} )
--If the player no longer needs rocks, 9 can be crafted back into a cobblestone block.
minetest.register_craft ( {
output = " default:cobble " ,
recipe = {
{ " projectile:rock " , " projectile:rock " , " projectile:rock " } ,
{ " projectile:rock " , " projectile:rock " , " projectile:rock " } ,
{ " projectile:rock " , " projectile:rock " , " projectile:rock " }
}
} )
end
2020-07-13 00:43:15 +02:00
--Four sticks in a diagonal Y, with a string on top, makes a slingshot.
minetest.register_craft ( {
output = " projectile:slingshot " ,
recipe = {
2020-07-20 02:45:20 +02:00
{ " " , " group:stick " , " farming:string " } ,
{ " " , " group:stick " , " group:stick " } ,
{ " group:stick " , " " , " " }
2020-07-13 00:43:15 +02:00
}
} )
--Four steel bars in a diagonal Y, with a steel wire on top, makes a steel slingshot.
--Requires basic_materials
minetest.register_craft ( {
output = " projectile:steel_slingshot " ,
recipe = {
{ " " , " basic_materials:steel_bar " , " basic_materials:steel_wire " } ,
{ " " , " basic_materials:steel_bar " , " basic_materials:steel_bar " } ,
{ " basic_materials:steel_bar " , " " , " " }
}
} )
--Three sticks, to create the shape of the bow itself, and three strings in a diagonal line, makes a bow.
minetest.register_craft ( {
output = " projectile:bow " ,
recipe = {
2020-07-20 02:45:20 +02:00
{ " group:stick " , " group:stick " , " farming:string " } ,
{ " group:stick " , " farming:string " , " " } ,
2020-07-13 00:43:15 +02:00
{ " farming:string " , " " , " " }
}
} )
--Three steel bars, to create the shape of the bow itself, and three steel wires in a diagonal line, makes a bow.
--Requires basic_materials
minetest.register_craft ( {
output = " projectile:steel_bow " ,
recipe = {
{ " basic_materials:steel_bar " , " basic_materials:steel_bar " , " basic_materials:steel_wire " } ,
{ " basic_materials:steel_bar " , " basic_materials:steel_wire " , " " } ,
{ " basic_materials:steel_wire " , " " , " " }
}
} )
2020-08-06 04:20:34 +02:00
if pipeworks then
--Flintlocks are made from metal and steel, with a steel pipe for the barrel and a lever for the trigger.
minetest.register_craft ( {
output = " projectile:flintlock_pistol " ,
recipe = {
{ " pipeworks:pipe_1_empty " , " " } ,
{ " basic_materials:steel_strip " , " default:steel_ingot " } ,
{ " group:stick " , " default:flint " }
}
} )
2020-07-20 02:45:20 +02:00
2020-08-06 04:20:34 +02:00
--Muskets add an extra pipe because they're long.
minetest.register_craft ( {
output = " projectile:musket " ,
recipe = {
{ " pipeworks:pipe_1_empty " , " " , " " } ,
{ " " , " pipeworks:pipe_1_empty " , " default:steel_ingot " } ,
{ " basic_materials:steel_strip " , " group:stick " , " default:flint " }
}
} )
end
if waterworks then
--Flintlocks are made from metal and steel, with a steel pipe for the barrel and a lever for the trigger.
minetest.register_craft ( {
output = " projectile:flintlock_pistol " ,
recipe = {
{ " waterworks:pipe " , " " } ,
{ " basic_materials:steel_strip " , " default:steel_ingot " } ,
{ " group:stick " , " default:flint " }
}
} )
--Muskets add an extra pipe because they're long.
minetest.register_craft ( {
output = " projectile:musket " ,
recipe = {
{ " waterworks:pipe " , " " , " " } ,
{ " " , " waterworks:pipe " , " default:steel_ingot " } ,
{ " basic_materials:steel_strip " , " group:stick " , " default:flint " }
}
} )
end
if not ( pipeworks or waterworks ) then
--6 steel ingots in an = shape can make any kind of pipe.
minetest.register_craft ( {
output = " projectile:steel_pipe 12 " ,
recipe = {
{ " default:steel_ingot " , " default:steel_ingot " , " default:steel_ingot " } ,
{ " " , " " , " " } ,
{ " default:steel_ingot " , " default:steel_ingot " , " default:steel_ingot " }
}
} )
--Flintlocks are made from metal and steel, with a steel pipe for the barrel and a lever for the trigger.
minetest.register_craft ( {
output = " projectile:flintlock_pistol " ,
recipe = {
{ " projectile:steel_pipe " , " " } ,
{ " basic_materials:steel_strip " , " default:steel_ingot " } ,
{ " group:stick " , " default:flint " }
}
} )
--Muskets add an extra pipe because they're long.
minetest.register_craft ( {
output = " projectile:musket " ,
recipe = {
{ " projectile:steel_pipe " , " " , " " } ,
{ " " , " projectile:steel_pipe " , " default:steel_ingot " } ,
{ " basic_materials:steel_strip " , " group:stick " , " default:flint " }
}
} )
end
2020-07-20 02:45:20 +02:00
2020-08-06 04:20:34 +02:00
--Blunderbusses are thucker, so a second steel ingot is used in place of a steel pipe.
2020-07-20 02:45:20 +02:00
minetest.register_craft ( {
output = " projectile:blunderbuss " ,
recipe = {
{ " default:steel_ingot " , " " } ,
2020-08-06 04:20:34 +02:00
{ " basic_materials:steel_strip " , " default:steel_ingot " } ,
{ " group:stick " , " default:flint " }
2020-07-20 02:45:20 +02:00
}
} )
2020-07-13 00:43:15 +02:00
--Regular arrows are made from flint, a stick, and a feather.
--The feather can be provided by multiple mob mods.
--Arrows are also materials in the stronger ammo options for bows.
minetest.register_craft ( {
output = " projectile:arrow " ,
recipe = {
{ " default:flint " , " " , " " } ,
2020-07-20 02:45:20 +02:00
{ " " , " group:stick " , " " } ,
2020-07-13 00:43:15 +02:00
{ " " , " " , " mobs:chicken_feather " }
}
} )
minetest.register_craft ( {
output = " projectile:arrow " ,
recipe = {
{ " default:flint " , " " , " " } ,
2020-07-20 02:45:20 +02:00
{ " " , " group:stick " , " " } ,
2020-07-13 00:43:15 +02:00
{ " " , " " , " animalmaterials:feather " }
}
} )
minetest.register_craft ( {
output = " projectile:arrow " ,
recipe = {
{ " default:flint " , " " , " " } ,
2020-07-20 02:45:20 +02:00
{ " " , " group:stick " , " " } ,
2020-07-13 00:43:15 +02:00
{ " " , " " , " creatures:feather " }
}
} )
--Combining an arrow with a torch lights it on fire.
2020-07-20 02:45:20 +02:00
minetest.register_craft ( {
type = " shapeless " ,
output = " projectile:arrow_fire " ,
recipe = { " projectile:arrow " , " default:torch " }
} )
2020-07-13 00:43:15 +02:00
--Gold tools are often fast, so gold arrows focus on being fast.
--A gold ingot can turn four arrows gold.
minetest.register_craft ( {
type = " shapeless " ,
output = " projectile:arrow_high_velocity 4 " ,
recipe = { " projectile:arrow " , " projectile:arrow " , " projectile:arrow " , " projectile:arrow " , " default:gold_ingot " }
} )
--Stabbing an arrow into a TNT stick creates a bomb arrow.
minetest.register_craft ( {
type = " shapeless " ,
output = " projectile:arrow_bomb " ,
recipe = { " projectile:arrow " , " tnt:tnt_stick " }
} )
2020-07-20 02:45:20 +02:00
--Converting applicable materials to 12 musket balls requires putting 4 of those materials into a ball-esque shape.
minetest.register_craft ( {
output = " projectile:musket_ball 12 " ,
recipe = {
{ " " , " default:steel_ingot " , " " } ,
{ " default:steel_ingot " , " " , " default:steel_ingot " } ,
{ " " , " default:steel_ingot " , " " } ,
}
} )
minetest.register_craft ( {
output = " projectile:musket_ball_diamond 12 " ,
recipe = {
{ " " , " default:diamond " , " " } ,
{ " default:diamond " , " " , " default:diamond " } ,
{ " " , " default:diamond " , " " } ,
}
} )
minetest.register_craft ( {
output = " projectile:musket_ball_mithril 12 " ,
recipe = {
{ " " , " moreores:mithril_ingot " , " " } ,
{ " moreores:mithril_ingot " , " " , " moreores:mithril_ingot " } ,
{ " " , " moreores:mithril_ingot " , " " } ,
}
} )
--3 of any musket ball can be split into 9 smaller balls, known as a shot pile.
minetest.register_craft ( {
type = " shapeless " ,
output = " projectile:shot_pile " ,
recipe = { " projectile:musket_ball " , " projectile:musket_ball " , " projectile:musket_ball " }
} )
minetest.register_craft ( {
type = " shapeless " ,
output = " projectile:shot_pile_diamond " ,
recipe = { " projectile:musket_ball_diamond " , " projectile:musket_ball_diamond " , " projectile:musket_ball_diamond " }
} )
minetest.register_craft ( {
type = " shapeless " ,
output = " projectile:shot_pile_mithril " ,
recipe = { " projectile:musket_ball_mithril " , " projectile:musket_ball_mithril " , " projectile:musket_ball_mithril " }
} )