From 79e03579bd15cc66385a45ac2a50f5c9b9283408 Mon Sep 17 00:00:00 2001 From: Code-Sploit Date: Wed, 17 Feb 2021 14:28:47 +0000 Subject: [PATCH 1/2] Add MultiShot enchantment --- mods/ITEMS/mcl_enchanting/enchantments.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 75969f516..f7e29b06a 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -482,7 +482,7 @@ mcl_enchanting.enchantments.mending = { } -- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.multishot = { +mcl_enchanting.enchantments.multishot = { name = S("Multishot"), max_level = 1, primary = {crossbow = true}, @@ -498,7 +498,7 @@ mcl_enchanting.enchantments.mending = { power_range_table = {{20, 50}}, inv_combat_tab = true, inv_tool_tab = false, -}]]-- +} -- requires missing MineClone2 feature --[[mcl_enchanting.enchantments.piercing = { -- 2.40.1 From 63894eb5d63d158f7e6388f1bae3f9bea20ceb7a Mon Sep 17 00:00:00 2001 From: Code-Sploit Date: Wed, 17 Feb 2021 14:29:33 +0000 Subject: [PATCH 2/2] Make crossbows check for multishot enchantment --- mods/ITEMS/mcl_bows/crossbow.lua | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_bows/crossbow.lua b/mods/ITEMS/mcl_bows/crossbow.lua index b56bfbe16..2690d9518 100644 --- a/mods/ITEMS/mcl_bows/crossbow.lua +++ b/mods/ITEMS/mcl_bows/crossbow.lua @@ -93,9 +93,17 @@ local player_shoot_arrow = function(itemstack, player, power, damage, is_critica local playerpos = player:get_pos() local dir = player:get_look_dir() local yaw = player:get_look_horizontal() + local has_multishot_enchantment = mcl_enchanting.has_enchantment(player:get_wielded_item(), "multishot") minetest.sound_play("mcl_bows_crossbow_shoot", {pos=playerpos, max_hear_distance=16}, true) - mcl_bows.shoot_arrow("mcl_bows:arrow", {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, dir, yaw, player, power, damage, is_critical, player:get_wielded_item(), not infinity_used) + if has_multishot_enchantment then + for times_shot=0,2 do + mcl_bows.shoot_arrow("mcl_bows:arrow", {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, dir, yaw, player, power, damage, is_critical, player:get_wielded_item(), not infinity_used) + end + else + mcl_bows.shoot_arrow("mcl_bows:arrow", {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, dir, yaw, player, power, damage, is_critical, player:get_wielded_item(), not infinity_used) + end + return true end @@ -244,6 +252,7 @@ controls.register_on_press(function(player, key) local speed, damage local p_load = bow_load[player:get_player_name()] local charge + -- Type sanity check if type(p_load) == "number" then charge = minetest.get_us_time() - p_load @@ -255,7 +264,9 @@ controls.register_on_press(function(player, key) end charge = 1000000 - local charge_ratio = charge / BOW_CHARGE_TIME_FULL + local charge_ratio + + charge_ratio = charge / BOW_CHARGE_TIME_FULL charge_ratio = math.max(math.min(charge_ratio, 1), 0) -- Calculate damage and speed @@ -428,4 +439,4 @@ if minetest.get_modpath("doc") then doc.add_entry_alias("tools", "mcl_bows:crossbow", "tools", "mcl_bows:crossbow_0") doc.add_entry_alias("tools", "mcl_bows:crossbow", "tools", "mcl_bows:crossbow_1") doc.add_entry_alias("tools", "mcl_bows:crossbow", "tools", "mcl_bows:crossbow_2") -end +end \ No newline at end of file -- 2.40.1