--
-- Jeweled tool defs
--

local S = minetest.get_translator("jewels")

--  Automatic jeweling on specific tools

-- Adjectives:
-- * Swift: lower dig speed
-- * Harming: more damage
-- * Durable: more uses
-- * Ranged: higher range

local tool_types = {
   pick = {
      steel = {
         digspeed = {
            description = S("Swift Jewel Steel Pickaxe"),
            digspeed = -0.1,
         },
         damage = {
            description = S("Harming Jewel Steel Pickaxe"),
            overlay = "jewels_jeweled_pick_damage.png",
            fleshy = 1,
         },
         uses = {
            description = S("Durable Jewel Steel Pickaxe"),
            uses = 3,
         },
      },
      carbon_steel = {
         digspeed = {
            description = S("Swift Jewel Carbon Steel Pickaxe"),
            digspeed = -0.13,
         },
         damage = {
            description = S("Harming Jewel Carbon Steel Pickaxe"),
            overlay = "jewels_jeweled_pick_damage.png",
            fleshy = 2,
         },
         uses = {
            description = S("Durable Jewel Carbon Steel Pickaxe"),
            uses = 5,
         },
      },
      bronze = {
         digspeed = {
            description = S("Swift Jewel Bronze Pickaxe"),
            digspeed = -0.14,
         },
         damage = {
            description = S("Harming Jewel Bronze Pickaxe"),
            overlay = "jewels_jeweled_pick_damage.png",
            fleshy = 3,
         },
         uses = {
            description = S("Durable Jewel Bronze Pickaxe"),
            uses = 6,
         },
      },
   },
   shovel = {
      steel = {
         digspeed = {
            description = S("Swift Jewel Steel Shovel"),
            digspeed = -0.1,
         },
         damage = {
            description = S("Harming Jewel Steel Shovel"),
            overlay = "jewels_jeweled_shovel_damage.png",
            fleshy = 1,
         },
         uses = {
            description = S("Durable Jewel Steel Shovel"),
            uses = 3,
         },
      },
      carbon_steel = {
         digspeed = {
            description = S("Swift Jewel Carbon Steel Shovel"),
            digspeed = -0.13,
         },
         damage = {
            description = S("Harming Jewel Carbon Steel Shovel"),
            overlay = "jewels_jeweled_shovel_damage.png",
            fleshy = 2,
         },
         uses = {
            description = S("Durable Jewel Carbon Steel Shovel"),
            uses = 5,
         },
      },
      bronze = {
         digspeed = {
            description = S("Swift Jewel Bronze Shovel"),
            digspeed = -0.14,
         },
         damage = {
            description = S("Harming Jewel Bronze Shovel"),
            overlay = "jewels_jeweled_shovel_damage.png",
            fleshy = 3,
         },
         uses = {
            description = S("Durable Jewel Bronze Shovel"),
            uses = 6,
         },
      },
   },
   axe = {
      steel = {
         digspeed = {
            description = S("Swift Jewel Steel Axe"),
            digspeed = -0.1,
         },
         damage = {
            description = S("Harming Jewel Steel Axe"),
            overlay = "jewels_jeweled_axe_damage.png",
            fleshy = 2,
         },
         uses = {
            description = S("Durable Jewel Steel Axe"),
            uses = 3,
         },
      },
      carbon_steel = {
         digspeed = {
            description = S("Swift Jewel Carbon Steel Axe"),
            digspeed = -0.13,
         },
         damage = {
            description = S("Harming Jewel Carbon Steel Axe"),
            overlay = "jewels_jeweled_axe_damage.png",
            fleshy = 3,
         },
         uses = {
            description = S("Durable Jewel Carbon Steel Axe"),
            uses = 5,
         },
      },
      bronze = {
         digspeed = {
            description = S("Swift Jewel Bronze Axe"),
            digspeed = -0.14,
         },
         damage = {
            description = S("Harming Jewel Bronze Axe"),
            overlay = "jewels_jeweled_axe_damage.png",
            fleshy = 4,
         },
         uses = {
            description = S("Durable Jewel Bronze Axe"),
            uses = 6,
         },
      },
   },
   spear = {
      steel = {
         reach = {
            overlay = "jewels_jeweled_spear_reach.png",
            overlay_wield = "jewels_jeweled_spear_reach.png^[transformR90",
            description = S("Extended Jewel Steel Spear"),
            range = 1,
         },
         damage = {
            overlay = "jewels_jeweled_spear_damage.png",
            overlay_wield = "jewels_jeweled_spear_damage.png^[transformR90",
            description = S("Harming Jewel Steel Spear"),
            fleshy = 3,
         },
         uses = {
            overlay = "jewels_jeweled_handle_uses.png",
            overlay_wield = "jewels_jeweled_handle_uses.png^[transformR90",
            description = S("Durable Jewel Steel Spear"),
            uses = 3,
         },
      },
      carbon_steel = {
         reach = {
            description = S("Extended Jewel Carbon Steel Spear"),
            overlay = "jewels_jeweled_spear_reach.png",
            overlay_wield = "jewels_jeweled_spear_reach.png^[transformR90",
            range = 2,
         },
         damage = {
            description = S("Harming Jewel Carbon Steel Spear"),
            overlay = "jewels_jeweled_spear_damage.png",
            overlay_wield = "jewels_jeweled_spear_damage.png^[transformR90",
            fleshy = 4,
         },
         uses = {
            description = S("Durable Jewel Carbon Steel Spear"),
            overlay = "jewels_jeweled_handle_uses.png",
            overlay_wield = "jewels_jeweled_handle_uses.png^[transformR90",
            uses = 5,
         },
      },
      bronze = {
         reach = {
            description = S("Extended Jewel Bronze Spear"),
            overlay = "jewels_jeweled_spear_reach.png",
            overlay_wield = "jewels_jeweled_spear_reach.png^[transformR90",
            range = 2,
         },
         damage = {
            description = S("Harming Jewel Bronze Spear"),
            overlay = "jewels_jeweled_spear_damage.png",
            overlay_wield = "jewels_jeweled_spear_damage.png^[transformR90",
            fleshy = 5,
         },
         uses = {
            description = S("Durable Jewel Bronze Spear"),
            overlay = "jewels_jeweled_handle_uses.png",
            overlay_wield = "jewels_jeweled_handle_uses.png^[transformR90",
            uses = 6,
         },
      },
   },
   shears = {
      steel = {
         digspeed = {
            overlay = "jewels_jeweled_shears_digspeed.png",
            overlay_wield = "jewels_jeweled_shears_digspeed.png^[transformR90",
            description = S("Swift Jewel Steel Shears"),
            digspeed = -0.1,
         },
         uses = {
            overlay = "jewels_jeweled_shears_uses.png",
            overlay_wield = "jewels_jeweled_shears_uses.png^[transformR90",
            description = S("Durable Jewel Steel Shears"),
            uses = 3,
         },
      },
      carbon_steel = {
         digspeed = {
            overlay = "jewels_jeweled_shears_digspeed.png",
            overlay_wield = "jewels_jeweled_shears_digspeed.png^[transformR90",
            description = S("Swift Jewel Carbon Steel Shears"),
            digspeed = -0.13,
         },
         uses = {
            overlay = "jewels_jeweled_shears_uses.png",
            overlay_wield = "jewels_jeweled_shears_uses.png^[transformR90",
            description = S("Durable Jewel Carbon Steel Shears"),
            uses = 5,
         },
      },
      bronze = {
         digspeed = {
            overlay = "jewels_jeweled_shears_digspeed.png",
            overlay_wield = "jewels_jeweled_shears_digspeed.png^[transformR90",
            description = S("Swift Jewel Bronze Shears"),
            digspeed = -0.14,
         },
         uses = {
            overlay = "jewels_jeweled_shears_uses.png",
            overlay_wield = "jewels_jeweled_shears_uses.png^[transformR90",
            description = S("Durable Jewel Bronze Shears"),
            uses = 6,
         },
      },
   }
}

for tool_name, tool_def in pairs(tool_types) do
   for material_name, material_def in pairs(tool_def) do
      for jewel_name, jewel_def in pairs(material_def) do
         local description = jewel_def.description
         local overlay = jewel_def.overlay
         local overlay_wield = jewel_def.overlay_wield
         jewel_def.description = nil
         jewel_def.overlay = nil
         jewel_def.overlay_wield = nil
         if not overlay then
            if jewel_name == "damage" then
               overlay = "jewels_jeweled_handle_damage.png"
            elseif jewel_name == "uses" then
               overlay = "jewels_jeweled_handle_uses.png"
            end
         end
         jewels.register_jewel(
            "default:" .. tool_name .. "_" .. material_name,
            "jewels:" .. tool_name .. "_" .. material_name .. "_" .. jewel_name,
            {
               stats = jewel_def,
               description = description,
               overlay = overlay,
               overlay_wield = overlay_wield,
            }
         )
      end
   end
end

-- Broadswords

jewels.register_jewel(
   "default:broadsword",
   "jewels:broadsword_jeweled_pommel",
   {
      description = S("Pommel Jewel Broadsword"),
      overlay = "jewels_jeweled_pommel.png",
      stats = {
	 fleshy = 2,
      }
})

jewels.register_jewel(
   "jewels:broadsword_jeweled_pommel",
   "jewels:broadsword_jeweled_pommel_and_guard",
   {
      description = S("Pommel&Guard Jewel Broadsword"),
      overlay = "jewels_jeweled_guard.png",
      stats = {
	 range = 1,
      }
})

jewels.register_jewel(
   "jewels:broadsword_jeweled_pommel_and_guard",
   "jewels:serrated_broadsword",
   {
      description = S("Serrated Jewel Broadsword"),
      overlay = "jewels_jeweled_blade.png",
      stats = {
	 fleshy = 2,
	 range = 1,
      }
})

default.log("jewels", "loaded")
