From ee57054beb1f935c19513ead7658779924f6c7ee Mon Sep 17 00:00:00 2001 From: david Date: Fri, 2 Apr 2021 22:14:02 -0400 Subject: [PATCH] Unpacking ZIPs Stage 4: Unpack 0.3 Making v0.3 branch here. --- aa12.lua | 207 ++ ak47.lua | 177 ++ ammo.lua | 154 + awp.lua | 219 ++ benelli.lua | 249 ++ beretta.lua | 190 ++ bullet_stuff.lua | 38 + deagle.lua | 197 ++ depends.txt | 6 +- door_breaking.lua | 21 + explosives.lua | 214 ++ g36.lua | 177 ++ generator.lua | 35 + glass_breaking.lua | 112 + glock17.lua | 190 ++ hand_grenade.lua | 164 + init.lua | 2692 +---------------- jackhammer.lua | 218 ++ javelin.lua | 147 + kriss_sv.lua | 177 ++ laser_blaster.lua | 153 + laser_rifle.lua | 153 + laser_shotgun.lua | 178 ++ license.txt | 1 + luger.lua | 192 ++ m16.lua | 177 ++ m200.lua | 219 ++ m60.lua | 176 ++ m79.lua | 120 + makarov.lua | 192 ++ milkor.lua | 121 + minigun.lua | 182 ++ misc.lua | 100 + mp40.lua | 177 ++ mp5.lua | 178 ++ python.lua | 228 ++ remington.lua | 237 ++ rpg.lua | 106 + rpk.lua | 176 ++ scar.lua | 177 ++ settings.lua | 20 + shurikens.lua | 877 ++++++ sounds/crit.ogg | Bin 0 -> 5031 bytes sounds/glass_break.ogg | Bin 0 -> 16058 bytes sounds/rangedweapons_ak.ogg | Bin 0 -> 18141 bytes sounds/rangedweapons_beretta.ogg | Bin 0 -> 11348 bytes sounds/rangedweapons_bulletdrop.ogg | Bin 0 -> 50960 bytes sounds/rangedweapons_deagle.ogg | Bin 0 -> 20300 bytes sounds/rangedweapons_glock.ogg | Bin 0 -> 19364 bytes sounds/rangedweapons_laser.ogg | Bin 0 -> 7605 bytes sounds/rangedweapons_machine_pistol.ogg | Bin 0 -> 11986 bytes sounds/rangedweapons_machinegun.ogg | Bin 0 -> 6376 bytes sounds/rangedweapons_makarov.ogg | Bin 0 -> 12346 bytes sounds/rangedweapons_reload_a.ogg | Bin 0 -> 8771 bytes sounds/rangedweapons_reload_b.ogg | Bin 0 -> 7469 bytes sounds/rangedweapons_revolver.ogg | Bin 0 -> 10876 bytes sounds/rangedweapons_rifle_a.ogg | Bin 0 -> 31830 bytes sounds/rangedweapons_rifle_b.ogg | Bin 0 -> 25158 bytes sounds/rangedweapons_rocket.ogg | Bin 0 -> 22582 bytes sounds/rangedweapons_shellhit.ogg | Bin 0 -> 6457 bytes sounds/rangedweapons_shotgun_full.ogg | Bin 0 -> 19066 bytes sounds/rangedweapons_shotgun_reload_a.ogg | Bin 0 -> 6368 bytes sounds/rangedweapons_shotgun_reload_b.ogg | Bin 0 -> 7029 bytes sounds/rangedweapons_shotgun_reload_full.ogg | Bin 0 -> 11440 bytes sounds/rangedweapons_shotgun_shot.ogg | Bin 0 -> 9431 bytes sounds/rangedweapons_smg.ogg | Bin 0 -> 8867 bytes sounds/rangedweapons_throw.ogg | Bin 0 -> 6130 bytes sounds/rangedweapons_woodbreak.ogg | Bin 0 -> 7639 bytes spas12.lua | 250 ++ svd.lua | 219 ++ taurus.lua | 228 ++ tec9.lua | 177 ++ textures/rangedweapons_10mm.png | Bin 2896 -> 3037 bytes textures/rangedweapons_10mm_shot.png | Bin 0 -> 2971 bytes textures/rangedweapons_308_shot.png | Bin 0 -> 2990 bytes textures/rangedweapons_308winchester.png | Bin 0 -> 3071 bytes textures/rangedweapons_357.png | Bin 0 -> 2987 bytes textures/rangedweapons_40mm.png | Bin 0 -> 3109 bytes textures/rangedweapons_44_shot.png | Bin 0 -> 2982 bytes textures/rangedweapons_556mm.png | Bin 0 -> 2980 bytes textures/rangedweapons_556mm_shot.png | Bin 0 -> 2947 bytes textures/rangedweapons_726mm_shot.png | Bin 0 -> 2977 bytes textures/rangedweapons_762mm.png | Bin 0 -> 3049 bytes textures/rangedweapons_9mm.png | Bin 2908 -> 3055 bytes textures/rangedweapons_9mm_shot.png | Bin 0 -> 2980 bytes textures/rangedweapons_aa12.png | Bin 0 -> 3323 bytes textures/rangedweapons_ak47.png | Bin 0 -> 3373 bytes textures/rangedweapons_awp.png | Bin 3231 -> 3364 bytes textures/rangedweapons_awp_rld.png | Bin 0 -> 3375 bytes textures/rangedweapons_barrel_side.png | Bin 0 -> 2988 bytes textures/rangedweapons_barrel_top.png | Bin 0 -> 2997 bytes textures/rangedweapons_benelli.png | Bin 0 -> 3313 bytes textures/rangedweapons_benelli_rld.png | Bin 0 -> 3296 bytes textures/rangedweapons_beretta.png | Bin 0 -> 3041 bytes textures/rangedweapons_beretta_rld.png | Bin 0 -> 3035 bytes textures/rangedweapons_broken_glass.png | Bin 0 -> 3462 bytes textures/rangedweapons_bronze_shuriken.png | Bin 3058 -> 3094 bytes textures/rangedweapons_buckball.png | Bin 0 -> 3017 bytes textures/rangedweapons_bullet_fly.png | Bin 0 -> 2937 bytes textures/rangedweapons_deagle.png | Bin 2951 -> 3081 bytes textures/rangedweapons_deagle_rld.png | Bin 0 -> 3114 bytes textures/rangedweapons_diamond_shuriken.png | Bin 3011 -> 3060 bytes textures/rangedweapons_empty_shell.png | Bin 0 -> 2974 bytes textures/rangedweapons_g36.png | Bin 0 -> 3351 bytes textures/rangedweapons_generator_bottom.png | Bin 0 -> 2949 bytes textures/rangedweapons_generator_side.png | Bin 0 -> 3003 bytes textures/rangedweapons_generator_top.png | Bin 0 -> 3052 bytes textures/rangedweapons_glass_shards.png | Bin 0 -> 2911 bytes textures/rangedweapons_glock17.png | Bin 0 -> 3033 bytes textures/rangedweapons_glock17_rld.png | Bin 0 -> 3091 bytes textures/rangedweapons_golden_shuriken.png | Bin 3023 -> 3069 bytes textures/rangedweapons_gun_power_core.png | Bin 0 -> 3111 bytes textures/rangedweapons_gunsteel_ingot.png | Bin 0 -> 3270 bytes textures/rangedweapons_hand_grenade.png | Bin 0 -> 3133 bytes textures/rangedweapons_hand_grenade_nopin.png | Bin 0 -> 3105 bytes textures/rangedweapons_invisible.png | Bin 0 -> 2800 bytes textures/rangedweapons_jackhammer.png | Bin 4125 -> 3444 bytes textures/rangedweapons_javelin.png | Bin 0 -> 3329 bytes textures/rangedweapons_kriss_sv.png | Bin 0 -> 3491 bytes textures/rangedweapons_laser_blaster.png | Bin 0 -> 3068 bytes textures/rangedweapons_laser_rifle.png | Bin 0 -> 3550 bytes textures/rangedweapons_laser_shotgun.png | Bin 0 -> 3381 bytes textures/rangedweapons_luger.png | Bin 0 -> 2981 bytes textures/rangedweapons_luger_rld.png | Bin 0 -> 2988 bytes textures/rangedweapons_m16.png | Bin 0 -> 3197 bytes textures/rangedweapons_m200.png | Bin 0 -> 3295 bytes textures/rangedweapons_m200_rld.png | Bin 0 -> 3303 bytes textures/rangedweapons_m60.png | Bin 0 -> 3360 bytes textures/rangedweapons_m79.png | Bin 0 -> 3333 bytes textures/rangedweapons_m79_rld.png | Bin 0 -> 3376 bytes textures/rangedweapons_makarov.png | Bin 2953 -> 3017 bytes textures/rangedweapons_makarov_rld.png | Bin 0 -> 3033 bytes textures/rangedweapons_mese_shuriken.png | Bin 3028 -> 3060 bytes textures/rangedweapons_milkor.png | Bin 0 -> 3544 bytes textures/rangedweapons_milkor_rld.png | Bin 0 -> 3576 bytes textures/rangedweapons_minigun.png | Bin 0 -> 3628 bytes textures/rangedweapons_mp40.png | Bin 0 -> 3239 bytes textures/rangedweapons_mp5.png | Bin 0 -> 3398 bytes textures/rangedweapons_pin.png | Bin 0 -> 2874 bytes textures/rangedweapons_plastic_sheet.png | Bin 0 -> 2931 bytes textures/rangedweapons_power_particle.png | Bin 0 -> 2937 bytes textures/rangedweapons_python.png | Bin 2977 -> 3026 bytes textures/rangedweapons_python_rld.png | Bin 0 -> 3026 bytes textures/rangedweapons_ray_blue.png | Bin 0 -> 2821 bytes textures/rangedweapons_ray_green.png | Bin 0 -> 2839 bytes textures/rangedweapons_ray_red.png | Bin 0 -> 2836 bytes textures/rangedweapons_remington.png | Bin 0 -> 3255 bytes textures/rangedweapons_remington_rld.png | Bin 0 -> 3257 bytes textures/rangedweapons_rocket.png | Bin 0 -> 3037 bytes textures/rangedweapons_rocket_fly.png | Bin 0 -> 3058 bytes .../rangedweapons_rocket_fly_alternate.png | Bin 0 -> 2964 bytes textures/rangedweapons_rpg.png | Bin 0 -> 3292 bytes textures/rangedweapons_rpg_rld.png | Bin 0 -> 3394 bytes textures/rangedweapons_rpk.png | Bin 0 -> 3389 bytes textures/rangedweapons_scar.png | Bin 0 -> 3531 bytes textures/rangedweapons_shell.png | Bin 2983 -> 3041 bytes textures/rangedweapons_shelldrop.png | Bin 0 -> 2867 bytes textures/rangedweapons_shelldrop_grenade.png | Bin 0 -> 2902 bytes textures/rangedweapons_shelldrop_shotgun.png | Bin 0 -> 2868 bytes textures/rangedweapons_shelldrop_white.png | Bin 0 -> 2859 bytes textures/rangedweapons_spas12.png | Bin 3557 -> 3412 bytes textures/rangedweapons_spas12_rld.png | Bin 0 -> 3441 bytes textures/rangedweapons_steel_shuriken.png | Bin 3039 -> 3036 bytes textures/rangedweapons_stone_shuriken.png | Bin 3018 -> 3034 bytes textures/rangedweapons_svd.png | Bin 0 -> 3476 bytes textures/rangedweapons_svd_rld.png | Bin 0 -> 3476 bytes textures/rangedweapons_taurus.png | Bin 2925 -> 3031 bytes textures/rangedweapons_taurus_rld.png | Bin 0 -> 3031 bytes textures/rangedweapons_tec9.png | Bin 0 -> 3063 bytes textures/rangedweapons_thrown_javelin.png | Bin 0 -> 3178 bytes textures/rangedweapons_tmp.png | Bin 0 -> 3079 bytes .../rangedweapons_ultra_gunsteel_ingot.png | Bin 0 -> 3286 bytes textures/rangedweapons_ump.png | Bin 0 -> 3313 bytes textures/rangedweapons_uzi.png | Bin 0 -> 3323 bytes textures/rangedweapons_wooden_shuriken.png | Bin 3053 -> 3097 bytes tmp.lua | 177 ++ ump.lua | 178 ++ uzi.lua | 178 ++ 178 files changed, 8590 insertions(+), 2541 deletions(-) create mode 100644 aa12.lua create mode 100644 ak47.lua create mode 100644 ammo.lua create mode 100644 awp.lua create mode 100644 benelli.lua create mode 100644 beretta.lua create mode 100644 bullet_stuff.lua create mode 100644 deagle.lua create mode 100644 door_breaking.lua create mode 100644 explosives.lua create mode 100644 g36.lua create mode 100644 generator.lua create mode 100644 glass_breaking.lua create mode 100644 glock17.lua create mode 100644 hand_grenade.lua create mode 100644 jackhammer.lua create mode 100644 javelin.lua create mode 100644 kriss_sv.lua create mode 100644 laser_blaster.lua create mode 100644 laser_rifle.lua create mode 100644 laser_shotgun.lua create mode 100644 license.txt create mode 100644 luger.lua create mode 100644 m16.lua create mode 100644 m200.lua create mode 100644 m60.lua create mode 100644 m79.lua create mode 100644 makarov.lua create mode 100644 milkor.lua create mode 100644 minigun.lua create mode 100644 misc.lua create mode 100644 mp40.lua create mode 100644 mp5.lua create mode 100644 python.lua create mode 100644 remington.lua create mode 100644 rpg.lua create mode 100644 rpk.lua create mode 100644 scar.lua create mode 100644 settings.lua create mode 100644 shurikens.lua create mode 100644 sounds/crit.ogg create mode 100644 sounds/glass_break.ogg create mode 100644 sounds/rangedweapons_ak.ogg create mode 100644 sounds/rangedweapons_beretta.ogg create mode 100644 sounds/rangedweapons_bulletdrop.ogg create mode 100644 sounds/rangedweapons_deagle.ogg create mode 100644 sounds/rangedweapons_glock.ogg create mode 100644 sounds/rangedweapons_laser.ogg create mode 100644 sounds/rangedweapons_machine_pistol.ogg create mode 100644 sounds/rangedweapons_machinegun.ogg create mode 100644 sounds/rangedweapons_makarov.ogg create mode 100644 sounds/rangedweapons_reload_a.ogg create mode 100644 sounds/rangedweapons_reload_b.ogg create mode 100644 sounds/rangedweapons_revolver.ogg create mode 100644 sounds/rangedweapons_rifle_a.ogg create mode 100644 sounds/rangedweapons_rifle_b.ogg create mode 100644 sounds/rangedweapons_rocket.ogg create mode 100644 sounds/rangedweapons_shellhit.ogg create mode 100644 sounds/rangedweapons_shotgun_full.ogg create mode 100644 sounds/rangedweapons_shotgun_reload_a.ogg create mode 100644 sounds/rangedweapons_shotgun_reload_b.ogg create mode 100644 sounds/rangedweapons_shotgun_reload_full.ogg create mode 100644 sounds/rangedweapons_shotgun_shot.ogg create mode 100644 sounds/rangedweapons_smg.ogg create mode 100644 sounds/rangedweapons_throw.ogg create mode 100644 sounds/rangedweapons_woodbreak.ogg create mode 100644 spas12.lua create mode 100644 svd.lua create mode 100644 taurus.lua create mode 100644 tec9.lua create mode 100644 textures/rangedweapons_10mm_shot.png create mode 100644 textures/rangedweapons_308_shot.png create mode 100644 textures/rangedweapons_308winchester.png create mode 100644 textures/rangedweapons_357.png create mode 100644 textures/rangedweapons_40mm.png create mode 100644 textures/rangedweapons_44_shot.png create mode 100644 textures/rangedweapons_556mm.png create mode 100644 textures/rangedweapons_556mm_shot.png create mode 100644 textures/rangedweapons_726mm_shot.png create mode 100644 textures/rangedweapons_762mm.png create mode 100644 textures/rangedweapons_9mm_shot.png create mode 100644 textures/rangedweapons_aa12.png create mode 100644 textures/rangedweapons_ak47.png create mode 100644 textures/rangedweapons_awp_rld.png create mode 100644 textures/rangedweapons_barrel_side.png create mode 100644 textures/rangedweapons_barrel_top.png create mode 100644 textures/rangedweapons_benelli.png create mode 100644 textures/rangedweapons_benelli_rld.png create mode 100644 textures/rangedweapons_beretta.png create mode 100644 textures/rangedweapons_beretta_rld.png create mode 100644 textures/rangedweapons_broken_glass.png create mode 100644 textures/rangedweapons_buckball.png create mode 100644 textures/rangedweapons_bullet_fly.png create mode 100644 textures/rangedweapons_deagle_rld.png create mode 100644 textures/rangedweapons_empty_shell.png create mode 100644 textures/rangedweapons_g36.png create mode 100644 textures/rangedweapons_generator_bottom.png create mode 100644 textures/rangedweapons_generator_side.png create mode 100644 textures/rangedweapons_generator_top.png create mode 100644 textures/rangedweapons_glass_shards.png create mode 100644 textures/rangedweapons_glock17.png create mode 100644 textures/rangedweapons_glock17_rld.png create mode 100644 textures/rangedweapons_gun_power_core.png create mode 100644 textures/rangedweapons_gunsteel_ingot.png create mode 100644 textures/rangedweapons_hand_grenade.png create mode 100644 textures/rangedweapons_hand_grenade_nopin.png create mode 100644 textures/rangedweapons_invisible.png create mode 100644 textures/rangedweapons_javelin.png create mode 100644 textures/rangedweapons_kriss_sv.png create mode 100644 textures/rangedweapons_laser_blaster.png create mode 100644 textures/rangedweapons_laser_rifle.png create mode 100644 textures/rangedweapons_laser_shotgun.png create mode 100644 textures/rangedweapons_luger.png create mode 100644 textures/rangedweapons_luger_rld.png create mode 100644 textures/rangedweapons_m16.png create mode 100644 textures/rangedweapons_m200.png create mode 100644 textures/rangedweapons_m200_rld.png create mode 100644 textures/rangedweapons_m60.png create mode 100644 textures/rangedweapons_m79.png create mode 100644 textures/rangedweapons_m79_rld.png create mode 100644 textures/rangedweapons_makarov_rld.png create mode 100644 textures/rangedweapons_milkor.png create mode 100644 textures/rangedweapons_milkor_rld.png create mode 100644 textures/rangedweapons_minigun.png create mode 100644 textures/rangedweapons_mp40.png create mode 100644 textures/rangedweapons_mp5.png create mode 100644 textures/rangedweapons_pin.png create mode 100644 textures/rangedweapons_plastic_sheet.png create mode 100644 textures/rangedweapons_power_particle.png create mode 100644 textures/rangedweapons_python_rld.png create mode 100644 textures/rangedweapons_ray_blue.png create mode 100644 textures/rangedweapons_ray_green.png create mode 100644 textures/rangedweapons_ray_red.png create mode 100644 textures/rangedweapons_remington.png create mode 100644 textures/rangedweapons_remington_rld.png create mode 100644 textures/rangedweapons_rocket.png create mode 100644 textures/rangedweapons_rocket_fly.png create mode 100644 textures/rangedweapons_rocket_fly_alternate.png create mode 100644 textures/rangedweapons_rpg.png create mode 100644 textures/rangedweapons_rpg_rld.png create mode 100644 textures/rangedweapons_rpk.png create mode 100644 textures/rangedweapons_scar.png create mode 100644 textures/rangedweapons_shelldrop.png create mode 100644 textures/rangedweapons_shelldrop_grenade.png create mode 100644 textures/rangedweapons_shelldrop_shotgun.png create mode 100644 textures/rangedweapons_shelldrop_white.png create mode 100644 textures/rangedweapons_spas12_rld.png create mode 100644 textures/rangedweapons_svd.png create mode 100644 textures/rangedweapons_svd_rld.png create mode 100644 textures/rangedweapons_taurus_rld.png create mode 100644 textures/rangedweapons_tec9.png create mode 100644 textures/rangedweapons_thrown_javelin.png create mode 100644 textures/rangedweapons_tmp.png create mode 100644 textures/rangedweapons_ultra_gunsteel_ingot.png create mode 100644 textures/rangedweapons_ump.png create mode 100644 textures/rangedweapons_uzi.png create mode 100644 tmp.lua create mode 100644 ump.lua create mode 100644 uzi.lua diff --git a/aa12.lua b/aa12.lua new file mode 100644 index 0000000..81544b7 --- /dev/null +++ b/aa12.lua @@ -0,0 +1,207 @@ +minetest.register_craft({ + output = 'rangedweapons:aa12', + recipe = { + {'rangedweapons:gunsteel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:diamondblock', 'default:steel_ingot', 'rangedweapons:plastic_sheet'}, + {'default:steel_ingot', 'dye:black', 'rangedweapons:plastic_sheet'}, + } +}) + +minetest.register_craft({ + output = 'rangedweapons:aa12', + recipe = { + {'moreores:silver_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:diamondblock', 'default:steel_ingot', 'rangedweapons:plastic_sheet'}, + {'default:steel_ingot', 'dye:black', 'rangedweapons:plastic_sheet'}, + } +}) + + minetest.register_craftitem("rangedweapons:aa12", { + stack_max= 1, + wield_scale = {x=1.75,y=1.75,z=1.3}, + description = "" ..core.colorize("#35cdff","AA-12\n") ..core.colorize("#FFFFFF", "Ranged damage: 2-6 X 10\n") ..core.colorize("#FFFFFF", "Accuracy: 65%\n") ..core.colorize("#FFFFFF", "Mob knockback: 2\n")..core.colorize("#FFFFFF", "Critical chance: 3%\n") ..core.colorize("#FFFFFF", "Critical damage: 8-16 X 10\n") ..core.colorize("#FFFFFF", "Ammunition: 12 gauge shells\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.2\n") ..core.colorize("#FFFFFF", "Gun type: Auto-shotgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 20"), + range = 0, + inventory_image = "rangedweapons_aa12.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.2 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:aa12" then + if not inv:contains_item("main", "rangedweapons:shell") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:aa12" then + inv:remove_item("main", "rangedweapons:shell") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:aa12shot") + if obj then + minetest.sound_play("rangedweapons_shotgun_shot", {object=obj}) + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.5,3.5), y=math.random(-3.5,3.5), z=dir.z * math.random(-3.5,3.5)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:aa12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.5,3.5), y=math.random(-3.5,3.5), z=dir.z * math.random(-3.5,3.5)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:aa12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.5,3.5), y=math.random(-3.5,3.5), z=dir.z * math.random(-3.5,3.5)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:aa12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.5,3.5), y=math.random(-3.5,3.5), z=dir.z * math.random(-3.5,3.5)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:aa12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.5,3.5), y=math.random(-3.5,3.5), z=dir.z * math.random(-3.5,3.5)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:aa12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.5,3.5), y=math.random(-3.5,3.5), z=dir.z * math.random(-3.5,3.5)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:aa12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.5,3.5), y=math.random(-3.5,3.5), z=dir.z * math.random(-3.5,3.5)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:aa12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.5,3.5), y=math.random(-3.5,3.5), z=dir.z * math.random(-3.5,3.5)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:aa12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.5,3.5), y=math.random(-3.5,3.5), z=dir.z * math.random(-3.5,3.5)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:aa12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.5,3.5), y=math.random(-3.5,3.5), z=dir.z * math.random(-3.5,3.5)}) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell_shotgun") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.5, + size = 6, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_aa12shot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.1, y=0.1}, + textures = {"rangedweapons_buckball.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_aa12shot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.20 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:aa12shot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 3 then + local damage = math.random(8,16) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=4}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,6) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 2}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 3 then + local damage = math.random(8,16) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,6) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_wood_a" or + node.name == "doors:door_wood_b" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:aa12shot", rangedweapons_aa12shot ) \ No newline at end of file diff --git a/ak47.lua b/ak47.lua new file mode 100644 index 0000000..b3ee74b --- /dev/null +++ b/ak47.lua @@ -0,0 +1,177 @@ +minetest.register_craft({ + output = 'rangedweapons:ak47', + recipe = { + {'default:diamond', 'default:steel_ingot', 'default:tree'}, + {'default:tree', 'default:mese', 'default:steel_ingot'}, + {'default:steel_ingot', '', 'default:tree'}, + } +}) + + minetest.register_craftitem("rangedweapons:ak47", { + stack_max= 1, + wield_scale = {x=1.75,y=1.75,z=1.3}, + description = "" ..core.colorize("#35cdff","AK-47\n") ..core.colorize("#FFFFFF", "Ranged damage: 6-16\n") ..core.colorize("#FFFFFF", "Accuracy: 77%\n") ..core.colorize("#FFFFFF", "Mob knockback: 5\n")..core.colorize("#FFFFFF", "Critical chance: 16%\n") ..core.colorize("#FFFFFF", "Critical damage: 17-26\n") ..core.colorize("#FFFFFF", "Ammunition: 7.26mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.165\n") ..core.colorize("#FFFFFF", "Gun type: Assault rifle\n") ..core.colorize("#FFFFFF", "Bullet velocity: 40"), + range = 0, + inventory_image = "rangedweapons_ak47.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.165 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:ak47" then + if not inv:contains_item("main", "rangedweapons:726mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:ak47" then + inv:remove_item("main", "rangedweapons:726mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:ak47shot") + if obj then + minetest.sound_play("rangedweapons_ak", {object=obj}) + obj:setvelocity({x=dir.x * 40, y=dir.y * 40, z=dir.z * 40}) + obj:setacceleration({x=dir.x * math.random(-2.3,2.3), y=math.random(-2.3,2.3), z=dir.z * math.random(-2.3,2.3)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.5, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_ak47shot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_ak47shot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.08 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:ak47shot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 16 then + local damage = math.random(17,26) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=10}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(6,16) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 5}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 16 then + local damage = math.random(17,26) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(6,16) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:ak47shot", rangedweapons_ak47shot ) \ No newline at end of file diff --git a/ammo.lua b/ammo.lua new file mode 100644 index 0000000..3729f0f --- /dev/null +++ b/ammo.lua @@ -0,0 +1,154 @@ + +minetest.register_craftitem("rangedweapons:9mm", { + stack_max= 10000, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff","9mm round\n")..core.colorize("#FFFFFF", "Ammunition for handguns, machine-pistols and rarely sub-machineguns"), + inventory_image = "rangedweapons_9mm.png", +}) + + +minetest.register_craft({ + output = 'rangedweapons:9mm 30', + recipe = { + {'default:steel_ingot', '', ''}, + {'tnt:gunpowder', '', ''}, + {'default:copper_ingot', '', ''}, + } +}) + +minetest.register_craftitem("rangedweapons:10mm", { + stack_max= 1500, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff","10mm round\n")..core.colorize("#FFFFFF", "Ammunition for sub-machineguns"), + inventory_image = "rangedweapons_10mm.png", +}) + + +minetest.register_craft({ + output = 'rangedweapons:10mm 60', + recipe = { + {'', 'default:bronze_ingot', ''}, + {'default:steel_ingot', 'tnt:gunpowder', 'default:steel_ingot'}, + {'default:steel_ingot', 'tnt:gunpowder', 'default:steel_ingot'}, + } +}) + + +minetest.register_craftitem("rangedweapons:357", { + stack_max= 250, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff",".357 magnum round\n")..core.colorize("#FFFFFF", "Ammunition for magnums/revolvers"), + inventory_image = "rangedweapons_357.png", +}) + + +minetest.register_craft({ + output = 'rangedweapons:357 15', + recipe = { + {'default:copper_ingot', '', ''}, + {'tnt:gunpowder', '', ''}, + {'default:gold_ingot', '', ''}, + } +}) + +minetest.register_craftitem("rangedweapons:726mm", { + stack_max= 2000, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff","7.26mm round\n")..core.colorize("#FFFFFF", "Ammunition for Heavy machineguns and some assault rifles"), + inventory_image = "rangedweapons_762mm.png", +}) + + +minetest.register_craft({ + output = 'rangedweapons:726mm 50', + recipe = { + {'default:bronze_ingot', 'tnt:gunpowder', 'default:bronze_ingot'}, + {'default:gold_ingot', 'tnt:gunpowder', 'default:gold_ingot'}, + {'default:gold_ingot', 'tnt:gunpowder', 'default:gold_ingot'}, + } +}) + +minetest.register_craftitem("rangedweapons:556mm", { + stack_max= 1000, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff","5.56mm round\n")..core.colorize("#FFFFFF", "Ammunition for most assault rifles"), + inventory_image = "rangedweapons_556mm.png", +}) + + +minetest.register_craft({ + output = 'rangedweapons:556mm 75', + recipe = { + {'', 'default:gold_ingot', ''}, + {'default:gold_ingot', 'tnt:gunpowder', 'default:gold_ingot'}, + {'default:gold_ingot', 'tnt:gunpowder', 'default:gold_ingot'}, + } +}) + +minetest.register_craftitem("rangedweapons:shell", { + stack_max= 84, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff","12 gauge shell\n")..core.colorize("#FFFFFF", "Ammunition for shotguns"), + inventory_image = "rangedweapons_shell.png", +}) + + +minetest.register_craft({ + output = 'rangedweapons:shell 12', + recipe = { + {'default:bronze_ingot', 'default:steel_ingot', 'default:bronze_ingot'}, + {'default:bronze_ingot', 'tnt:gunpowder', 'default:bronze_ingot'}, + {'default:gold_ingot', 'tnt:gunpowder', 'default:gold_ingot'}, + } +}) + +minetest.register_craftitem("rangedweapons:308winchester", { + stack_max= 120, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff","308.winchester round\n")..core.colorize("#FFFFFF", "Ammunition for rifles"), + inventory_image = "rangedweapons_308winchester.png", +}) + + +minetest.register_craft({ + output = 'rangedweapons:308winchester 15', + recipe = { + {'', 'default:steel_ingot', ''}, + {'default:bronze_ingot', 'tnt:gunpowder', 'default:bronze_ingot'}, + {'default:gold_ingot', 'tnt:gunpowder', 'default:gold_ingot'}, + } +}) + +minetest.register_craftitem("rangedweapons:40mm", { + stack_max= 48, + wield_scale = {x=0.8,y=0.8,z=2.4}, + description = "" ..core.colorize("#35cdff","40mm grenade\n")..core.colorize("#FFFFFF", "Ammunition for grenade launchers"), + inventory_image = "rangedweapons_40mm.png", +}) + + +minetest.register_craft({ + output = 'rangedweapons:40mm 6', + recipe = { + {'', 'default:gold_ingot', ''}, + {'default:steel_ingot', 'tnt:gunpowder', 'default:steel_ingot'}, + {'tnt:gunpowder', 'default:bronze_ingot', 'tnt:gunpowder'}, + } +}) + +minetest.register_craftitem("rangedweapons:rocket", { + stack_max= 25, + wield_scale = {x=1.2,y=1.2,z=2.4}, + description = "" ..core.colorize("#35cdff","Rocket\n")..core.colorize("#FFFFFF", "Ammunition for rocket launchers"), + inventory_image = "rangedweapons_rocket.png", +}) + + +minetest.register_craft({ + output = 'rangedweapons:rocket 1', + recipe = { + {'', '', 'rangedweapons:40mm'}, + {'', 'tnt:gunpowder', ''}, + {'default:steel_ingot', '', ''}, + } +}) \ No newline at end of file diff --git a/awp.lua b/awp.lua new file mode 100644 index 0000000..8c4b41a --- /dev/null +++ b/awp.lua @@ -0,0 +1,219 @@ +minetest.register_craft({ + output = 'rangedweapons:awp_uld', + recipe = { + {'rangedweapons:gunsteel_ingot', 'default:diamondblock', 'rangedweapons:gunsteel_ingot'}, + {'rangedweapons:gunsteel_ingot', 'rangedweapons:gunsteel_ingot', 'rangedweapons:gunsteel_ingot'}, + {'dye:dark_green', 'default:diamond', 'rangedweapons:plastic_sheet'}, + } +}) + +minetest.register_craftitem("rangedweapons:awp_uld", { + stack_max= 1, + wield_scale = {x=1.9,y=1.9,z=1.1}, + range = 0, + description = "" ..core.colorize("#35cdff","A.W.P. \n") ..core.colorize("#FFFFFF", "Ranged damage: 100/sec of bullet lifetime\n") ..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 15\n") ..core.colorize("#FFFFFF", "Critical chance: 45%\n") ..core.colorize("#FFFFFF", "Critical damage: 250/sec of bullet lifetime\n") ..core.colorize("#FFFFFF", "Ammunition: 308.Winchester rounds\n") ..core.colorize("#FFFFFF", "Reload time: 1.5\n") ..core.colorize("#be0d00", "The gun is NOT loaded! (Right-click to load)\n")..core.colorize("#FFFFFF", "Gun type: Rifle\n") ..core.colorize("#FFFFFF", "Bullet velocity: 60"), + inventory_image = "rangedweapons_awp.png", + on_use = function(user) + minetest.sound_play("rangedweapons_empty", {user}) + end, +}) + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.001 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if player:get_wielded_item():get_name() == "rangedweapons:awp_uld" + and inv:contains_item("main", "rangedweapons:308winchester")then + if controls.RMB then + inv:remove_item("main", "rangedweapons:308winchester") + player:set_wielded_item("rangedweapons:awp_rld") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + timer = 0 + minetest.sound_play("rangedweapons_reload_a", {player}) + +end + end + + if timer >= 1.5 and + player:get_wielded_item():get_name() == "rangedweapons:awp_rld" then + player:set_wielded_item("rangedweapons:awp") + timer = 0 + minetest.sound_play("rangedweapons_reload_b", {player}) + + + + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:awp_rld", { + stack_max= 1, + range = 0, + wield_scale = {x=1.9,y=1.9,z=1.1}, + description = "**RELOADING A.W.P.**", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_awp_rld.png", +}) + + +minetest.register_tool("rangedweapons:awp", { + description = "" ..core.colorize("#35cdff","A.W.P. \n") ..core.colorize("#FFFFFF", "Ranged damage: 100/sec of bullet lifetime\n")..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 15\n") ..core.colorize("#FFFFFF", "Critical chance: 45%\n") ..core.colorize("#FFFFFF", "Critical damage: 250/sec of bullet lifetime\n") ..core.colorize("#FFFFFF", "Ammunition: 308.Winchester rounds\n") ..core.colorize("#FFFFFF", "Reload time: 1.5\n") ..core.colorize("#27a600", "The gun is loaded!\n")..core.colorize("#FFFFFF", "Gun type: Rifle\n") ..core.colorize("#FFFFFF", "Bullet velocity: 60"), + range = 0, + groups = {not_in_creative_inventory = 1}, + wield_scale = {x=1.9,y=1.9,z=1.1}, + inventory_image = "rangedweapons_awp.png", + on_use = function(itemstack, user, pointed_thing) + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:awpshot") + if obj then + minetest.sound_play("rangedweapons_rifle_a", {object=obj}) + obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) + obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 1.5, + size = 8, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:awp_uld" + end + end + end + return itemstack + end, +}) + +local rangedweapons_awpshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_awpshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.05 then + local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 1.5) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:awpshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 45 then + local damage = 250 * self.timer + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 30}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = 100 * self.timer + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 15}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 45 then + local damage = 250 * self.timer + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = 100 * self.timer + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:awpshot", rangedweapons_awpshot ) + + diff --git a/benelli.lua b/benelli.lua new file mode 100644 index 0000000..7afff38 --- /dev/null +++ b/benelli.lua @@ -0,0 +1,249 @@ +minetest.register_craft({ + output = "rangedweapons:benelli_uld", + recipe = { + {"rangedweapons:gunsteel_ingot", "default:diamond", "default:steelblock"}, + {"rangedweapons:plastic_sheet", "default:diamond", "default:steel_ingot"}, + } +}) + +minetest.register_craftitem("rangedweapons:benelli_uld", { + stack_max= 1, + wield_scale = {x=2.0,y=2.0,z=1.20}, + range = 0, + description = "" ..core.colorize("#35cdff","Benelli M3\n") ..core.colorize("#FFFFFF", "Ranged damage: 3-9 X 12\n") ..core.colorize("#FFFFFF", "Accuracy: 62%\n") ..core.colorize("#FFFFFF", "Mob knockback: 6\n") ..core.colorize("#FFFFFF", "Critical chance: 4%\n") ..core.colorize("#FFFFFF", "Critical damage: 9-19 X 12\n") ..core.colorize("#FFFFFF", "Ammunition: 12 gauge shells\n") ..core.colorize("#FFFFFF", "Reload time: 0.60\n") ..core.colorize("#be0d00", "The gun is NOT loaded! (Right-click to load)\n")..core.colorize("#FFFFFF", "Gun type: shotgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 20"), + inventory_image = "rangedweapons_benelli.png", + on_use = function(user) + minetest.sound_play("rangedweapons_empty", {user}) + end, +}) + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.001 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if player:get_wielded_item():get_name() == "rangedweapons:benelli_uld" + and inv:contains_item("main", "rangedweapons:shell")then + if controls.RMB then + inv:remove_item("main", "rangedweapons:shell") + player:set_wielded_item("rangedweapons:benelli_rld") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell_shotgun") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + timer = 0 + minetest.sound_play("rangedweapons_shotgun_reload_a", {player}) + +end + end + + if timer >= 0.60 and + player:get_wielded_item():get_name() == "rangedweapons:benelli_rld" then + player:set_wielded_item("rangedweapons:benelli") + timer = 0 + minetest.sound_play("rangedweapons_shotgun_reload_b", {player}) + + + + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:benelli_rld", { + stack_max= 1, + range = 0, + wield_scale = {x=2.0,y=2.0,z=1.20}, + description = "**RELOADING BENELLI M3**", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_benelli_rld.png", +}) + + +minetest.register_tool("rangedweapons:benelli", { + description = "" ..core.colorize("#35cdff","Benelli M3\n") ..core.colorize("#FFFFFF", "Ranged damage: 3-9 X 12\n") ..core.colorize("#FFFFFF", "Accuracy: 62%\n")..core.colorize("#FFFFFF", "Mob knockback: 6\n") ..core.colorize("#FFFFFF", "Critical chance: 4%\n") ..core.colorize("#FFFFFF", "Critical damage: 9-19 X 12\n") ..core.colorize("#FFFFFF", "Ammunition: 12 gauge shells\n") ..core.colorize("#FFFFFF", "Reload time: 0.60\n") ..core.colorize("#27a600", "The gun is loaded!\n")..core.colorize("#FFFFFF", "Gun type: shotgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 20"), + range = 0, + groups = {not_in_creative_inventory = 1}, + wield_scale = {x=2.0,y=2.0,z=1.20}, + inventory_image = "rangedweapons_benelli.png", + on_use = function(itemstack, user, pointed_thing) + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:benellishot") + if obj then + minetest.sound_play("rangedweapons_shotgun_shot", {object=obj}) + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.8,3.8), y=math.random(-3.8,3.8), z=dir.z * math.random(-3.8,3.8)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:benellishot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.8,3.8), y=math.random(-3.8,3.8), z=dir.z * math.random(-3.8,3.8)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:benellishot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.8,3.8), y=math.random(-3.8,3.8), z=dir.z * math.random(-3.8,3.8)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:benellishot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.8,3.8), y=math.random(-3.8,3.8), z=dir.z * math.random(-3.8,3.8)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:benellishot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.8,3.8), y=math.random(-3.8,3.8), z=dir.z * math.random(-3.8,3.8)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:benellishot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.8,3.8), y=math.random(-3.8,3.8), z=dir.z * math.random(-3.8,3.8)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:benellishot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.8,3.8), y=math.random(-3.8,3.8), z=dir.z * math.random(-3.8,3.8)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:benellishot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.8,3.8), y=math.random(-3.8,3.8), z=dir.z * math.random(-3.8,3.8)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:benellishot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.8,3.8), y=math.random(-3.8,3.8), z=dir.z * math.random(-3.8,3.8)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:benellishot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.8,3.8), y=math.random(-3.8,3.8), z=dir.z * math.random(-3.8,3.8)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:benellishot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.8,3.8), y=math.random(-3.8,3.8), z=dir.z * math.random(-3.8,3.8)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:benellishot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.8,3.8), y=math.random(-3.8,3.8), z=dir.z * math.random(-3.8,3.8)}) +----------------------------------------------------- + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 1.25, + size = 10, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:benelli_uld" + end + end + end + return itemstack + end, +}) + +local rangedweapons_benellishot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.1, y=0.1}, + textures = {"rangedweapons_buckball.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_benellishot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.225 then + local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 1.25) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:benellishot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 4 then + local damage = math.random(9,19) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 12}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(3,9) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 6}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 4 then + local damage = math.random(9,19) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(3,9) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_wood_a" or + node.name == "doors:door_wood_b" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:benellishot", rangedweapons_benellishot ) + + diff --git a/beretta.lua b/beretta.lua new file mode 100644 index 0000000..580d6ec --- /dev/null +++ b/beretta.lua @@ -0,0 +1,190 @@ + + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.4 then + for _, player in pairs(minetest.get_connected_players()) do + if player:get_wielded_item():get_name() == "rangedweapons:beretta_rld" then + player:set_wielded_item("rangedweapons:beretta") + minetest.sound_play("", {player}) + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:beretta_rld", { + stack_max= 1, + wield_scale = {x=1.1,y=1.1,z=1.05}, + description = "***RELOADING BERETTA M9***", + range = 0, + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_beretta_rld.png", +}) + + +minetest.register_tool("rangedweapons:beretta", { + description = "" ..core.colorize("#35cdff","Beretta M9\n") ..core.colorize("#FFFFFF", "Ranged damage: 5-8\n") ..core.colorize("#FFFFFF", "Accuracy: 94%\n") ..core.colorize("#FFFFFF", "Mob knockback: 3\n") ..core.colorize("#FFFFFF", "Critical chance: 15%\n") ..core.colorize("#FFFFFF", "Critical damage: 9-14\n") ..core.colorize("#FFFFFF", "Ammunition: 9mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.4\n") ..core.colorize("#FFFFFF", "Gun type: Handgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 25"), + wield_scale = {x=1.1,y=1.1,z=1.05}, + range = 0, + inventory_image = "rangedweapons_beretta.png", + on_use = function(itemstack, user, pointed_thing) + timer = 0 + local inv = user:get_inventory() + if not inv:contains_item("main", "rangedweapons:9mm 1") then + minetest.sound_play("rangedweapons_empty", {object=user}) + return itemstack + end + if not minetest.setting_getbool("creative_mode") then + inv:remove_item("main", "rangedweapons:9mm") + end + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:berettashot") + if obj then + minetest.sound_play("rangedweapons_beretta", {object=obj}) + obj:setvelocity({x=dir.x * 25, y=dir.y * 25, z=dir.z * 25}) + obj:setacceleration({x=dir.x * math.random(-0.6,0.6), y=math.random(-0.6,0.6), z=dir.z * math.random(-0.6,0.6)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + local obj = minetest.add_entity(pos, "rangedweapons:smoke") + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.7, + size = 5, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:beretta_rld" + end + end + end + return itemstack + end, +}) +minetest.register_craft({ + output = 'rangedweapons:beretta', + recipe = { + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'', 'default:mese_crystal', 'rangedweapons:plastic_sheet'}, + {'', '', 'rangedweapons:plastic_sheet'}, + } +}) + +local rangedweapons_berettashot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_berettashot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.11 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:berettashot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 15 then + local damage = math.random(9,14) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=6}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(5,8) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=3}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 15 then + local damage = math.random(9,14) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(5,8) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} + end + end + end + + +minetest.register_entity("rangedweapons:berettashot", rangedweapons_berettashot ) + + diff --git a/bullet_stuff.lua b/bullet_stuff.lua new file mode 100644 index 0000000..cc338e5 --- /dev/null +++ b/bullet_stuff.lua @@ -0,0 +1,38 @@ + + +minetest.register_craftitem("rangedweapons:308shot", { + wield_scale = {x=1.0,y=1.0,z=1.0}, + inventory_image = "rangedweapons_308_shot.png", +}) + +minetest.register_craftitem("rangedweapons:handgunshot", { + wield_scale = {x=1.0,y=1.0,z=1.0}, + inventory_image = "rangedweapons_9mm_shot.png", +}) + +minetest.register_craftitem("rangedweapons:smgshot", { + wield_scale = {x=1.0,y=1.0,z=1.0}, + inventory_image = "rangedweapons_10mm_shot.png", +}) + +minetest.register_craftitem("rangedweapons:heavy_shot", { + wield_scale = {x=1.0,y=1.0,z=1.0}, + inventory_image = "rangedweapons_726mm_shot.png", +}) + +minetest.register_craftitem("rangedweapons:assault_shot", { + wield_scale = {x=1.0,y=1.0,z=1.0}, + inventory_image = "rangedweapons_556mm_shot.png", +}) + +minetest.register_craftitem("rangedweapons:magnum_shot", { + wield_scale = {x=1.0,y=1.0,z=1.0}, + inventory_image = "rangedweapons_44_shot.png", +}) + + + + + + + diff --git a/deagle.lua b/deagle.lua new file mode 100644 index 0000000..4e7e6e2 --- /dev/null +++ b/deagle.lua @@ -0,0 +1,197 @@ + + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.75 then + for _, player in pairs(minetest.get_connected_players()) do + if player:get_wielded_item():get_name() == "rangedweapons:deagle_rld" then + player:set_wielded_item("rangedweapons:deagle") + minetest.sound_play("", {player}) + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:deagle_rld", { + stack_max= 1, + wield_scale = {x=1.25,y=1.25,z=1.5}, + description = "***RELOADING DESERT EAGLE***", + range = 0, + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_deagle_rld.png", +}) + + +minetest.register_tool("rangedweapons:deagle", { + description = "" ..core.colorize("#35cdff","Desert Eagle\n")..core.colorize("#FFFFFF", "Ranged damage: 11-18\n") ..core.colorize("#FFFFFF", "Accuracy: 85%\n") ..core.colorize("#FFFFFF", "Mob knockback: 9\n") ..core.colorize("#FFFFFF", "Critical chance: 29%\n") ..core.colorize("#FFFFFF", "Critical damage: 25-44\n") ..core.colorize("#FFFFFF", "Ammunition: .357 Magnum rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.75\n") ..core.colorize("#FFFFFF", "Gun type: Magnum\n") ..core.colorize("#FFFFFF", "Bullet velocity: 45"), + wield_scale = {x=1.25,y=1.25,z=1.5}, + range = 0, + inventory_image = "rangedweapons_deagle.png", + on_use = function(itemstack, user, pointed_thing) + timer = 0 + local inv = user:get_inventory() + if not inv:contains_item("main", "rangedweapons:357 1") then + minetest.sound_play("rangedweapons_empty", {object=user}) + return itemstack + end + if not minetest.setting_getbool("creative_mode") then + inv:remove_item("main", "rangedweapons:357") + end + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:deagleshot") + if obj then + minetest.sound_play("rangedweapons_deagle", {object=obj}) + obj:setvelocity({x=dir.x * 45, y=dir.y * 45, z=dir.z * 45}) + obj:setacceleration({x=dir.x * math.random(-1.5,1.5), y=math.random(-1.5,1.5), z=dir.z * math.random(-1.5,1.5)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 1.0, + size = 8, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:deagle_rld" + end + end + end + return itemstack + end, +}) +minetest.register_craft({ + output = 'rangedweapons:deagle', + recipe = { + {'rangedweapons:gunsteel_ingot', 'rangedweapons:gunsteel_ingot', 'rangedweapons:gunsteel_ingot'}, + {'rangedweapons:gunsteel_ingot', 'default:diamond', 'rangedweapons:plastic_sheet'}, + {'', '', 'rangedweapons:plastic_sheet'}, + } +}) +minetest.register_craft({ + output = 'rangedweapons:deagle', + recipe = { + {'moreores:silver_ingot', 'moreores:silver_ingot', 'moreores:silver_ingot'}, + {'moreores:silver_ingot', 'default:diamond', 'rangedweapons:plastic_sheet'}, + {'', '', 'rangedweapons:plastic_sheet'}, + } +}) + +local rangedweapons_deagleshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_deagleshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.065 then + local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 1.25) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:deagleshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 29 then + local damage = math.random(25,44) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=18}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(11,18) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=9}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 29 then + local damage = math.random(25,44) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(11,18) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} + end + end + end + + +minetest.register_entity("rangedweapons:deagleshot", rangedweapons_deagleshot ) + + diff --git a/depends.txt b/depends.txt index 7f73df5..b77902c 100644 --- a/depends.txt +++ b/depends.txt @@ -1,2 +1,6 @@ default -moreores \ No newline at end of file +tnt +doors? +xpanes? +vessels? +moreores? \ No newline at end of file diff --git a/door_breaking.lua b/door_breaking.lua new file mode 100644 index 0000000..f97d117 --- /dev/null +++ b/door_breaking.lua @@ -0,0 +1,21 @@ + + +if minetest.get_modpath("doors") then + +minetest.override_item("doors:door_wood_a", { + on_timer = function(pos) + minetest.swap_node(pos, {name = "air"}) + minetest.add_item(pos, "default:wood 5") + minetest.sound_play("rangedweapons_woodbreak",{pos}) + end, +}) + +minetest.override_item("doors:door_wood_b", { + on_timer = function(pos) + minetest.swap_node(pos, {name = "air"}) + minetest.add_item(pos, "default:wood 5") + minetest.sound_play("rangedweapons_woodbreak",{pos}) + end, +}) + +end diff --git a/explosives.lua b/explosives.lua new file mode 100644 index 0000000..91e677f --- /dev/null +++ b/explosives.lua @@ -0,0 +1,214 @@ +local he_boom = { + name = "rangedweapons:he_explosion", + --description = "DuN mInD mEh...", + radius = 2, + tiles = { + side = "rangedweapons_invisible.png", + top = "rangedweapons_invisible.png", + bottom = "rangedweapons_invisible.png", + burning = "rangedweapons_invisible.png" + }, +} +tnt.register_tnt(he_boom) + +local rocket_boom = { + name = "rangedweapons:rocket_explosion", + --description = "DuN mInD mEh...", + radius = 3, + tiles = { + side = "rangedweapons_invisible.png", + top = "rangedweapons_invisible.png", + bottom = "rangedweapons_invisible.png", + burning = "rangedweapons_invisible.png" + }, +} +tnt.register_tnt(rocket_boom) + +local rangedweapons_rocket = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.0, y=0.0}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_rocket.on_step = function(self, dtime, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + if self.timer >= 0.002 then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.04, + size = 7, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_rocket_fly.png", + glow = 15, + }) + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=6, z=0}, + expirationtime = 0.4, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + tiem = tiem + 0.002 + end + if self.timer >= 0.375 then + local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 1.5) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:rocket" and obj:get_luaentity().name ~= "__builtin:item" then + tnt.boom(pos, rocket_boom) + self.object:remove() + end + end + end +end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + tnt.boom(pos, rocket_boom) + self.object:remove() + end + if self.timer >= 7.5 then + tnt.boom(pos, rocket_boom) + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end + +minetest.register_entity("rangedweapons:rocket", rangedweapons_rocket) + + +local rangedweapons_he_grenade = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.0, y=0.0}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_he_grenade.on_step = function(self, dtime, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + if self.timer >= 0.002 then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.04, + size = 7, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_rocket_fly.png", + glow = 15, + }) + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=16, z=0}, + expirationtime = 0.4, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + tiem = tiem + 0.002 + end + if self.timer >= 0.4 then + local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 1.5) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:he_grenade" and obj:get_luaentity().name ~= "__builtin:item" then + tnt.boom(pos, rocket_boom) + self.object:remove() + end + end + end +end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + tnt.boom(pos, he_boom) + self.object:remove() + end + if self.timer >= 7.5 then + tnt.boom(pos, he_boom) + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end + +minetest.register_entity("rangedweapons:he_grenade", rangedweapons_he_grenade) + + +local barrel_boom = { + name = "rangedweapons:explosion", + --description = "DuN mInD mEh...", + radius = 3, + tiles = { + side = "rangedweapons_invisible.png", + top = "rangedweapons_invisible.png", + bottom = "rangedweapons_invisible.png", + burning = "rangedweapons_invisible.png" + }, +} +tnt.register_tnt(barrel_boom) + +minetest.register_craft({ + output = "rangedweapons:barrel", + recipe = { + {"default:wood", "tnt:gunpowder", "default:wood"}, + {"default:wood", "tnt:tnt", "default:wood"}, + } +}) + +minetest.register_node("rangedweapons:barrel", { + description = "" ..core.colorize("#35cdff","Explosive barrel\n")..core.colorize("#FFFFFF", "It will explode if shot by gun"), + tiles = { + "rangedweapons_barrel_top.png", + "rangedweapons_barrel_top.png", + "rangedweapons_barrel_side.png", + "rangedweapons_barrel_side.png", + "rangedweapons_barrel_side.png", + "rangedweapons_barrel_side.png" + }, + drawtype = "nodebox", + paramtype = "light", + groups = {choppy = 3, oddly_breakable_by_hand = 3}, + on_timer = function(pos) + tnt.boom(pos, barrel_boom) + end, + on_blast = function(pos) + tnt.boom(pos, barrel_boom) + end, + sounds = default.node_sound_wood_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5, -0.5, 0.1875, 0.5, 0.5}, -- NodeBox1 + {-0.5, -0.5, -0.1875, 0.5, 0.5, 0.1875}, -- NodeBox2 + {-0.4375, -0.5, -0.3125, 0.4375, 0.5, 0.3125}, -- NodeBox3 + {-0.3125, -0.5, -0.4375, 0.3125, 0.5, 0.4375}, -- NodeBox4 + {-0.375, -0.5, -0.375, 0.375, 0.5, 0.375}, -- NodeBox5 + } + } +}) + + + + diff --git a/g36.lua b/g36.lua new file mode 100644 index 0000000..91b9d60 --- /dev/null +++ b/g36.lua @@ -0,0 +1,177 @@ +minetest.register_craft({ + output = 'rangedweapons:g36', + recipe = { + {'default:diamond', 'default:mese', 'default:diamond'}, + {'default:steel_ingot', 'default:diamond', 'default:steel_ingot'}, + {'default:steel_ingot', '', 'default:steel_ingot'}, + } +}) + + minetest.register_craftitem("rangedweapons:g36", { + stack_max= 1, + wield_scale = {x=1.75,y=1.75,z=1.3}, + description = "" ..core.colorize("#35cdff","G36\n") ..core.colorize("#FFFFFF", "Ranged damage: 6-13\n") ..core.colorize("#FFFFFF", "Accuracy: 84%\n") ..core.colorize("#FFFFFF", "Mob knockback: 3\n")..core.colorize("#FFFFFF", "Critical chance: 10%\n") ..core.colorize("#FFFFFF", "Critical damage: 12-25\n") ..core.colorize("#FFFFFF", "Ammunition: 5.56mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.14\n") ..core.colorize("#FFFFFF", "Gun type: Assault rifle\n") ..core.colorize("#FFFFFF", "Bullet velocity: 35"), + range = 0, + inventory_image = "rangedweapons_g36.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.14 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:g36" then + if not inv:contains_item("main", "rangedweapons:556mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:g36" then + inv:remove_item("main", "rangedweapons:556mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:g36shot") + if obj then + minetest.sound_play("rangedweapons_smg", {object=obj}) + obj:setvelocity({x=dir.x * 35, y=dir.y * 35, z=dir.z * 35}) + obj:setacceleration({x=dir.x * math.random(-1.6,1.6), y=math.random(-1.6,1.6), z=dir.z * math.random(-1.6,1.6)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.5, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_g36shot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_g36shot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.085 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:g36shot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 10 then + local damage = math.random(12,25) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=6}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(6,13) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 3}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 10 then + local damage = math.random(12,25) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(6,13) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:g36shot", rangedweapons_g36shot ) \ No newline at end of file diff --git a/generator.lua b/generator.lua new file mode 100644 index 0000000..a079198 --- /dev/null +++ b/generator.lua @@ -0,0 +1,35 @@ +minetest.register_craft({ + output = 'rangedweapons:generator', + recipe = { +{'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'}, + {'rangedweapons:gunsteel_ingot', 'rangedweapons:gun_power_core', 'rangedweapons:gunsteel_ingot'}, + {'rangedweapons:gunsteel_ingot', 'rangedweapons:gunsteel_ingot', 'rangedweapons:gunsteel_ingot'}, + } +}) + +minetest.register_node("rangedweapons:generator", { + description = "" ..core.colorize("#35cdff","Power particle generator\n")..core.colorize("#FFFFFF", "generates 6 power particles on top of itself, every 15 seconds"), + tiles = { + "rangedweapons_generator_top.png", + "rangedweapons_generator_bottom.png", + "rangedweapons_generator_side.png", + "rangedweapons_generator_side.png", + "rangedweapons_generator_side.png", + "rangedweapons_generator_side.png" + }, + paramtype = "light", + groups = {cracky = 3, oddly_breakable_by_hand = 3}, + on_timer = function(pos, elapsed) + minetest.get_node_timer(pos):start(15) + pos.y = pos.y+1 + minetest.add_item(pos, "rangedweapons:power_particle 6") + end, + on_construct = function(pos) + minetest.get_node_timer(pos):start(15) + end, + sounds = default.node_sound_wood_defaults(), +}) + + + + diff --git a/glass_breaking.lua b/glass_breaking.lua new file mode 100644 index 0000000..8f4e00b --- /dev/null +++ b/glass_breaking.lua @@ -0,0 +1,112 @@ +minetest.register_craftitem("rangedweapons:glass_shards", { + description = "" ..core.colorize("#35cdff","Glass shards\n")..core.colorize("#FFFFFF", "3 of those, can be crafted into a file of glass fragments"), + inventory_image = "rangedweapons_glass_shards.png", +}) +minetest.register_craft({ + output = "vessels:glass_fragments", + recipe = { + {"rangedweapons:glass_shards", "rangedweapons:glass_shards", "rangedweapons:glass_shards"}, + } +}) + +minetest.override_item("default:glass", { + on_timer = function(pos) + minetest.swap_node(pos, {name = "rangedweapons:broken_glass"}) + minetest.sound_play("glass_break",{pos}) + end, +}) + + +minetest.register_node("rangedweapons:broken_glass", { + description = "Broken glass", + drawtype = "glasslike", + tiles = { + "rangedweapons_broken_glass.png" + }, + paramtype = "light", + walkable = false, + is_ground_content = false, + liquidtype = "source", + liquid_alternative_flowing = "rangedweapons:broken_glass", + liquid_alternative_source = "rangedweapons:broken_glass", + liquid_viscosity = 7, + alpha = 160, + liquid_range= 0, + liquid_renewable = false, + damage_per_second = 2, + groups = {oddly_breakable_by_hand = 3}, +}) + +if minetest.get_modpath("doors") then + +minetest.override_item("doors:door_glass_a", { + on_timer = function(pos) + minetest.swap_node(pos, {name = "air"}) + minetest.add_item(pos, "vessels:glass_fragments 5") + minetest.sound_play("glass_break",{pos}) + end, +}) + +minetest.override_item("doors:door_glass_b", { + on_timer = function(pos) + minetest.swap_node(pos, {name = "air"}) + minetest.add_item(pos, "vessels:glass_fragments 5") + minetest.sound_play("glass_break",{pos}) + end, +}) + +end + +if minetest.get_modpath("xpanes") then + +minetest.override_item("xpanes:pane", { + on_timer = function(pos) + minetest.swap_node(pos, {name = "air"}) + minetest.add_item(pos, "rangedweapons:glass_shards") + minetest.sound_play("glass_break",{pos}) + end, +}) + +minetest.override_item("xpanes:pane_flat", { + on_timer = function(pos) + minetest.swap_node(pos, {name = "air"}) + minetest.add_item(pos, "rangedweapons:glass_shards") + minetest.sound_play("glass_break",{pos}) + end, +}) + +end + +if minetest.get_modpath("vessels") then + +minetest.override_item("vessels:glass_bottle", { + on_timer = function(pos) + minetest.swap_node(pos, {name = "air"}) + minetest.add_item(pos, "rangedweapons:glass_shards") + minetest.sound_play("glass_break",{pos}) + end, + walkable = true, + node_box = { + type = "fixed", + fixed = { + {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2}, + }, + }, +}) + +minetest.override_item("vessels:drinking_glass", { + on_timer = function(pos) + minetest.swap_node(pos, {name = "air"}) + minetest.add_item(pos, "rangedweapons:glass_shards") + minetest.sound_play("glass_break",{pos}) + end, + walkable = true, + node_box = { + type = "fixed", + fixed = { + {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2}, + }, + }, +}) + +end diff --git a/glock17.lua b/glock17.lua new file mode 100644 index 0000000..d8f45a8 --- /dev/null +++ b/glock17.lua @@ -0,0 +1,190 @@ + + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.35 then + for _, player in pairs(minetest.get_connected_players()) do + if player:get_wielded_item():get_name() == "rangedweapons:glock17_rld" then + player:set_wielded_item("rangedweapons:glock17") + minetest.sound_play("", {player}) + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:glock17_rld", { + stack_max= 1, + wield_scale = {x=1.1,y=1.1,z=1.05}, + description = "***RELOADING GLOCK 17 ***", + range = 0, + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_glock17_rld.png", +}) + + +minetest.register_tool("rangedweapons:glock17", { + description = "" ..core.colorize("#35cdff","Glock 17\n") ..core.colorize("#FFFFFF", "Ranged damage: 7-11\n") ..core.colorize("#FFFFFF", "Accuracy: 96%\n") ..core.colorize("#FFFFFF", "Mob knockback: 4\n") ..core.colorize("#FFFFFF", "Critical chance: 19%\n") ..core.colorize("#FFFFFF", "Critical damage: 12-22\n") ..core.colorize("#FFFFFF", "Ammunition: 9mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.35\n") ..core.colorize("#FFFFFF", "Gun type: Handgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 30"), + wield_scale = {x=1.2,y=1.2,z=1.2}, + range = 0, + inventory_image = "rangedweapons_glock17.png", + on_use = function(itemstack, user, pointed_thing) + timer = 0 + local inv = user:get_inventory() + if not inv:contains_item("main", "rangedweapons:9mm 1") then + minetest.sound_play("rangedweapons_empty", {object=user}) + return itemstack + end + if not minetest.setting_getbool("creative_mode") then + inv:remove_item("main", "rangedweapons:9mm") + end + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:glock17shot") + if obj then + minetest.sound_play("rangedweapons_glock", {object=obj}) + obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 30}) + obj:setacceleration({x=dir.x * math.random(-0.4,0.4), y=math.random(-0.4,0.4), z=dir.z * math.random(-0.4,0.4)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + local obj = minetest.add_entity(pos, "rangedweapons:smoke") + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.7, + size = 5, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:glock17_rld" + end + end + end + return itemstack + end, +}) +minetest.register_craft({ + output = 'rangedweapons:glock17', + recipe = { + {'rangedweapons:plastic_sheet', 'rangedweapons:plastic_sheet', 'rangedweapons:plastic_sheet'}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'', 'default:diamond', 'rangedweapons:plastic_sheet'}, + } +}) + +local rangedweapons_glock17shot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_glock17shot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.1 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:glock17shot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 19 then + local damage = math.random(12,22) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=8}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(7,11) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=4}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 19 then + local damage = math.random(12,22) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(7,11) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} + end + end + end + + +minetest.register_entity("rangedweapons:glock17shot", rangedweapons_glock17shot ) + + diff --git a/hand_grenade.lua b/hand_grenade.lua new file mode 100644 index 0000000..3219edb --- /dev/null +++ b/hand_grenade.lua @@ -0,0 +1,164 @@ +minetest.register_craft({ + output = "rangedweapons:hand_grenade", + recipe = { + {"", "", "default:mese_crystal_fragment"}, + {"default:steel_ingot", "tnt:gunpowder", ""}, + {"tnt:gunpowder", "tnt:gunpowder", ""}, + } +}) + +minetest.register_craftitem("rangedweapons:pin", { + wield_scale = {x=2.5,y=2.5,z=1.0}, + inventory_image = "rangedweapons_pin.png", +}) +local rangedweapons_grenade_pin = { + physical = false, + timer = 0, + visual = "wielditem", + visual_size = {x=0.15, y=0.15}, + textures = {"rangedweapons:pin"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_grenade_pin.on_step = function(self, dtime, pos) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + self.object:remove() + minetest.sound_play("rangedweapons_bulletdrop", {pos = self.lastpos, gain = 0.8}) + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end + + + +minetest.register_entity("rangedweapons:grenade_pin", rangedweapons_grenade_pin) + +local grenade_boom = { + name = "rangedweapons:grenade_explosion", + --description = "DuN mInD mEh...", + radius = 3, + tiles = { + side = "rangedweapons_invisible.png", + top = "rangedweapons_invisible.png", + bottom = "rangedweapons_invisible.png", + burning = "rangedweapons_invisible.png" + }, +} + +minetest.register_craftitem("rangedweapons:hand_grenade", { + stack_max= 1, + wield_scale = {x=1.1,y=1.1,z=1.05}, + description = "" ..core.colorize("#35cdff","Hand grenade\n") ..core.colorize("#FFFFFF", "Explosion radius: 3\n")..core.colorize("#FFFFFF", "Throw force: 12\n") ..core.colorize("#FFFFFF", "Grenade gravitational pull: 6\n") ..core.colorize("#ffc000", "Right-click to unpin, Left click to throw after unpinning\n") ..core.colorize("#ffc000", "Thrown or not, it will explode after 3 secons from unpinning, be careful!"), + range = 0, + inventory_image = "rangedweapons_hand_grenade.png", +}) +minetest.register_craftitem("rangedweapons:hand_grenade_nopin", { + stack_max= 1, + wield_scale = {x=1.1,y=1.1,z=1.05}, + description = "***HURRY UP AND THROW IT!!!***", + range = 0, + inventory_image = "rangedweapons_hand_grenade_nopin.png", + groups = {not_in_creative_inventory = 1}, + on_use = function(itemstack, user, pointed_thing) + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:grenade") + if obj then + obj:setvelocity({x=dir.x * 12, y=dir.y * 12, z=dir.z * 12}) + obj:setacceleration({x=dir.x * -1, y=-6, z=dir.z * -1}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "" + end + end + end + return itemstack + end, +}) + +tnt.register_tnt(grenade_boom) + + local timer = 0 +minetest.register_globalstep(function(dtime, player, pos) + timer = timer + dtime; + if timer >= 0.001 then + for _, player in pairs(minetest.get_connected_players()) do + local pos = player:getpos() + local controls = player:get_player_control() + if player:get_wielded_item():get_name() == "rangedweapons:hand_grenade" then + if controls.RMB then + player:set_wielded_item("rangedweapons:hand_grenade_nopin") + timer = 0 + minetest.sound_play("rangedweapons_reload_a", {player}) + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:grenade_pin") + minetest.sound_play("", {object=obj}) +obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) +obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + +end + end + + if timer >= 3.0 and + player:get_wielded_item():get_name() == "rangedweapons:hand_grenade_nopin" then + player:set_wielded_item("") + timer = 0 + tnt.boom(pos, grenade_boom) + + end + end + end + end) + +local rangedweapons_grenade = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.5, y=0.5}, + textures = {"rangedweapons_hand_grenade_nopin.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_grenade.on_step = function(self, dtime, pos) + local pos = self.object:getpos() + local node = minetest.get_node(pos) + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + local vel = self.object:getvelocity() + local acc = self.object:getacceleration() + self.object:setvelocity({x=vel.x*-0.3, y=vel.y*-1, z=vel.z*-0.3}) + self.object:setacceleration({x=acc.x, y=acc.y, z=acc.z}) + end + end + self.timer = timer + if self.timer > 3.0 then + tnt.boom(pos, grenade_boom) + self.object:remove() + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} + +end + + + +minetest.register_entity("rangedweapons:grenade", rangedweapons_grenade) + + diff --git a/init.lua b/init.lua index 588b4ee..f0c67b6 100644 --- a/init.lua +++ b/init.lua @@ -1,2636 +1,248 @@ -minetest.register_craftitem("rangedweapons:javelint", { - wield_scale = {x=2,y=2,z=1.0}, - inventory_image = "ranged_javelin.png", -}) +local modpath = minetest.get_modpath(minetest.get_current_modname()) -minetest.register_craftitem("rangedweapons:javelin", { - description = "javelin(ranged dammage 6|survives block hit|velocity 30|penetrates targets)", - wield_scale = {x=2,y=2,z=1.0}, - range = 5, - inventory_image = "ranged_javelin_inv.png", - stack_max= 10, - on_use = function(itemstack, user, pointed_thing) - if not minetest.setting_getbool("creative_mode") then itemstack:take_item() - end - if pointed_thing.type ~= "nothing" then - local pointed = minetest.get_pointed_thing_position(pointed_thing) - if vector.distance(user:getpos(), pointed) < 8 then - return itemstack - end - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir then - pos.y = pos.y + 1.5 - local obj = minetest.add_entity(pos, "rangedweapons:javelin_entity") - if obj then - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 30}) - obj:setacceleration({x=dir.x * -3, y=-10, z=dir.z * -3}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:javelin 1', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', ''}, - {'default:steel_ingot', 'default:stick', ''}, - {'', '', 'default:stick'}, - } -}) +dofile(modpath.."/settings.lua") +dofile(modpath.."/misc.lua") +dofile(modpath.."/ammo.lua") +dofile(modpath.."/bullet_stuff.lua") -local rangedweapons_javelin_ENTITY = { - physical = false, - timer = 0, - visual = "wielditem", - visual_size = {x=0.5, y=0.5}, - textures = {"rangedweapons:javelint"}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} - -rangedweapons_javelin_ENTITY.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.1 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:javelin_entity" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 6 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("rangedweapons_arrow", {pos = self.lastpos, gain = 0.8}) - end - else - local damage = 6 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("rangedweapons_arrow", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "rangedweapons:javelin") - end - minetest.sound_play("", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +if shurikens == true then + dofile(modpath.."/shurikens.lua") end -minetest.register_entity("rangedweapons:javelin_entity", rangedweapons_javelin_ENTITY) - -minetest.override_item('default:clay_brick', { - description = "brick(ranged damage 5|afected by gravity|survives block hit|velocity 20)", - range = 0, - on_use = function(itemstack, user, pointed_thing) - if not minetest.setting_getbool("creative_mode") then itemstack:take_item() - end - if pointed_thing.type ~= "nothing" then - local pointed = minetest.get_pointed_thing_position(pointed_thing) - if vector.distance(user:getpos(), pointed) < 8 then - return itemstack - end - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir then - pos.y = pos.y + 1.5 - local obj = minetest.add_entity(pos, "rangedweapons:brick") - if obj then - obj:setvelocity({x=dir.x * 20, y=dir.y * 20, z=dir.z * 20}) - obj:setacceleration({x=dir.x * -3, y=-10, z=dir.z * -3}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) - -local RANGEDWEAPONS_brick = { - physical = false, - timer = 0, - visual = "sprite", - visual_size = {x=0.5, y=0.5,}, - textures = {'default_clay_brick.png'}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -RANGEDWEAPONS_brick.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.12 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:brick" 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) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 5 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "default:clay_brick") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +if handguns == true then + dofile(modpath.."/makarov.lua") + dofile(modpath.."/luger.lua") + dofile(modpath.."/beretta.lua") + dofile(modpath.."/glock17.lua") end -minetest.register_entity("rangedweapons:brick", RANGEDWEAPONS_brick) - - - - -minetest.register_craftitem("rangedweapons:handgunshot", { - wield_scale = {x=1.0,y=1.0,z=1.0}, - inventory_image = "rangedweapons_handgunshot.png", -}) -minetest.register_craftitem("rangedweapons:revolvershot", { - wield_scale = {x=6.0,y=1.0,z=1.0}, - inventory_image = "rangedweapons_rifleshot.png", -}) - -minetest.register_craftitem("rangedweapons:lasershot", { - wield_scale = {x=1.0,y=3,z=1.0}, - inventory_image = "rangedweapons_lasershot.png", -}) - -minetest.register_craftitem("rangedweapons:rifleshot", { - wield_scale = {x=3.5,y=1.0,z=1.0}, - inventory_image = "rangedweapons_rifleshot.png", -}) - - -minetest.register_craftitem("rangedweapons:wooden_shuriken", { - description = "wooden shuriken(ranged damage 2|afected by gravity|velocity 35)", - range = 0, - stack_max= 200, - inventory_image = "rangedweapons_wooden_shuriken.png", - on_use = function(itemstack, user, pointed_thing) - if not minetest.setting_getbool("creative_mode") then itemstack:take_item() - end - if pointed_thing.type ~= "nothing" then - local pointed = minetest.get_pointed_thing_position(pointed_thing) - if vector.distance(user:getpos(), pointed) < 8 then - return itemstack - end - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir then - pos.y = pos.y + 1.5 - local obj = minetest.add_entity(pos, "rangedweapons:woodsr") - if obj then - obj:setvelocity({x=dir.x * 35, y=dir.y * 35, z=dir.z * 35}) - obj:setacceleration({x=dir.x * -3, y=-10, z=dir.z * -3}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) - -local RANGEDWEAPONS_WOODSR = { - physical = false, - timer = 0, - visual = "cube", - visual_size = {x=0.5, y=0.0,}, - textures = {'rangedweapons_wooden_shuriken.png','rangedweapons_wooden_shuriken.png','rangedweapons_wooden_shuriken.png','rangedweapons_wooden_shuriken.png','rangedweapons_wooden_shuriken.png','rangedweapons_wooden_shuriken.png'}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -RANGEDWEAPONS_WOODSR.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.07 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:woodsr" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 2 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 2 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +if javelins == true then + dofile(modpath.."/javelin.lua") end -minetest.register_entity("rangedweapons:woodsr", RANGEDWEAPONS_WOODSR) - -minetest.register_craft({ - output = 'rangedweapons:wooden_shuriken 32', - recipe = { - {'', 'group:wood', ''}, - {'group:wood', '', 'group:wood'}, - {'', 'group:wood', ''}, - } -}) - - -minetest.register_craftitem("rangedweapons:stone_shuriken", { - description = "stone shuriken(ranged damage 4|afected by gravity|velocity 20)", - range = 0, - stack_max= 200, - inventory_image = "rangedweapons_stone_shuriken.png", - on_use = function(itemstack, user, pointed_thing) - if not minetest.setting_getbool("creative_mode") then itemstack:take_item() - end - if pointed_thing.type ~= "nothing" then - local pointed = minetest.get_pointed_thing_position(pointed_thing) - if vector.distance(user:getpos(), pointed) < 8 then - return itemstack - end - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir then - pos.y = pos.y + 1.5 - local obj = minetest.add_entity(pos, "rangedweapons:stonesr") - if obj then - obj:setvelocity({x=dir.x * 20, y=dir.y * 20, z=dir.z * 20}) - obj:setacceleration({x=dir.x * -3, y=-10, z=dir.z * -3}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) - -local RANGEDWEAPONS_STONESR = { - physical = false, - timer = 0, - visual = "cube", - visual_size = {x=0.5, y=0.0,}, - textures = {'rangedweapons_stone_shuriken.png','rangedweapons_stone_shuriken.png','rangedweapons_stone_shuriken.png','rangedweapons_stone_shuriken.png','rangedweapons_stone_shuriken.png','rangedweapons_stone_shuriken.png'}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -RANGEDWEAPONS_STONESR.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.12 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:stonesr" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 4 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 4 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +if power_weapons == true then + dofile(modpath.."/generator.lua") + dofile(modpath.."/laser_blaster.lua") + dofile(modpath.."/laser_rifle.lua") + dofile(modpath.."/laser_shotgun.lua") end -minetest.register_entity("rangedweapons:stonesr", RANGEDWEAPONS_STONESR) - -minetest.register_craft({ - output = 'rangedweapons:stone_shuriken 32', - recipe = { - {'', 'default:cobble', ''}, - {'default:cobble', '', 'default:cobble'}, - {'', 'default:cobble', ''}, - } -}) - - -minetest.register_craftitem("rangedweapons:steel_shuriken", { - description = "steel shuriken(ranged damage 6|afected by gravity|survives block hit|velocity 45)", - range = 0, - stack_max= 200, - inventory_image = "rangedweapons_steel_shuriken.png", - on_use = function(itemstack, user, pointed_thing) - if not minetest.setting_getbool("creative_mode") then itemstack:take_item() - end - if pointed_thing.type ~= "nothing" then - local pointed = minetest.get_pointed_thing_position(pointed_thing) - if vector.distance(user:getpos(), pointed) < 8 then - return itemstack - end - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir then - pos.y = pos.y + 1.5 - local obj = minetest.add_entity(pos, "rangedweapons:steelsr") - if obj then - obj:setvelocity({x=dir.x * 45, y=dir.y * 45, z=dir.z * 45}) - obj:setacceleration({x=dir.x * -3, y=-10, z=dir.z * -3}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) - -local RANGEDWEAPONS_STEELSR = { - physical = false, - timer = 0, - visual = "cube", - visual_size = {x=0.5, y=0.0,}, - textures = {'rangedweapons_steel_shuriken.png','rangedweapons_steel_shuriken.png','rangedweapons_steel_shuriken.png','rangedweapons_steel_shuriken.png','rangedweapons_steel_shuriken.png','rangedweapons_steel_shuriken.png'}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -RANGEDWEAPONS_STEELSR.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.06 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:steelsr" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 6 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 6 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "rangedweapons:steel_shuriken") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +if machine_pistols == true then + dofile(modpath.."/tmp.lua") + dofile(modpath.."/tec9.lua") + dofile(modpath.."/uzi.lua") + dofile(modpath.."/kriss_sv.lua") +end +if shotguns == true then + dofile(modpath.."/remington.lua") + dofile(modpath.."/spas12.lua") + dofile(modpath.."/benelli.lua") + dofile(modpath.."/jackhammer.lua") + dofile(modpath.."/aa12.lua") +end +if sub_machineguns == true then + dofile(modpath.."/mp5.lua") + dofile(modpath.."/ump.lua") + dofile(modpath.."/mp40.lua") +end +if rifles == true then + dofile(modpath.."/awp.lua") + dofile(modpath.."/svd.lua") + dofile(modpath.."/m200.lua") +end +if heavy_machineguns == true then + dofile(modpath.."/m60.lua") + dofile(modpath.."/rpk.lua") + dofile(modpath.."/minigun.lua") +end +if magnums_and_revolvers == true then + dofile(modpath.."/deagle.lua") + dofile(modpath.."/python.lua") + dofile(modpath.."/taurus.lua") +end +if assault_rifles == true then + dofile(modpath.."/m16.lua") + dofile(modpath.."/g36.lua") + dofile(modpath.."/ak47.lua") + dofile(modpath.."/scar.lua") end -minetest.register_entity("rangedweapons:steelsr", RANGEDWEAPONS_STEELSR) - -minetest.register_craft({ - output = 'rangedweapons:steel_shuriken 32', - recipe = { - {'', 'default:steel_ingot', ''}, - {'default:steel_ingot', '', 'default:steel_ingot'}, - {'', 'default:steel_ingot', ''}, - } -}) - - -minetest.register_craftitem("rangedweapons:bronze_shuriken", { - description = "bronze shuriken(ranged damage 6|afected by gravity|survives block hit|velocity 50)", - range = 0, - stack_max= 200, - inventory_image = "rangedweapons_bronze_shuriken.png", - on_use = function(itemstack, user, pointed_thing) - if not minetest.setting_getbool("creative_mode") then itemstack:take_item() - end - if pointed_thing.type ~= "nothing" then - local pointed = minetest.get_pointed_thing_position(pointed_thing) - if vector.distance(user:getpos(), pointed) < 8 then - return itemstack - end - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir then - pos.y = pos.y + 1.5 - local obj = minetest.add_entity(pos, "rangedweapons:bronzesr") - if obj then - obj:setvelocity({x=dir.x * 50, y=dir.y * 50, z=dir.z * 50}) - obj:setacceleration({x=dir.x * -3, y=-10, z=dir.z * -3}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) - -local RANGEDWEAPONS_BRONZESR = { - physical = false, - timer = 0, - visual = "cube", - visual_size = {x=0.5, y=0.0,}, - textures = {'rangedweapons_bronze_shuriken.png','rangedweapons_bronze_shuriken.png','rangedweapons_bronze_shuriken.png','rangedweapons_bronze_shuriken.png','rangedweapons_bronze_shuriken.png','rangedweapons_bronze_shuriken.png'}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -RANGEDWEAPONS_BRONZESR.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.055 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:bronzesr" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 6 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 6 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "rangedweapons:bronze_shuriken") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +if explosives == true then + dofile(modpath.."/explosives.lua") + dofile(modpath.."/m79.lua") + dofile(modpath.."/milkor.lua") + dofile(modpath.."/rpg.lua") + dofile(modpath.."/hand_grenade.lua") end -minetest.register_entity("rangedweapons:bronzesr", RANGEDWEAPONS_BRONZESR) - -minetest.register_craft({ - output = 'rangedweapons:bronze_shuriken 32', - recipe = { - {'', 'default:bronze_ingot', ''}, - {'default:bronze_ingot', '', 'default:bronze_ingot'}, - {'', 'default:bronze_ingot', ''}, - } -}) - -minetest.register_craftitem("rangedweapons:gold_shuriken", { - description = "golden shuriken(ranged damage 7|afected by gravity|survives block hit|velocity 35)", - range = 0, - stack_max= 200, - inventory_image = "rangedweapons_golden_shuriken.png", - on_use = function(itemstack, user, pointed_thing) - if not minetest.setting_getbool("creative_mode") then itemstack:take_item() - end - if pointed_thing.type ~= "nothing" then - local pointed = minetest.get_pointed_thing_position(pointed_thing) - if vector.distance(user:getpos(), pointed) < 8 then - return itemstack - end - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir then - pos.y = pos.y + 1.5 - local obj = minetest.add_entity(pos, "rangedweapons:goldsr") - if obj then - obj:setvelocity({x=dir.x * 35, y=dir.y * 35, z=dir.z * 35}) - obj:setacceleration({x=dir.x * -3, y=-10, z=dir.z * -3}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) - -local RANGEDWEAPONS_GOLDSR = { - physical = false, - timer = 0, - visual = "cube", - visual_size = {x=0.5, y=0.0,}, - textures = {'rangedweapons_golden_shuriken.png','rangedweapons_golden_shuriken.png','rangedweapons_golden_shuriken.png','rangedweapons_golden_shuriken.png','rangedweapons_golden_shuriken.png','rangedweapons_golden_shuriken.png'}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -RANGEDWEAPONS_GOLDSR.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.07 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:goldsr" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 7 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 7 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "rangedweapons:gold_shuriken") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +if door_breaking == true then + dofile(modpath.."/door_breaking.lua") end -minetest.register_entity("rangedweapons:goldsr", RANGEDWEAPONS_GOLDSR) - -minetest.register_craft({ - output = 'rangedweapons:gold_shuriken 32', - recipe = { - {'', 'default:gold_ingot', ''}, - {'default:gold_ingot', '', 'default:gold_ingot'}, - {'', 'default:gold_ingot', ''}, - } -}) - -minetest.register_craftitem("rangedweapons:mese_shuriken", { - description = "mese shuriken(ranged damage 7|afected by gravity|survives block hit|velocity 50)", - range = 0, - stack_max= 200, - inventory_image = "rangedweapons_mese_shuriken.png", - on_use = function(itemstack, user, pointed_thing) - if not minetest.setting_getbool("creative_mode") then itemstack:take_item() - end - if pointed_thing.type ~= "nothing" then - local pointed = minetest.get_pointed_thing_position(pointed_thing) - if vector.distance(user:getpos(), pointed) < 8 then - return itemstack - end - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir then - pos.y = pos.y + 1.5 - local obj = minetest.add_entity(pos, "rangedweapons:mesesr") - if obj then - obj:setvelocity({x=dir.x * 50, y=dir.y * 50, z=dir.z * 50}) - obj:setacceleration({x=dir.x * -3, y=-10, z=dir.z * -3}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) - -local RANGEDWEAPONS_MESESR = { - physical = false, - timer = 0, - visual = "cube", - visual_size = {x=0.5, y=0.0,}, - textures = {'rangedweapons_mese_shuriken.png','rangedweapons_mese_shuriken.png','rangedweapons_mese_shuriken.png','rangedweapons_mese_shuriken.png','rangedweapons_mese_shuriken.png','rangedweapons_mese_shuriken.png'}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -RANGEDWEAPONS_MESESR.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.055 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:mesesr" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 7 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 7 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end +if glass_breaking == true then + dofile(modpath.."/glass_breaking.lua") +end +if glass_breaking == false then +minetest.register_abm({ + nodenames = {"rangedweapons:broken_glass"}, + interval = 1, + chance = 1, + action = function(pos, node) + if minetest.get_node(pos).name == "rangedweapons:broken_glass" then + node.name = "air" + minetest.set_node(pos, node) end end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "rangedweapons:mese_shuriken") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +}) end -minetest.register_entity("rangedweapons:mesesr", RANGEDWEAPONS_MESESR) - -minetest.register_craft({ - output = 'rangedweapons:mese_shuriken 32', - recipe = { - {'', 'default:mese_crystal', ''}, - {'default:mese_crystal', '', 'default:mese_crystal'}, - {'', 'default:mese_crystal', ''}, - } -}) - - -minetest.register_craftitem("rangedweapons:diamond_shuriken", { - description = "diamond shuriken(ranged damage 8|afected by gravity|survives block hit|velocity 50)", - range = 0, - stack_max= 200, - inventory_image = "rangedweapons_diamond_shuriken.png", - on_use = function(itemstack, user, pointed_thing) - if not minetest.setting_getbool("creative_mode") then itemstack:take_item() - end - if pointed_thing.type ~= "nothing" then - local pointed = minetest.get_pointed_thing_position(pointed_thing) - if vector.distance(user:getpos(), pointed) < 8 then - return itemstack - end - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir then - pos.y = pos.y + 1.5 - local obj = minetest.add_entity(pos, "rangedweapons:diamondsr") - if obj then - obj:setvelocity({x=dir.x * 50, y=dir.y * 50, z=dir.z * 50}) - obj:setacceleration({x=dir.x * -3, y=-10, z=dir.z * -3}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) - -local RANGEDWEAPONS_DIAMONDSR = { - physical = false, - timer = 0, - visual = "cube", - visual_size = {x=0.5, y=0.0,}, - textures = {'rangedweapons_diamond_shuriken.png','rangedweapons_diamond_shuriken.png','rangedweapons_diamond_shuriken.png','rangedweapons_diamond_shuriken.png','rangedweapons_diamond_shuriken.png','rangedweapons_diamond_shuriken.png'}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -RANGEDWEAPONS_DIAMONDSR.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.055 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:diamondsr" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 8 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 8 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "rangedweapons:diamond_shuriken") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} -end - -minetest.register_entity("rangedweapons:diamondsr", RANGEDWEAPONS_DIAMONDSR) - -minetest.register_craft({ - output = 'rangedweapons:diamond_shuriken 32', - recipe = { - {'', 'default:diamond', ''}, - {'default:diamond', '', 'default:diamond'}, - {'', 'default:diamond', ''}, - } -}) - -minetest.register_tool("rangedweapons:jackhammer", { - description = "jackhammer(ranged damage 10|pellets 9|uses shotgun shells to shoot|velocity 45)", - wield_scale = {x=3.0,y=3.0,z=2.5}, - inventory_image = "rangedweapons_jackhammer.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:shell 1") then - minetest.sound_play("empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:shell") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") - if obj then - minetest.sound_play("shotgun_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 30}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 33}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 36}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 39}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 42}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 27}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 24}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 21}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 18}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:jackhammer', - recipe = { - {'', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steelblock', 'default:steelblock'}, - {'', 'default:diamond', 'default:steel_ingot'}, - } -}) - -local rangedweapons_jackhammershot = { - physical = false, - timer = 0, - visual = "sprite", - visual_size = {x=0.25, y=0.25,}, - textures = {'shot.png'}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -rangedweapons_jackhammershot.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.11 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:jackhammershot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 10 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 10 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} -end - -minetest.register_entity("rangedweapons:jackhammershot", rangedweapons_jackhammershot ) - -minetest.register_tool("rangedweapons:boomstick", { - description = "boomstick(ranged damage 4|pellets 11|uses shotgun shells to shoot|velocity 40)", - wield_scale = {x=1.0,y=1.0,z=2.0}, - inventory_image = "rangedweapons_boomstick.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:shell 1") then - minetest.sound_play("empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:shell") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:boomstickshot") - if obj then - minetest.sound_play("shotgun_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 30}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:boomstickshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 33}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:boomstickshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 36}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:boomstickshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 39}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:boomstickshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 42}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:boomstickshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 45}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:boomstickshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 27}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:boomstickshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 24}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:boomstickshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 21}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:boomstickshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 18}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:boomstickshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 15}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:boomstick', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:tree'}, - {'default:tree', 'default:diamond', 'default:tree'}, - } -}) - -local rangedweapons_boomstickshot = { - physical = false, - timer = 0, - visual = "sprite", - visual_size = {x=0.25, y=0.25,}, - textures = {'shot.png'}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -rangedweapons_boomstickshot.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.11 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:boomstickshot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 4 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 4 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} -end - -minetest.register_entity("rangedweapons:boomstickshot", rangedweapons_boomstickshot ) - - -minetest.register_tool("rangedweapons:sawedoff", { - description = "sawedoff shotgun(ranged damage 5|pellets 7|uses shotgun shells to shoots)", - wield_scale = {x=1.5,y=1.5,z=2.0}, - inventory_image = "rangedweapons_sawedoff.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:shell 1") then - minetest.sound_play("empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:shell") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:sawedoffshot") - if obj then - minetest.sound_play("shotgun_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 30}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:sawedoffshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 33}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:sawedoffshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 36}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:sawedoffshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 39}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:sawedoffshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 27}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:sawedoffshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 24}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:sawedoffshot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 21}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:sawedoff', - recipe = { - {'default:tree', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'default:diamond', 'default:tree'}, - } -}) - -local rangedweapons_sawedoffshot = { - physical = false, - timer = 0, - visual = "sprite", - visual_size = {x=0.25, y=0.25,}, - textures = {'shot.png'}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -rangedweapons_sawedoffshot.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.10 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:sawedoffshot" 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) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 5 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} -end - -minetest.register_entity("rangedweapons:sawedoffshot", rangedweapons_sawedoffshot ) - - -minetest.register_tool("rangedweapons:spas12", { - description = "spas-12(ranged damage 8|pellets 5|uses shotgun shells to shoot)", - wield_scale = {x=1.5,y=1.5,z=1.5}, - inventory_image = "rangedweapons_spas12.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:shell 1") then - minetest.sound_play("empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:shell") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") - if obj then - minetest.sound_play("shotgun_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 30}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 35}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 40}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 25}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - pos.y = pos.y + 0 - local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") - minetest.sound_play("", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 20}) - obj:setacceleration({x=dir.x * 0, y= 0, z=dir.z * 0}) - - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:spas12', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'dye:black', 'default:diamond', 'default:steel_ingot'}, - } -}) -local rangedweapons_spas12shot = { - physical = false, - timer = 0, - visual = "sprite", - visual_size = {x=0.25, y=0.25,}, - textures = {'shot.png'}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -rangedweapons_spas12shot.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.1 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:spas12shot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 8 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 8 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} -end - -minetest.register_entity("rangedweapons:spas12shot", rangedweapons_spas12shot ) - -minetest.register_craftitem("rangedweapons:shell", { - wield_scale = {x=0.2,y=0.2,z=0.75}, - stack_max= 500, - description = "shotgun shell(ammunition for shotguns)", - inventory_image = "rangedweapons_shell.png", -}) -minetest.register_craft({ - output = 'rangedweapons:shell 25', - recipe = { - {'default:steel_ingot', 'dye:red', 'default:steel_ingot'}, - {'tnt:gunpowder', 'tnt:gunpowder', 'tnt:gunpowder'}, - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, - } -}) - -minetest.register_tool("rangedweapons:makarov", { - description = "makarov(ranged damage 5|uses 9mm bullets to shoot|velocity 45)", - wield_scale = {x=0.75,y=0.75,z=0.85}, - inventory_image = "rangedweapons_makarov.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:9mm 1") then - minetest.sound_play("rangedweapons_empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:9mm") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:makarovshot") - if obj then - minetest.sound_play("handgun_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 45, y=dir.y * 45, z=dir.z * 45}) - obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:makarov', - recipe = { - {'', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'default:mese_crystal_fragment', 'default:tree'}, - {'', '', 'dye:black'}, - } -}) - -local rangedweapons_makarovshot = { +local rangedweapons_empty_shell = { physical = false, timer = 0, visual = "wielditem", visual_size = {x=0.3, y=0.3}, - textures = {"rangedweapons:handgunshot"}, + textures = {"rangedweapons:shelldrop"}, lastpos= {}, collisionbox = {0, 0, 0, 0, 0, 0}, } -rangedweapons_makarovshot.on_step = function(self, dtime) +rangedweapons_empty_shell.on_step = function(self, dtime, pos) self.timer = self.timer + dtime local pos = self.object:getpos() local node = minetest.get_node(pos) - - if self.timer > 0.065 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:makarovshot" 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) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 5 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then + if self.lastpos.y ~= nil then if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") + local vel = self.object:getvelocity() + local acc = self.object:getacceleration() + self.object:setvelocity({x=vel.x*-0.3, y=vel.y*-0.75, z=vel.z*-0.3}) + minetest.sound_play("rangedweapons_shellhit", {pos = self.lastpos, gain = 0.8}) + self.object:setacceleration({x=acc.x, y=acc.y, z=acc.z}) end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end + end + if self.timer > 1.69 then + minetest.sound_play("rangedweapons_bulletdrop", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end self.lastpos= {x = pos.x, y = pos.y, z = pos.z} end -minetest.register_entity("rangedweapons:makarovshot", rangedweapons_makarovshot ) +minetest.register_entity("rangedweapons:empty_shell", rangedweapons_empty_shell ) -minetest.register_tool("rangedweapons:bereta", { - description = "bereta 98(ranged damage 6|uses 9mm bullets to shoot|velocity 50)", - wield_scale = {x=1.0,y=1.0,z=1.0}, - inventory_image = "rangedweapons_bereta.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:9mm 1") then - minetest.sound_play("rangedweapons_empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:9mm") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:beretashot") - if obj then - minetest.sound_play("handgun_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 50, y=dir.y * 50, z=dir.z * 50}) - obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:bereta', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'default:mese_crystal_fragment', 'default:steel_ingot'}, - {'', '', 'dye:black'}, - } -}) -local rangedweapons_beretashot = { + +local rangedweapons_empty_shell_shotgun = { physical = false, timer = 0, visual = "wielditem", - visual_size = {x=0.3, y=0.3}, - textures = {"rangedweapons:handgunshot"}, + visual_size = {x=0.35, y=0.35}, + textures = {"rangedweapons:shell_shotgundrop"}, lastpos= {}, collisionbox = {0, 0, 0, 0, 0, 0}, } -rangedweapons_beretashot.on_step = function(self, dtime) +rangedweapons_empty_shell_shotgun.on_step = function(self, dtime, pos) self.timer = self.timer + dtime local pos = self.object:getpos() local node = minetest.get_node(pos) - - if self.timer > 0.055 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:beretashot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 6 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 6 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then + if self.lastpos.y ~= nil then if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") + local vel = self.object:getvelocity() + local acc = self.object:getacceleration() + self.object:setvelocity({x=vel.x*-0.3, y=vel.y*-0.75, z=vel.z*-0.3}) + minetest.sound_play("rangedweapons_shellhit", {pos = self.lastpos, gain = 0.8}) + self.object:setacceleration({x=acc.x, y=acc.y, z=acc.z}) end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end + end + if self.timer > 1.69 then + minetest.sound_play("rangedweapons_bulletdrop", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end self.lastpos= {x = pos.x, y = pos.y, z = pos.z} end -minetest.register_entity("rangedweapons:beretashot", rangedweapons_beretashot ) +minetest.register_entity("rangedweapons:empty_shell_shotgun", rangedweapons_empty_shell_shotgun ) -minetest.register_tool("rangedweapons:deagle", { - description = "desert eagle(ranged damage 9|uses 375 bullets to shoot|velocity 55)", - wield_scale = {x=1.0,y=1.0,z=1.0}, - inventory_image = "rangedweapons_deagle.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:375 1") then - minetest.sound_play("rangedweapons_empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:375") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:deagleshot") - if obj then - minetest.sound_play("handgun_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 55, y=dir.y * 55, z=dir.z * 55}) - obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:deagle', - recipe = { - {'moreores:silver_ingot', 'moreores:silver_ingot', 'moreores:silver_ingot'}, - {'', 'default:mese_crystal_fragment', 'moreores:silver_ingot'}, - {'', '', 'dye:black'}, - } -}) -local rangedweapons_deagleshot = { +local rangedweapons_empty_shell_white = { physical = false, timer = 0, visual = "wielditem", - visual_size = {x=0.3, y=0.3}, - textures = {"rangedweapons:revolvershot"}, + visual_size = {x=0.30, y=0.30}, + textures = {"rangedweapons:shell_whitedrop"}, lastpos= {}, collisionbox = {0, 0, 0, 0, 0, 0}, } -rangedweapons_deagleshot.on_step = function(self, dtime) +rangedweapons_empty_shell_white.on_step = function(self, dtime, pos) self.timer = self.timer + dtime local pos = self.object:getpos() local node = minetest.get_node(pos) - - if self.timer > 0.05 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:deagleshot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 9 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 9 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then + if self.lastpos.y ~= nil then if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") + local vel = self.object:getvelocity() + local acc = self.object:getacceleration() + self.object:setvelocity({x=vel.x*-0.3, y=vel.y*-0.75, z=vel.z*-0.3}) + minetest.sound_play("rangedweapons_shellhit", {pos = self.lastpos, gain = 0.8}) + self.object:setacceleration({x=acc.x, y=acc.y, z=acc.z}) end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end + end + if self.timer > 1.69 then + minetest.sound_play("rangedweapons_bulletdrop", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end self.lastpos= {x = pos.x, y = pos.y, z = pos.z} end -minetest.register_entity("rangedweapons:deagleshot", rangedweapons_deagleshot ) +minetest.register_entity("rangedweapons:empty_shell_white", rangedweapons_empty_shell_white ) -minetest.register_craftitem("rangedweapons:9mm", { - stack_max= 500, - wield_scale = {x=0.2,y=0.2,z=0.75}, - description = "9mm bullet(ammunition for handguns)", - inventory_image = "rangedweapons_9mm.png", -}) -minetest.register_craft({ - output = 'rangedweapons:9mm 30', - recipe = { - {'default:steel_ingot', '', ''}, - {'tnt:gunpowder', '', ''}, - {'default:copper_ingot', '', ''}, - } -}) -minetest.register_tool("rangedweapons:python", { - description = "python(ranged damage 11|uses 375 bullets to shoot|velocity 90)", - wield_scale = {x=1.0,y=1.0,z=1.0}, - inventory_image = "rangedweapons_python.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:375 1") then - minetest.sound_play("rangedweapons_empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:375") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:pythonshot") - if obj then - minetest.sound_play("handgun_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 90, y=dir.y * 90, z=dir.z * 90}) - obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:python', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'default:mese_crystal', 'default:tree'}, - {'', '', 'default:tree'}, - } -}) - -local rangedweapons_pythonshot = { +local rangedweapons_empty_shell_grenade = { physical = false, timer = 0, visual = "wielditem", - visual_size = {x=0.3, y=0.3}, - textures = {"rangedweapons:revolvershot"}, + visual_size = {x=0.30, y=0.30}, + textures = {"rangedweapons:shell_grenadedrop"}, lastpos= {}, collisionbox = {0, 0, 0, 0, 0, 0}, } -rangedweapons_pythonshot.on_step = function(self, dtime) +rangedweapons_empty_shell_grenade.on_step = function(self, dtime, pos) self.timer = self.timer + dtime local pos = self.object:getpos() local node = minetest.get_node(pos) - - if self.timer > 0.02 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:pythonshot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 11 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 11 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then + if self.lastpos.y ~= nil then if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") + local vel = self.object:getvelocity() + local acc = self.object:getacceleration() + self.object:setvelocity({x=vel.x*-0.3, y=vel.y*-0.75, z=vel.z*-0.3}) + minetest.sound_play("rangedweapons_shellhit", {pos = self.lastpos, gain = 0.8}) + self.object:setacceleration({x=acc.x, y=acc.y, z=acc.z}) end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end + end + if self.timer > 1.69 then + minetest.sound_play("rangedweapons_bulletdrop", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end self.lastpos= {x = pos.x, y = pos.y, z = pos.z} end -minetest.register_entity("rangedweapons:pythonshot", rangedweapons_pythonshot ) +minetest.register_entity("rangedweapons:empty_shell_grenade", rangedweapons_empty_shell_grenade ) -minetest.register_tool("rangedweapons:taurus", { - description = "taurus(ranged damage 10|uses 375 bullets to shoot|velocity 100)", - wield_scale = {x=0.9,y=0.9,z=0.9}, - inventory_image = "rangedweapons_taurus.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:375 1") then - minetest.sound_play("rangedweapons_empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:375") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:taurusshot") - if obj then - minetest.sound_play("handgun_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 100, y=dir.y * 100, z=dir.z * 100}) - obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:taurus', - recipe = { - {'', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'default:mese_crystal', 'default:tree'}, - {'', '', 'dye:black'}, - } -}) - -local rangedweapons_taurusshot = { - physical = false, - timer = 0, - visual = "wielditem", - visual_size = {x=0.3, y=0.3}, - textures = {"rangedweapons:revolvershot"}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -rangedweapons_taurusshot.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.018 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:taurusshot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 10 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 10 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end +minetest.register_abm({ + nodenames = {"doors:hidden"}, + interval = 1, + chance = 1, + action = function(pos, node) + pos.y = pos.y-1 + if minetest.get_node(pos).name == "air" then + pos.y = pos.y+1 + node.name = "air" + minetest.set_node(pos, node) end end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} -end - -minetest.register_entity("rangedweapons:taurusshot", rangedweapons_taurusshot ) - - -minetest.register_tool("rangedweapons:colt45", { - description = "colt45(ranged damage 12|uses 375 bullets to shoot|velocity 80)", - wield_scale = {x=1.0,y=1.0,z=1.0}, - inventory_image = "rangedweapons_colt45.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:375 1") then - minetest.sound_play("rangedweapons_empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:375") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:colt45shot") - if obj then - minetest.sound_play("handgun_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 80, y=dir.y * 80, z=dir.z * 80}) - obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:colt45', - recipe = { - {'', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'default:mese_crystal', 'default:tree'}, - {'', '', 'dye:black'}, - } -}) - -local rangedweapons_colt45shot = { - physical = false, - timer = 0, - visual = "wielditem", - visual_size = {x=0.3, y=0.3}, - textures = {"rangedweapons:revolvershot"}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -rangedweapons_colt45shot.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.022 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:colt45shot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 12 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - else - local damage = 12 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} -end - -minetest.register_entity("rangedweapons:colt45shot", rangedweapons_colt45shot ) - - -minetest.register_craftitem("rangedweapons:375", { - stack_max= 500, - description = "375 bullet(ammunition for revolvers and magnums)", - wield_scale = {x=0.2,y=0.2,z=0.75}, - inventory_image = "rangedweapons_375.png", -}) - -minetest.register_craft({ - output = 'rangedweapons:375 20', - recipe = { - {'default:copper_ingot', '', ''}, - {'default:copper_ingot', '', ''}, - {'tnt:gunpowder', '', ''}, - } -}) - -minetest.register_tool("rangedweapons:leenfield", { - description = "le enfield(ranged damage 15|uses 10mm bullets to shoot|velocity 75|penetrates targets)", - wield_scale = {x=1.75,y=1.75,z=1.0}, - inventory_image = "rangedweapons_leenfield.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:10mm 1") then - minetest.sound_play("rangedweapons_empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:10mm") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:leenfieldshot") - if obj then - minetest.sound_play("rifle_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 75, y=dir.y * 75, z=dir.z * 75}) - obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:leenfield', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:tree', 'default:tree', 'default:tree'}, - {'default:steel_ingot', 'default:diamond', 'dye:red'}, - } -}) - -local rangedweapons_leenfieldshot = { - physical = false, - timer = 0, - visual = "wielditem", - visual_size = {x=0.3, y=0.3}, - textures = {"rangedweapons:rifleshot"}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -rangedweapons_leenfieldshot.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.04 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:leenfieldshot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 15 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - end - else - local damage = 15 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} -end - -minetest.register_entity("rangedweapons:leenfieldshot", rangedweapons_leenfieldshot ) - -minetest.register_tool("rangedweapons:mosinnagant", { - description = "mosin nagant(ranged damage 15|uses 10mm bullets to shoot|velocity 70|penetrates targets)", - wield_scale = {x=1.75,y=1.75,z=1.0}, - inventory_image = "rangedweapons_mosinnagant.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:10mm 1") then - minetest.sound_play("rangedweapons_empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:10mm") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:mosinnagantshot") - if obj then - minetest.sound_play("rifle_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 70, y=dir.y * 70, z=dir.z * 70}) - obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:mosinnagant', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:tree', 'default:tree', 'default:tree'}, - {'default:steel_ingot', 'default:diamond', ''}, - } -}) - -local rangedweapons_mosinnagantshot = { - physical = false, - timer = 0, - visual = "wielditem", - visual_size = {x=0.3, y=0.3}, - textures = {"rangedweapons:rifleshot"}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -rangedweapons_mosinnagantshot.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.04 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:mosinnagantshot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 15 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - end - else - local damage = 15 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} -end - -minetest.register_entity("rangedweapons:mosinnagantshot", rangedweapons_mosinnagantshot ) - - -minetest.register_tool("rangedweapons:scout", { - description = "scout(ranged damage 18|uses 10mm bullets to shoot|velocity 80|penetrates targets)", - wield_scale = {x=1.75,y=1.75,z=1.0}, - inventory_image = "rangedweapons_scout.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:10mm 1") then - minetest.sound_play("rangedweapons_empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:10mm") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:scoutshot") - if obj then - minetest.sound_play("rifle_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 80, y=dir.y * 80, z=dir.z * 80}) - obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:scout', - recipe = { - {'default:diamond', 'default:steel_ingot', ''}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'dye:cyan', 'default:diamond', 'default:steel_ingot'}, - - } -}) - -local rangedweapons_scoutshot = { - physical = false, - timer = 0, - visual = "wielditem", - visual_size = {x=0.3, y=0.3}, - textures = {"rangedweapons:rifleshot"}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -rangedweapons_scoutshot.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.04 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:scoutshot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 18 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - end - else - local damage = 18 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} -end - -minetest.register_entity("rangedweapons:scoutshot", rangedweapons_scoutshot ) - - -minetest.register_tool("rangedweapons:awp", { - description = "awp(ranged damage 20|uses 10mm bullets to shoot|velocity 90|penetrates targets)", - wield_scale = {x=1.75,y=1.75,z=1.0}, - inventory_image = "rangedweapons_awp.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:10mm 1") then - minetest.sound_play("rangedweapons_empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:10mm") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:awpshot") - if obj then - minetest.sound_play("rifle_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 90, y=dir.y * 90, z=dir.z * 90}) - obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:awp', - recipe = { - {'default:diamond', 'default:steel_ingot', 'default:diamond'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'dye:green', 'default:diamond', 'default:steel_ingot'}, - - } -}) - -local rangedweapons_awpshot = { - physical = false, - timer = 0, - visual = "wielditem", - visual_size = {x=0.3, y=0.3}, - textures = {"rangedweapons:revolvershot"}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -rangedweapons_awpshot.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.04 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:awpshot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 20 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - end - else - local damage = 20 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} -end - -minetest.register_entity("rangedweapons:awpshot", rangedweapons_awpshot ) - - - -minetest.register_craftitem("rangedweapons:10mm", { - stack_max= 500, - description = "10mm bullet(ammunition for rifles)", - wield_scale = {x=0.2,y=0.2,z=0.75}, - inventory_image = "rangedweapons_10mm.png", }) -minetest.register_craft({ - output = 'rangedweapons:10mm 25', - recipe = { - {'', 'default:copper_ingot', ''}, - {'default:copper_ingot', 'tnt:gunpowder', 'default:copper_ingot'}, - {'default:copper_ingot', 'tnt:gunpowder', 'default:copper_ingot'}, - } -}) - - -minetest.register_tool("rangedweapons:electrogun", { - description = "electrogun(ranged damage 4|uses energy charges to shoot|velocity 2|shoots slow moving electro balls that contonously hurts and penetrates targets)", - wield_scale = {x=3.50,y=3.5,z=2.0}, - inventory_image = "rangedweapons_electrogun.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:energycharge 1") then - minetest.sound_play("rangedweapons_empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:energycharge") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:electrogunshot") - if obj then - minetest.sound_play("rifle_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 2, y=dir.y * 2, z=dir.z * 2}) - obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:electrogun', - recipe = { - {'default:goldblock', 'moreores:mithril_block', 'default:goldblock'}, - {'default:diamondblock', 'default:diamondblock', 'default:steelblock'}, - {'default:mese', 'default:steelblock', 'default:mese'}, - } -}) - -local rangedweapons_electrogunshot = { - physical = false, - timer = 0, - visual = "sprite", - visual_size = {x=3, y=3}, - textures = {"rangedweapons_electroball.png"}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -rangedweapons_electrogunshot.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 1.5 then - local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 3) - for k, obj in pairs(objs) do - if obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:electrogunshot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 4 - obj:punch(self.object, 0.1, { - full_punch_interval = 0.1, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - end - else - local damage = 4 - obj:punch(self.object, 0.1, { - full_punch_interval = 0.1, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - self.object:remove() - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} -end - -minetest.register_entity("rangedweapons:electrogunshot", rangedweapons_electrogunshot ) - - -minetest.register_tool("rangedweapons:laser", { - description = "laser rifle(ranged damage 15|uses energy charges to shoot|velocity 30|penetrates targets and blocks)", - wield_scale = {x=2.0,y=2.0,z=2.0}, - inventory_image = "rangedweapons_laser.png", - on_use = function(itemstack, user, pointed_thing) - local inv = user:get_inventory() - if not inv:contains_item("main", "rangedweapons:energycharge 1") then - minetest.sound_play("rangedweapons_empty", {object=user}) - return itemstack - end - if not minetest.setting_getbool("creative_mode") then - inv:remove_item("main", "rangedweapons:energycharge") - end - local pos = user:getpos() - local dir = user:get_look_dir() - local yaw = user:get_look_yaw() - if pos and dir and yaw then - pos.y = pos.y + 1.6 - local obj = minetest.add_entity(pos, "rangedweapons:lasershot") - if obj then - minetest.sound_play("rifle_shoot", {object=obj}) - obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 30}) - obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) - obj:setyaw(yaw + math.pi) - local ent = obj:get_luaentity() - if ent then - ent.player = ent.player or user - end - end - end - return itemstack - end, -}) -minetest.register_craft({ - output = 'rangedweapons:laser', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:goldblock'}, - {'moreores:mithril_block', 'default:diamondblock', 'default:goldblock'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:gold_ingot'}, - } -}) - -local rangedweapons_lasershot = { - physical = false, - timer = 0, - visual = "wielditem", - visual_size = {x=1, y=1}, - textures = {"rangedweapons:lasershot"}, - lastpos= {}, - collisionbox = {0, 0, 0, 0, 0, 0}, -} -rangedweapons_lasershot.on_step = function(self, dtime) - self.timer = self.timer + dtime - local pos = self.object:getpos() - local node = minetest.get_node(pos) - - if self.timer > 0.1 then - 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 obj:get_luaentity() ~= nil then - if obj:get_luaentity().name ~= "rangedweapons:lasershot" and obj:get_luaentity().name ~= "__builtin:item" then - local damage = 15 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - end - else - local damage = 15 - obj:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups= {fleshy = damage}, - }, nil) - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.9}) - end - end - end - - if self.lastpos.x ~= nil then - if minetest.registered_nodes[node.name].walkable then - if not minetest.setting_getbool("creative_mode") then - minetest.add_item(self.lastpos, "") - end - minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) - end - end - self.lastpos= {x = pos.x, y = pos.y, z = pos.z} -end - -minetest.register_entity("rangedweapons:lasershot", rangedweapons_lasershot ) - - -minetest.register_craftitem("rangedweapons:energycharge", { - stack_max= 500, - description = "energy charge(ammunition for special guns)", - wield_scale = {x=0.2,y=0.2,z=0.75}, - inventory_image = "rangedweapons_energycharge.png", -}) - - -minetest.register_craft({ - output = 'rangedweapons:energycharge 20', - recipe = { - {'', 'default:gold_ingot', ''}, - {'', 'moreores:mithril_ingot', ''}, - {'', 'default:diamond', ''}, - } -}) diff --git a/jackhammer.lua b/jackhammer.lua new file mode 100644 index 0000000..0814847 --- /dev/null +++ b/jackhammer.lua @@ -0,0 +1,218 @@ +minetest.register_craft({ + output = 'rangedweapons:jackhammer', + recipe = { + {'', 'rangedweapons:gunsteel_ingot', 'rangedweapons:gunsteel_ingot'}, + {'default:mese', 'default:steelblock', 'default:diamondblock'}, + {'', 'default:mese', 'default:diamondblock'}, + } +}) + + minetest.register_craftitem("rangedweapons:jackhammer", { + stack_max= 1, + wield_scale = {x=2.6,y=2.6,z=1.8}, + description = "" ..core.colorize("#35cdff","Jackhammer\n") ..core.colorize("#FFFFFF", "Ranged damage: 5-12 X 15\n") ..core.colorize("#FFFFFF", "Accuracy: 70%\n") ..core.colorize("#FFFFFF", "Mob knockback: 3\n")..core.colorize("#FFFFFF", "Critical chance: 5%\n") ..core.colorize("#FFFFFF", "Critical damage: 13-25 X 15\n") ..core.colorize("#FFFFFF", "Ammunition: 12 gauge shells\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.35\n") ..core.colorize("#FFFFFF", "Gun type: Auto-shotgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 25"), + range = 0, + inventory_image = "rangedweapons_jackhammer.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.35 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:jackhammer" then + if not inv:contains_item("main", "rangedweapons:shell") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:jackhammer" then + inv:remove_item("main", "rangedweapons:shell") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + if obj then + minetest.sound_play("rangedweapons_shotgun_shot", {object=obj}) + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:jackhammershot") + obj:setvelocity({x=dir.x * math.random(23,27), y=dir.y * math.random(23,27), z=dir.z * math.random(23,27)}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell_shotgun") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.5, + size = 6, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_jackhammershot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.1, y=0.1}, + textures = {"rangedweapons_buckball.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_jackhammershot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.17 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:jackhammershot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 5 then + local damage = math.random(13,25) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=6}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(5,12) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 3}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 5 then + local damage = math.random(13,25) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(5,12) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_wood_a" or + node.name == "doors:door_wood_b" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:jackhammershot", rangedweapons_jackhammershot ) \ No newline at end of file diff --git a/javelin.lua b/javelin.lua new file mode 100644 index 0000000..dbba345 --- /dev/null +++ b/javelin.lua @@ -0,0 +1,147 @@ + + + +minetest.register_craftitem("rangedweapons:thrown_javelin", { + wield_scale = {x=2.0,y=2.0,z=1.0}, + inventory_image = "rangedweapons_thrown_javelin.png", +}) + +minetest.register_craftitem("rangedweapons:javelin", { + description = "" ..core.colorize("#35cdff","Javelin\n") ..core.colorize("#FFFFFF", "Mele damage: 9\n") ..core.colorize("#FFFFFF", "Mele range: 5\n")..core.colorize("#FFFFFF", "Full punch interval: 1.25\n") ..core.colorize("#FFFFFF", "Ranged damage: 4-16\n") ..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 10\n") ..core.colorize("#FFFFFF", "Critical chance: 15%\n") ..core.colorize("#FFFFFF", "Critical damage: 25-45\n") ..core.colorize("#FFFFFF", "javelin survival rate: 95%\n")..core.colorize("#FFFFFF", "Projectile gravity: 4\n") ..core.colorize("#FFFFFF", "Projectile velocity: 20\n")..core.colorize("#ffc000", "Right-click to throw, Left-click to stab") , + wield_scale = {x=2.0,y=2.0,z=1.0}, + range = 5, + stack_max= 10, + inventory_image = "rangedweapons_javelin.png", + on_secondary_use = function(itemstack, user, pointed_thing) + if not minetest.setting_getbool("creative_mode") then itemstack:take_item() + end + if pointed_thing.type ~= "nothing" then + local pointed = minetest.get_pointed_thing_position(pointed_thing) + if vector.distance(user:getpos(), pointed) < 8 then + return itemstack + end + end + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir then + pos.y = pos.y + 1.5 + local obj = minetest.add_entity(pos, "rangedweapons:javelin") + if obj then + minetest.sound_play("rangedweapons_throw", {object=obj}) + obj:setvelocity({x=dir.x * 20, y=dir.y * 20, z=dir.z * 20}) + obj:setacceleration({x=dir.x * -1, y=-4, z=dir.z * -1}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + end + end + end + return itemstack + end, + tool_capabilities = { + full_punch_interval = 1.25, + max_drop_level = 0, + groupcaps = { + stabby = {times={[1]=0.25, [2]=0.50, [3]=0.75}, uses=0, maxlevel=1}, + }, + damage_groups = {fleshy=9,knockback=10}, + } +}) + +local rangedweapons_javelin = { + physical = false, + timer = 0, + visual = "wielditem", + visual_size = {x=0.5, y=0.5,}, + textures = {"rangedweapons:thrown_javelin"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_javelin.on_step = function(self, dtime) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.15 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:javelin" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 15 then + local damage = math.random(25,45) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=20}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + if not minetest.setting_getbool("creative_mode") and math.random(1, 100) <= 95 then + minetest.add_item(self.lastpos, "rangedweapons:javelin") + end + else + local damage = math.random(4,16) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=10}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + if not minetest.setting_getbool("creative_mode") and math.random(1, 100) <= 95 then + minetest.add_item(self.lastpos, "rangedweapons:javelin") + end + end + end + else + + if math.random(1, 100) <= 15 then + local damage = math.random(25,45) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + if not minetest.setting_getbool("creative_mode") and math.random(1, 100) <= 95 then + minetest.add_item(self.lastpos, "rangedweapons:javelin") + end + else + local damage = math.random(4,16) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + if not minetest.setting_getbool("creative_mode") and math.random(1, 100) <= 95 then + minetest.add_item(self.lastpos, "rangedweapons:javelin") + end + end + end +end +end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") and math.random(1, 100) <= 95 then + minetest.add_item(self.lastpos, "rangedweapons:javelin") + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end + +minetest.register_entity("rangedweapons:javelin", rangedweapons_javelin) + +minetest.register_craft({ + output = 'rangedweapons:javelin 1', + recipe = { + {'default:diamond', 'default:steel_ingot', ''}, + {'default:steel_ingot', '', 'group:stick'}, + {'', '', 'group:stick'}, + } +}) + + diff --git a/kriss_sv.lua b/kriss_sv.lua new file mode 100644 index 0000000..68df21a --- /dev/null +++ b/kriss_sv.lua @@ -0,0 +1,177 @@ +minetest.register_craft({ + output = 'rangedweapons:kriss_sv', + recipe = { + {'rangedweapons:plastic_sheet', 'rangedweapons:plastic_sheet', 'rangedweapons:plastic_sheet'}, + {'default:gold_ingot', 'default:mese_crystal', 'rangedweapons:plastic_sheet'}, + {'rangedweapons:plastic_sheet', 'default:gold_ingot', ''}, + } +}) + + minetest.register_craftitem("rangedweapons:kriss_sv", { + stack_max= 1, + wield_scale = {x=1.75,y=1.75,z=1.15}, + description = "" ..core.colorize("#35cdff","Kriss Super V\n") ..core.colorize("#FFFFFF", "Ranged damage: 2-4\n") ..core.colorize("#FFFFFF", "accuracy: 60%\n") ..core.colorize("#FFFFFF", "Mob knockback: 0\n") ..core.colorize("#FFFFFF", "Critical chance: 5%\n") ..core.colorize("#FFFFFF", "Critical damage: 3-7\n") ..core.colorize("#FFFFFF", "Ammunition: 9mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.06\n") ..core.colorize("#FFFFFF", "Gun type: machine pistol\n") ..core.colorize("#FFFFFF", "Bullet velocity: 20"), + range = 0, + inventory_image = "rangedweapons_kriss_sv.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.06 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:kriss_sv" then + if not inv:contains_item("main", "rangedweapons:9mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:kriss_sv" then + inv:remove_item("main", "rangedweapons:9mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:kriss_svshot") + if obj then + minetest.sound_play("rangedweapons_machine_pistol", {object=obj}) + obj:setvelocity({x=dir.x * 20, y=dir.y * 20, z=dir.z * 20}) + obj:setacceleration({x=dir.x * math.random(-4.0,4.0), y=math.random(-3.8,3.8), z=dir.z * math.random(-4.0,4.0)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.30, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_kriss_svshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_kriss_svshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.17 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:kriss_svshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 5 then + local damage = math.random(3,7) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=0}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,4) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 0}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 5 then + local damage = math.random(3,7) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,4) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:kriss_svshot", rangedweapons_kriss_svshot ) \ No newline at end of file diff --git a/laser_blaster.lua b/laser_blaster.lua new file mode 100644 index 0000000..54e1f53 --- /dev/null +++ b/laser_blaster.lua @@ -0,0 +1,153 @@ +minetest.register_craft({ + output = 'rangedweapons:laser_blaster', + recipe = { + {'default:steel_ingot', 'rangedweapons:gun_power_core', 'default:steel_ingot'}, + {'rangedweapons:gunsteel_ingot', 'rangedweapons:gunsteel_ingot', 'rangedweapons:gunsteel_ingot'}, + {'', 'default:mese_crystal_fragment', 'default:steel_ingot'}, + } +}) + + minetest.register_craftitem("rangedweapons:laser_blaster", { + stack_max= 1, + wield_scale = {x=1.15,y=1.15,z=1.15}, + description = "" ..core.colorize("#35cdff","Laser blaster\n") ..core.colorize("#FFFFFF", "Ranged damage: 12-18\n") ..core.colorize("#FFFFFF", "accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 0\n") ..core.colorize("#FFFFFF", "Critical chance: 10%\n") ..core.colorize("#FFFFFF", "Critical damage: 28-40\n") ..core.colorize("#FFFFFF", "Power usage: 1\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.35\n") ..core.colorize("#FFFFFF", "Gun type: power pistol\n") ..core.colorize("#FFFFFF", "Bullet velocity: 15"), + range = 0, + inventory_image = "rangedweapons_laser_blaster.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.35 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:laser_blaster" then + if not inv:contains_item("main", "rangedweapons:power_particle") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:laser_blaster" then + inv:remove_item("main", "rangedweapons:power_particle") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:laser_blastershot") + if obj then + minetest.sound_play("rangedweapons_laser", {object=obj}) + obj:setvelocity({x=dir.x * 15, y=dir.y * 15, z=dir.z * 15}) + obj:setacceleration({x=dir.x * math.random(0,0), y=math.random(0,0), z=dir.z * math.random(0,0)}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_laser_blastershot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_laser_blastershot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.21 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:laser_blastershot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 10 then + local damage = math.random(28,40) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=0}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(12,18) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 0}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 10 then + local damage = math.random(28,40) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(12,18) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.2, + size = 7, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_ray_blue.png", + glow = 30, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:laser_blastershot", rangedweapons_laser_blastershot ) \ No newline at end of file diff --git a/laser_rifle.lua b/laser_rifle.lua new file mode 100644 index 0000000..b7ce16a --- /dev/null +++ b/laser_rifle.lua @@ -0,0 +1,153 @@ +minetest.register_craft({ + output = 'rangedweapons:laser_rifle', + recipe = { + {'rangedweapons:ultra_gunsteel_ingot', 'rangedweapons:gun_power_core', 'rangedweapons:ultra_gunsteel_ingot'}, + {'rangedweapons:gun_power_core', 'rangedweapons:ultra_gunsteel_ingot', 'default:gold_ingot'}, + {'default:gold_ingot', 'default:mese', 'rangedweapons:ultra_gunsteel_ingot'}, + } +}) + + minetest.register_craftitem("rangedweapons:laser_rifle", { + stack_max= 1, + wield_scale = {x=1.9,y=1.9,z=2.5}, + description = "" ..core.colorize("#35cdff","Laser rifle\n") ..core.colorize("#FFFFFF", "Ranged damage: 10-20\n") ..core.colorize("#FFFFFF", "accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 0\n") ..core.colorize("#FFFFFF", "Critical chance: 8%\n") ..core.colorize("#FFFFFF", "Critical damage: 22-46\n") ..core.colorize("#FFFFFF", "Power usage: 2\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.1\n") ..core.colorize("#FFFFFF", "Gun type: power assault rifle\n") ..core.colorize("#FFFFFF", "Bullet velocity: 20"), + range = 0, + inventory_image = "rangedweapons_laser_rifle.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.1 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:laser_rifle" then + if not inv:contains_item("main", "rangedweapons:power_particle 2") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:laser_rifle" then + inv:remove_item("main", "rangedweapons:power_particle 2") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:laser_rifleshot") + if obj then + minetest.sound_play("rangedweapons_laser", {object=obj}) + obj:setvelocity({x=dir.x * 20, y=dir.y * 20, z=dir.z * 20}) + obj:setacceleration({x=dir.x * math.random(0,0), y=math.random(0,0), z=dir.z * math.random(0,0)}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_laser_rifleshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_laser_rifleshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.175 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:laser_rifleshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 8 then + local damage = math.random(22,46) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=0}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(10,20) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 0}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 8 then + local damage = math.random(22,46) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(12,18) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.2, + size = 7, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_ray_red.png", + glow = 30, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:laser_rifleshot", rangedweapons_laser_rifleshot ) \ No newline at end of file diff --git a/laser_shotgun.lua b/laser_shotgun.lua new file mode 100644 index 0000000..c90e60b --- /dev/null +++ b/laser_shotgun.lua @@ -0,0 +1,178 @@ +minetest.register_craft({ + output = 'rangedweapons:laser_shotgun', + recipe = { + {'rangedweapons:ultra_gunsteel_ingot', 'rangedweapons:gun_power_core', 'rangedweapons:ultra_gunsteel_ingot'}, + {'rangedweapons:gun_power_core', 'rangedweapons:gun_power_core', 'rangedweapons:ultra_gunsteel_ingot'}, + {'', 'rangedweapons:ultra_gunsteel_ingot', 'rangedweapons:ultra_gunsteel_ingot'}, + } +}) + + minetest.register_craftitem("rangedweapons:laser_shotgun", { + stack_max= 1, + wield_scale = {x=2.0,y=2.0,z=1.75}, + description = "" ..core.colorize("#35cdff","Laser shotgun\n") ..core.colorize("#FFFFFF", "Ranged damage: 15-26 X 5\n") ..core.colorize("#FFFFFF", "accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 0\n") ..core.colorize("#FFFFFF", "Critical chance: 12%\n") ..core.colorize("#FFFFFF", "Critical damage: 31-59 X 5\n") ..core.colorize("#FFFFFF", "Power usage: 7\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.75\n") ..core.colorize("#FFFFFF", "Gun type: power shotgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 15"), + range = 0, + inventory_image = "rangedweapons_laser_shotgun.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.75 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:laser_shotgun" then + if not inv:contains_item("main", "rangedweapons:power_particle 7") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:laser_shotgun" then + inv:remove_item("main", "rangedweapons:power_particle 7") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:laser_shotgunshot") + if obj then + minetest.sound_play("rangedweapons_laser", {object=obj}) + obj:setvelocity({x=dir.x * 15, y=dir.y * 15, z=dir.z * 15}) + obj:setacceleration({x=dir.x * math.random(0,0), y=math.random(0,0), z=dir.z * math.random(0,0)}) + obj:setyaw(yaw + math.pi) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:laser_shotgunshot") + minetest.sound_play("rangedweapons_laser", {object=obj}) + obj:setvelocity({x=dir.x * 15, y=dir.y * 15, z=dir.z * 18}) + obj:setacceleration({x=dir.x * math.random(0,0), y=math.random(0,0), z=dir.z * math.random(0,0)}) + obj:setyaw(yaw + math.pi) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:laser_shotgunshot") + minetest.sound_play("rangedweapons_laser", {object=obj}) + obj:setvelocity({x=dir.x * 15, y=dir.y * 15, z=dir.z * 21}) + obj:setacceleration({x=dir.x * math.random(0,0), y=math.random(0,0), z=dir.z * math.random(0,0)}) + obj:setyaw(yaw + math.pi) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:laser_shotgunshot") + minetest.sound_play("rangedweapons_laser", {object=obj}) + obj:setvelocity({x=dir.x * 18, y=dir.y * 15, z=dir.z * 15}) + obj:setacceleration({x=dir.x * math.random(0,0), y=math.random(0,0), z=dir.z * math.random(0,0)}) + obj:setyaw(yaw + math.pi) +------------------------------------------------------------ + local obj = minetest.add_entity(pos, "rangedweapons:laser_shotgunshot") + minetest.sound_play("rangedweapons_laser", {object=obj}) + obj:setvelocity({x=dir.x * 21, y=dir.y * 15, z=dir.z * 15}) + obj:setacceleration({x=dir.x * math.random(0,0), y=math.random(0,0), z=dir.z * math.random(0,0)}) + obj:setyaw(yaw + math.pi) + + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_laser_shotgunshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_laser_shotgunshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.22 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:laser_shotgunshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 12 then + local damage = math.random(31,59) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=0}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(15,26) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 0}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 12 then + local damage = math.random(31,59) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(15,26) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.2, + size = 7, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_ray_green.png", + glow = 30, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:laser_shotgunshot", rangedweapons_laser_shotgunshot ) \ No newline at end of file diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..b9242b1 --- /dev/null +++ b/license.txt @@ -0,0 +1 @@ +cc-by-sa 3.0 \ No newline at end of file diff --git a/luger.lua b/luger.lua new file mode 100644 index 0000000..1e53d64 --- /dev/null +++ b/luger.lua @@ -0,0 +1,192 @@ + + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.75 then + for _, player in pairs(minetest.get_connected_players()) do + if player:get_wielded_item():get_name() == "rangedweapons:luger_rld" then + player:set_wielded_item("rangedweapons:luger") + minetest.sound_play("", {player}) + + end + + end + end + end) + + +minetest.register_craftitem("rangedweapons:luger_rld", { + stack_max= 1, + wield_scale = {x=0.9,y=0.9,z=1.0}, + description = "***RELOADING LUGER P08***", + range = 0, + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_luger_rld.png", +}) + + +minetest.register_tool("rangedweapons:luger", { + description = "" ..core.colorize("#35cdff","Luger P08\n") ..core.colorize("#FFFFFF", "Ranged damage: 3-6\n")..core.colorize("#FFFFFF", "Accuracy: 85%\n") ..core.colorize("#FFFFFF", "Mob knockback: 3\n") ..core.colorize("#FFFFFF", "Critical chance: 10%\n") ..core.colorize("#FFFFFF", "Critical damage: 7-11\n") ..core.colorize("#FFFFFF", "Ammunition: 9mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.75\n") ..core.colorize("#FFFFFF", "Gun type: Handgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 20"), + range = 0, + wield_scale = {x=0.9,y=0.9,z=1.0}, + inventory_image = "rangedweapons_luger.png", + on_use = function(itemstack, user, pointed_thing) + timer = 0 + local inv = user:get_inventory() + if not inv:contains_item("main", "rangedweapons:9mm 1") then + minetest.sound_play("rangedweapons_empty", {object=user}) + return itemstack + end + if not minetest.setting_getbool("creative_mode") then + inv:remove_item("main", "rangedweapons:9mm") + end + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:lugershot") + if obj then + minetest.sound_play("rangedweapons_makarov", {object=obj}) + obj:setvelocity({x=dir.x * 20, y=dir.y * 20, z=dir.z * 20}) + obj:setacceleration({x=dir.x * math.random(-1.5,1.5), y=math.random(-1.5,1.5), z=dir.z * math.random(-1.5,1.5)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.75, + size = 5, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:luger_rld" + end + end + end + return itemstack + end, +}) +minetest.register_craft({ + output = 'rangedweapons:luger', + recipe = { + {'', 'default:steel_ingot', 'default:steel_ingot'}, + {'', '', 'default:tree'}, + {'', '', ''}, + } +}) + +local rangedweapons_lugershot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_lugershot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.165 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:lugershot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 10 then + local damage = math.random(7,11) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 6}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(3,6) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 3}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 10 then + local damage = math.random(7,11) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(3,6) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:lugershot", rangedweapons_lugershot ) + + diff --git a/m16.lua b/m16.lua new file mode 100644 index 0000000..3691453 --- /dev/null +++ b/m16.lua @@ -0,0 +1,177 @@ +minetest.register_craft({ + output = 'rangedweapons:m16', + recipe = { + {'default:diamond', 'default:steelblock', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:diamond', 'default:steel_ingot'}, + {'default:steel_ingot', '', 'default:steel_ingot'}, + } +}) + + minetest.register_craftitem("rangedweapons:m16", { + stack_max= 1, + wield_scale = {x=1.75,y=1.75,z=1.3}, + description = "" ..core.colorize("#35cdff","Colt M16\n") ..core.colorize("#FFFFFF", "Ranged damage: 4-10\n") ..core.colorize("#FFFFFF", "Accuracy: 80%\n") ..core.colorize("#FFFFFF", "Mob knockback: 3\n")..core.colorize("#FFFFFF", "Critical chance: 9%\n") ..core.colorize("#FFFFFF", "Critical damage: 9-19\n") ..core.colorize("#FFFFFF", "Ammunition: 5.56mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.125\n") ..core.colorize("#FFFFFF", "Gun type: Assault rifle\n") ..core.colorize("#FFFFFF", "Bullet velocity: 35"), + range = 0, + inventory_image = "rangedweapons_m16.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.125 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:m16" then + if not inv:contains_item("main", "rangedweapons:556mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:m16" then + inv:remove_item("main", "rangedweapons:556mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:m16shot") + if obj then + minetest.sound_play("rangedweapons_smg", {object=obj}) + obj:setvelocity({x=dir.x * 35, y=dir.y * 35, z=dir.z * 35}) + obj:setacceleration({x=dir.x * math.random(-2.0,2.0), y=math.random(-2.0,2.0), z=dir.z * math.random(-2.0,2.0)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.5, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_m16shot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_m16shot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.085 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:m16shot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 9 then + local damage = math.random(9,19) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=6}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(4,10) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 3}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 9 then + local damage = math.random(9,19) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(4,10) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:m16shot", rangedweapons_m16shot ) \ No newline at end of file diff --git a/m200.lua b/m200.lua new file mode 100644 index 0000000..53e78ac --- /dev/null +++ b/m200.lua @@ -0,0 +1,219 @@ +minetest.register_craft({ + output = 'rangedweapons:m200_uld', + recipe = { + {'default:diamondblock', 'default:steel_ingot', 'default:diamondblock'}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:diamond', 'default:steel_ingot'}, + } +}) + +minetest.register_craftitem("rangedweapons:m200_uld", { + stack_max= 1, + wield_scale = {x=2.1,y=2.1,z=1.4}, + range = 0, + description = "" ..core.colorize("#35cdff","M200 Intervention \n") ..core.colorize("#FFFFFF", "Ranged damage: 150/sec of bullet lifetime\n") ..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 20\n") ..core.colorize("#FFFFFF", "Critical chance: 50%\n") ..core.colorize("#FFFFFF", "Critical damage: 400/sec of bullet lifetime\n") ..core.colorize("#FFFFFF", "Ammunition: 308.Winchester rounds\n") ..core.colorize("#FFFFFF", "Reload time: 1.75\n") ..core.colorize("#be0d00", "The gun is NOT loaded! (Right-click to load)\n")..core.colorize("#FFFFFF", "Gun type: Rifle\n") ..core.colorize("#FFFFFF", "Bullet velocity: 64"), + inventory_image = "rangedweapons_m200.png", + on_use = function(user) + minetest.sound_play("rangedweapons_empty", {user}) + end, +}) + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.001 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if player:get_wielded_item():get_name() == "rangedweapons:m200_uld" + and inv:contains_item("main", "rangedweapons:308winchester")then + if controls.RMB then + inv:remove_item("main", "rangedweapons:308winchester") + player:set_wielded_item("rangedweapons:m200_rld") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + timer = 0 + minetest.sound_play("rangedweapons_reload_a", {player}) + +end + end + + if timer >= 1.75 and + player:get_wielded_item():get_name() == "rangedweapons:m200_rld" then + player:set_wielded_item("rangedweapons:m200") + timer = 0 + minetest.sound_play("rangedweapons_reload_b", {player}) + + + + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:m200_rld", { + stack_max= 1, + range = 0, + wield_scale = {x=2.1,y=2.1,z=1.4}, + description = "**RELOADING M200 INTERVENTION**", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_m200_rld.png", +}) + + +minetest.register_tool("rangedweapons:m200", { + description = "" ..core.colorize("#35cdff","M200 Intervention \n") ..core.colorize("#FFFFFF", "Ranged damage: 150/sec of bullet lifetime\n")..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 20\n") ..core.colorize("#FFFFFF", "Critical chance: 50%\n") ..core.colorize("#FFFFFF", "Critical damage: 400/sec of bullet lifetime\n") ..core.colorize("#FFFFFF", "Ammunition: 308.Winchester rounds\n") ..core.colorize("#FFFFFF", "Reload time: 1.75\n") ..core.colorize("#27a600", "The gun is loaded!\n")..core.colorize("#FFFFFF", "Gun type: Rifle\n") ..core.colorize("#FFFFFF", "Bullet velocity: 64"), + range = 0, + groups = {not_in_creative_inventory = 1}, + wield_scale = {x=2.1,y=2.1,z=1.4}, + inventory_image = "rangedweapons_m200.png", + on_use = function(itemstack, user, pointed_thing) + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:m200shot") + if obj then + minetest.sound_play("rangedweapons_rifle_a", {object=obj}) + obj:setvelocity({x=dir.x * 64, y=dir.y * 64, z=dir.z * 64}) + obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 1.5, + size = 8, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:m200_uld" + end + end + end + return itemstack + end, +}) + +local rangedweapons_m200shot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_m200shot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.05 then + local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 1.6) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:m200shot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 50 then + local damage = 400 * self.timer + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 40}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = 150 * self.timer + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 20}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 50 then + local damage = 400 * self.timer + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = 150 * self.timer + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:m200shot", rangedweapons_m200shot ) + + diff --git a/m60.lua b/m60.lua new file mode 100644 index 0000000..398dac7 --- /dev/null +++ b/m60.lua @@ -0,0 +1,176 @@ +minetest.register_craft({ + output = 'rangedweapons:m60', + recipe = { + {'default:diamond', 'default:steel_ingot', 'default:mese'}, + {'default:steel_ingot', 'default:steelblock', 'default:steelblock'}, + {'dye:black', 'default:diamond', 'default:steel_ingot'}, + } +}) + + minetest.register_craftitem("rangedweapons:m60", { + stack_max= 1, + wield_scale = {x=2.5,y=2.5,z=1.5}, + description = "" ..core.colorize("#35cdff","M60\n") ..core.colorize("#FFFFFF", "Ranged damage: 2-6\n") ..core.colorize("#FFFFFF", "Accuracy: 55%\n") ..core.colorize("#FFFFFF", "Mob knockback: 2\n") ..core.colorize("#FFFFFF", "Critical chance: 8%\n") ..core.colorize("#FFFFFF", "Critical damage: 5-10\n") ..core.colorize("#FFFFFF", "Ammunition: 7.26mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.04\n") ..core.colorize("#FFFFFF", "Gun type: heavy machinegun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 30"), + range = 0, + inventory_image = "rangedweapons_m60.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.04 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:m60" then + if not inv:contains_item("main", "rangedweapons:726mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:m60" then + inv:remove_item("main", "rangedweapons:726mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:m60shot") + if obj then + minetest.sound_play("rangedweapons_machinegun", {object=obj}) + obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 30}) + obj:setacceleration({x=dir.x * math.random(-4.5,4.5), y=math.random(-4.5,4.5), z=dir.z * math.random(-4.5,4.5)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.25, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_m60shot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_m60shot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.11 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:m60shot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 8 then + local damage = math.random(5,10) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=4}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,6) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 2}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 8 then + local damage = math.random(5,10) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,6) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:m60shot", rangedweapons_m60shot ) \ No newline at end of file diff --git a/m79.lua b/m79.lua new file mode 100644 index 0000000..67e873c --- /dev/null +++ b/m79.lua @@ -0,0 +1,120 @@ +minetest.register_craft({ + output = 'rangedweapons:m79_uld', + recipe = { + {'default:steel_ingot', '', 'default:mese_crystal'}, + {'default:steelblock', 'default:steelblock', 'default:tree'}, + {'default:tree', 'default:tree', 'default:tree'}, + } +}) + +minetest.register_craftitem("rangedweapons:m79_uld", { + stack_max= 1, + wield_scale = {x=2.0,y=2.0,z=2.5}, + range = 0, + description = "" ..core.colorize("#35cdff","M79\n") ..core.colorize("#FFFFFF", "Explosion radius: 2\n") ..core.colorize("#FFFFFF", "Bullet gravitational pull: 5\n") ..core.colorize("#FFFFFF", "Ammunition: 40mm grenades\n") ..core.colorize("#FFFFFF", "Reload time: 1.25\n") ..core.colorize("#be0d00", "The gun is NOT loaded! (Right-click to load)\n")..core.colorize("#FFFFFF", "Gun type:Grenade launcher\n") ..core.colorize("#FFFFFF", "Bullet velocity: 15"), + inventory_image = "rangedweapons_m79.png", + on_use = function(user) + minetest.sound_play("rangedweapons_empty", {user}) + end, +}) + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.001 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if player:get_wielded_item():get_name() == "rangedweapons:m79_uld" + and inv:contains_item("main", "rangedweapons:40mm")then + if controls.RMB then + inv:remove_item("main", "rangedweapons:40mm") + player:set_wielded_item("rangedweapons:m79_rld") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell_grenade") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + timer = 0 + minetest.sound_play("rangedweapons_reload_a", {player}) + +end + end + + if timer >= 1.25 and + player:get_wielded_item():get_name() == "rangedweapons:m79_rld" then + player:set_wielded_item("rangedweapons:m79") + timer = 0 + minetest.sound_play("rangedweapons_reload_b", {player}) + + + + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:m79_rld", { + stack_max= 1, + range = 0, + wield_scale = {x=2.0,y=2.0,z=2.5}, + description = "**RELOADING M79**", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_m79_rld.png", +}) + + +minetest.register_tool("rangedweapons:m79", { + description = "" ..core.colorize("#35cdff","M79\n") ..core.colorize("#FFFFFF", "Explosion radius: 2\n") ..core.colorize("#FFFFFF", "Bullet gravitational pull: 5\n") ..core.colorize("#FFFFFF", "Ammunition: 40mm grenades\n") ..core.colorize("#FFFFFF", "Reload time: 1.25\n") ..core.colorize("#27a600", "The gun is loaded!\n")..core.colorize("#FFFFFF", "Gun type:Grenade launcher\n") ..core.colorize("#FFFFFF", "Bullet velocity: 15"), + range = 0, + groups = {not_in_creative_inventory = 1}, + wield_scale = {x=2.0,y=2.0,z=2.5}, + inventory_image = "rangedweapons_m79.png", + on_use = function(itemstack, user, pointed_thing) + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:he_grenade") + if obj then + minetest.sound_play("rangedweapons_rocket", {object=obj}) + obj:setvelocity({x=dir.x * 15, y=dir.y * 15, z=dir.z * 15}) + obj:setacceleration({x=dir.x * -1, y=-5, z=dir.z * -1}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 1.5, + size = 10, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:m79_uld" + end + end + end + return itemstack + end, +}) + + + + diff --git a/makarov.lua b/makarov.lua new file mode 100644 index 0000000..bffc696 --- /dev/null +++ b/makarov.lua @@ -0,0 +1,192 @@ + + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.5 then + for _, player in pairs(minetest.get_connected_players()) do + if player:get_wielded_item():get_name() == "rangedweapons:makarov_rld" then + player:set_wielded_item("rangedweapons:makarov") + minetest.sound_play("", {player}) + + end + + end + end + end) + + +minetest.register_craftitem("rangedweapons:makarov_rld", { + stack_max= 1, + wield_scale = {x=0.9,y=0.9,z=1.0}, + description = "***RELOADING MAKAROV PISTOL***", + range = 0, + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_makarov_rld.png", +}) + + +minetest.register_tool("rangedweapons:makarov", { + description = "" ..core.colorize("#35cdff","Makarov pistol\n") ..core.colorize("#FFFFFF", "Ranged damage: 4-6\n")..core.colorize("#FFFFFF", "Accuracy: 90%\n") ..core.colorize("#FFFFFF", "Mob knockback: 3\n") ..core.colorize("#FFFFFF", "Critical chance: 12%\n") ..core.colorize("#FFFFFF", "Critical damage: 8-12\n") ..core.colorize("#FFFFFF", "Ammunition: 9mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.5\n") ..core.colorize("#FFFFFF", "Gun type: Handgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 20"), + range = 0, + wield_scale = {x=0.9,y=0.9,z=1.0}, + inventory_image = "rangedweapons_makarov.png", + on_use = function(itemstack, user, pointed_thing) + timer = 0 + local inv = user:get_inventory() + if not inv:contains_item("main", "rangedweapons:9mm 1") then + minetest.sound_play("rangedweapons_empty", {object=user}) + return itemstack + end + if not minetest.setting_getbool("creative_mode") then + inv:remove_item("main", "rangedweapons:9mm") + end + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:makarovshot") + if obj then + minetest.sound_play("rangedweapons_makarov", {object=obj}) + obj:setvelocity({x=dir.x * 20, y=dir.y * 20, z=dir.z * 20}) + obj:setacceleration({x=dir.x * math.random(-1.0,1.0), y=math.random(-1.0,1.0), z=dir.z * math.random(-1.0,1.0)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.75, + size = 5, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:makarov_rld" + end + end + end + return itemstack + end, +}) +minetest.register_craft({ + output = 'rangedweapons:makarov', + recipe = { + {'', 'default:steel_ingot', 'default:steel_ingot'}, + {'', 'default:mese_crystal_fragment', 'default:tree'}, + {'', '', 'dye:black'}, + } +}) + +local rangedweapons_makarovshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_makarovshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.165 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:makarovshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 12 then + local damage = math.random(8,12) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 6}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(4,6) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 3}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 12 then + local damage = math.random(8,12) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(4,6) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:makarovshot", rangedweapons_makarovshot ) + + diff --git a/milkor.lua b/milkor.lua new file mode 100644 index 0000000..0c306fe --- /dev/null +++ b/milkor.lua @@ -0,0 +1,121 @@ +minetest.register_craft({ + output = "rangedweapons:milkor_uld", + recipe = { + {"default:diamond", "default:steel_ingot", "default:diamond"}, + {"default:steel_ingot", "default:steelblock", "default:steel_ingot"}, + {"default:steel_ingot", "default:steelblock", "default:steel_ingot"}, + } +}) + +minetest.register_craftitem("rangedweapons:milkor_uld", { + stack_max= 1, + wield_scale = {x=1.75,y=1.75,z=2.0}, + range = 0, + description = "" ..core.colorize("#35cdff","Milkor\n") ..core.colorize("#FFFFFF", "Explosion radius: 2\n") ..core.colorize("#FFFFFF", "Bullet gravitational pull: 5\n") ..core.colorize("#FFFFFF", "Ammunition: 40mm grenades\n") ..core.colorize("#FFFFFF", "Reload time: 0.70\n") ..core.colorize("#be0d00", "The gun is NOT loaded! (Right-click to load)\n")..core.colorize("#FFFFFF", "Gun type:Grenade launcher\n") ..core.colorize("#FFFFFF", "Bullet velocity: 15"), + inventory_image = "rangedweapons_milkor.png", + on_use = function(user) + minetest.sound_play("rangedweapons_empty", {user}) + end, +}) + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.001 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if player:get_wielded_item():get_name() == "rangedweapons:milkor_uld" + and inv:contains_item("main", "rangedweapons:40mm")then + if controls.RMB then + inv:remove_item("main", "rangedweapons:40mm") + player:set_wielded_item("rangedweapons:milkor_rld") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell_grenade") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + timer = 0 + minetest.sound_play("rangedweapons_reload_a", {player}) + +end + end + + if timer >= 0.70 and + player:get_wielded_item():get_name() == "rangedweapons:milkor_rld" then + player:set_wielded_item("rangedweapons:milkor") + + timer = 0 + minetest.sound_play("rangedweapons_reload_b", {player}) + + + + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:milkor_rld", { + stack_max= 1, + range = 0, + wield_scale = {x=1.75,y=1.75,z=2.0}, + description = "**RELOADING MILKOR MGL**", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_milkor_rld.png", +}) + + +minetest.register_tool("rangedweapons:milkor", { + description = "" ..core.colorize("#35cdff","Milkor MGL\n") ..core.colorize("#FFFFFF", "Explosion radius: 2\n") ..core.colorize("#FFFFFF", "Bullet gravitational pull: 4\n") ..core.colorize("#FFFFFF", "Ammunition: 40mm grenades\n") ..core.colorize("#FFFFFF", "Reload time: 0.70\n") ..core.colorize("#27a600", "The gun is loaded!\n")..core.colorize("#FFFFFF", "Gun type:Grenade launcher\n") ..core.colorize("#FFFFFF", "Bullet velocity: 20"), + range = 0, + groups = {not_in_creative_inventory = 1}, + wield_scale = {x=1.75,y=1.75,z=2.0}, + inventory_image = "rangedweapons_milkor.png", + on_use = function(itemstack, user, pointed_thing) + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:he_grenade") + if obj then + minetest.sound_play("rangedweapons_rocket", {object=obj}) + obj:setvelocity({x=dir.x * 20, y=dir.y * 20, z=dir.z * 20}) + obj:setacceleration({x=dir.x * -1, y=-4, z=dir.z * -1}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 1.5, + size = 10, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:milkor_uld" + end + end + end + return itemstack + end, +}) + + + + diff --git a/minigun.lua b/minigun.lua new file mode 100644 index 0000000..6e8b13f --- /dev/null +++ b/minigun.lua @@ -0,0 +1,182 @@ +if minigun_aswell == true then + +minetest.register_craft({ + output = 'rangedweapons:minigun', + recipe = { + {'', 'default:steelblock', 'default:mese'}, + {'default:diamondblock', 'default:diamondblock', 'default:diamondblock'}, + {'default:steelblock', 'default:steelblock', 'default:steelblock'}, + } +}) + + minetest.register_craftitem("rangedweapons:minigun", { + stack_max= 1, + wield_scale = {x=4.0,y=4.0,z=4.0}, + description = "" ..core.colorize("#35cdff","MINI-GUN\n") ..core.colorize("#FFFFFF", "Ranged damage: 5-13\n") ..core.colorize("#FFFFFF", "Accuracy: 50%\n") ..core.colorize("#FFFFFF", "Mob knockback: 3\n") ..core.colorize("#FFFFFF", "Critical chance: 12%\n") ..core.colorize("#FFFFFF", "Critical damage: 12-25\n") ..core.colorize("#FFFFFF", "Ammunition: 7.26mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.025\n") ..core.colorize("#FFFFFF", "Gun type: heavy machinegun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 30"), + range = 0, + inventory_image = "rangedweapons_minigun.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.025 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:minigun" then + if not inv:contains_item("main", "rangedweapons:726mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:minigun" then + inv:remove_item("main", "rangedweapons:726mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:minigunshot") + if obj then + minetest.sound_play("rangedweapons_machinegun", {object=obj}) + obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 30}) + obj:setacceleration({x=dir.x * math.random(-5.0,5.0), y=math.random(-5.0,5.0), z=dir.z * math.random(-5.0,5.0)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.15, + size = 3, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_minigunshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_minigunshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.11 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:minigunshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 12 then + local damage = math.random(12,25) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=6}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(5,13) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 3}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 12 then + local damage = math.random(12,25) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(5,13) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if self.timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.04, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "doors:door_wood_a" or + node.name == "doors:door_wood_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:minigunshot", rangedweapons_minigunshot ) + +end \ No newline at end of file diff --git a/misc.lua b/misc.lua new file mode 100644 index 0000000..559e0c8 --- /dev/null +++ b/misc.lua @@ -0,0 +1,100 @@ + + +minetest.register_craftitem("rangedweapons:shell_shotgundrop", { + wield_scale = {x=2.5,y=1.5,z=1.0}, + inventory_image = "rangedweapons_shelldrop_shotgun.png", +}) + +minetest.register_craftitem("rangedweapons:shell_whitedrop", { + wield_scale = {x=2.5,y=1.5,z=1.0}, + inventory_image = "rangedweapons_shelldrop_white.png", +}) + +minetest.register_craftitem("rangedweapons:shell_grenadedrop", { + wield_scale = {x=2.5,y=1.5,z=3.0}, + inventory_image = "rangedweapons_shelldrop_grenade.png", +}) + +minetest.register_craftitem("rangedweapons:shelldrop", { + wield_scale = {x=2.5,y=1.5,z=1.0}, + inventory_image = "rangedweapons_shelldrop.png", +}) + +minetest.register_craftitem("rangedweapons:plastic_sheet", { + description = "" ..core.colorize("#35cdff","Black plastic sheet\n")..core.colorize("#FFFFFF", "Used in guncraft"), + inventory_image = "rangedweapons_plastic_sheet.png", +}) + +minetest.register_craftitem("rangedweapons:gunsteel_ingot", { + description = "" ..core.colorize("#35cdff","GunSteel ingot\n")..core.colorize("#FFFFFF", "A strong, but light alloy, used in guncraft"), + inventory_image = "rangedweapons_gunsteel_ingot.png", +}) +minetest.register_craft({ + output = "rangedweapons:gunsteel_ingot", + recipe = { + {"default:steel_ingot", "default:tin_ingot", "default:coal_lump"}, + } +}) +minetest.register_craftitem("rangedweapons:ultra_gunsteel_ingot", { + description = "" ..core.colorize("#35cdff","Ultra-GunSteel ingot\n")..core.colorize("#FFFFFF", "A even stronger alloy, for even stronger guns."), + inventory_image = "rangedweapons_ultra_gunsteel_ingot.png", +}) +minetest.register_craft({ + output = "rangedweapons:ultra_gunsteel_ingot", + recipe = { + {"", "default:mese_crystal", ""}, + {"default:gold_ingot", "rangedweapons:gunsteel_ingot", "default:gold_ingot"}, + {"", "default:diamond", ""}, + } +}) + +minetest.register_craft({ + output = "rangedweapons:plastic_sheet", + recipe = { + {"default:tree", "default:coal_lump", "default:tree"}, + {"default:coal_lump", "default:tree", "default:coal_lump"}, + } +}) +minetest.register_craftitem("rangedweapons:gun_power_core", { + description = "" ..core.colorize("#35cdff","Gun Power Core\n")..core.colorize("#FFFFFF", "A powerful core, for making the most powerful weapons"), + inventory_image = "rangedweapons_gun_power_core.png", +}) +minetest.register_craft({ + output = "rangedweapons:gun_power_core", + recipe = { + {"rangedweapons:gunsteel_ingot", "default:goldblock", "rangedweapons:gunsteel_ingot"}, + {"default:diamondblock", "default:mese", "default:diamondblock"}, + {"rangedweapons:gunsteel_ingot", "default:goldblock", "rangedweapons:gunsteel_ingot"}, + } +}) +minetest.register_craftitem("rangedweapons:power_particle", { + description = "" ..core.colorize("#35cdff","Power Particle\n")..core.colorize("#FFFFFF", "A power unit, that strangelly can be carryed arround with no vessel, used by power guns"), + stack_max = 10000, + inventory_image = "rangedweapons_power_particle.png", +}) + +local rangedweapons_smoke = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.5, y=0.5}, + textures = {"tnt_smoke.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_smoke.on_step = function(self, dtime, pos) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + if self.lastpos.x ~= nil then + if self.timer > 0.30 then + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end + + + +minetest.register_entity("rangedweapons:smoke", rangedweapons_smoke ) + diff --git a/mp40.lua b/mp40.lua new file mode 100644 index 0000000..0692aeb --- /dev/null +++ b/mp40.lua @@ -0,0 +1,177 @@ +minetest.register_craft({ + output = 'rangedweapons:mp40', + recipe = { + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:mese_crystal', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:mese_crystal_fragment', ''}, + } +}) + + minetest.register_craftitem("rangedweapons:mp40", { + stack_max= 1, + wield_scale = {x=1.75,y=1.75,z=1.5}, + description = "" ..core.colorize("#35cdff","MP-40\n") ..core.colorize("#FFFFFF", "Ranged damage: 3-6\n") ..core.colorize("#FFFFFF", "accuracy: 70%\n") ..core.colorize("#FFFFFF", "Mob knockback: 0\n") ..core.colorize("#FFFFFF", "Critical chance: 8%\n") ..core.colorize("#FFFFFF", "Critical damage: 5-11\n") ..core.colorize("#FFFFFF", "Ammunition: 9mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.14\n") ..core.colorize("#FFFFFF", "Gun type: sub-machinegun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 25"), + range = 0, + inventory_image = "rangedweapons_mp40.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.14 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:mp40" then + if not inv:contains_item("main", "rangedweapons:9mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:mp40" then + inv:remove_item("main", "rangedweapons:9mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:mp40shot") + if obj then + minetest.sound_play("rangedweapons_beretta", {object=obj}) + obj:setvelocity({x=dir.x * 25, y=dir.y * 25, z=dir.z * 25}) + obj:setacceleration({x=dir.x * math.random(-3.0,3.0), y=math.random(-3.0,3.0), z=dir.z * math.random(-3.0,3.0)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.30, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_mp40shot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_mp40shot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.16 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:mp40shot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 8 then + local damage = math.random(5,11) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=0}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(3,6) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 0}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 8 then + local damage = math.random(5,11) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(3,6) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:mp40shot", rangedweapons_mp40shot ) \ No newline at end of file diff --git a/mp5.lua b/mp5.lua new file mode 100644 index 0000000..d0916b9 --- /dev/null +++ b/mp5.lua @@ -0,0 +1,178 @@ +minetest.register_craft({ + output = 'rangedweapons:mp5', + recipe = { + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:diamond', 'default:steel_ingot'}, + {'default:steel_ingot', 'rangedweapons:plastic_sheet', 'dye:black'}, + } +}) + + minetest.register_craftitem("rangedweapons:mp5", { + stack_max= 1, + wield_scale = {x=1.75,y=1.75,z=1.20}, + description = "" ..core.colorize("#35cdff","MP5\n") ..core.colorize("#FFFFFF", "Ranged damage: 3-7\n") ..core.colorize("#FFFFFF", "Accuracy: 74%\n") ..core.colorize("#FFFFFF", "Mob knockback: 1\n") ..core.colorize("#FFFFFF", "Critical chance: 7%\n") ..core.colorize("#FFFFFF", "Critical damage: 7-13\n") ..core.colorize("#FFFFFF", "Ammunition: 10mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.10\n") ..core.colorize("#FFFFFF", "Gun type: Sub-machinegun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 25"), + range = 0, + inventory_image = "rangedweapons_mp5.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.10 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:mp5" then + if not inv:contains_item("main", "rangedweapons:10mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:mp5" then + inv:remove_item("main", "rangedweapons:10mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:mp5shot") + if obj then + minetest.sound_play("rangedweapons_machine_pistol", {object=obj}) + obj:setvelocity({x=dir.x * 25, y=dir.y * 25, z=dir.z * 25}) + obj:setacceleration({x=dir.x * math.random(-2.6,2.6), y=math.random(-2.6,2.6), z=dir.z * math.random(-2.6,2.6)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell_white") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.35, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_mp5shot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_mp5shot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.12 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:mp5shot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 7 then + local damage = math.random(7,13) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=2}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(3,7) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 1}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 7 then + local damage = math.random(7,13) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(3,7) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:mp5shot", rangedweapons_mp5shot ) \ No newline at end of file diff --git a/python.lua b/python.lua new file mode 100644 index 0000000..4aed646 --- /dev/null +++ b/python.lua @@ -0,0 +1,228 @@ +minetest.register_craft({ + output = 'rangedweapons:python_uld', + recipe = { +{'rangedweapons:gunsteel_ingot', 'default:diamond', 'default:mese_crystal_fragment'}, +{'rangedweapons:gunsteel_ingot', 'default:diamond', 'rangedweapons:gunsteel_ingot'}, + {'', 'default:mese_crystal', 'default:tree'}, + } +}) + +minetest.register_craft({ + output = 'rangedweapons:python_uld', + recipe = { +{'moreores:silver_ingot', 'default:diamond', 'default:mese_crystal_fragment'}, +{'moreores:silver_ingot', 'default:diamond', 'moreores:silver_ingot'}, + {'', 'default:mese_crystal', 'default:tree'}, + } +}) + +minetest.register_craftitem("rangedweapons:python_uld", { + stack_max= 1, + wield_scale = {x=1.25,y=1.25,z=1.1}, + range = 0, + description = "" ..core.colorize("#35cdff","Colt Python \n") ..core.colorize("#FFFFFF", "Ranged damage: 10-15\n") ..core.colorize("#FFFFFF", "Accuracy: 95%\n") ..core.colorize("#FFFFFF", "Mob knockback: 8\n") ..core.colorize("#FFFFFF", "Critical chance: 32%\n") ..core.colorize("#FFFFFF", "Critical damage: 20-35\n") ..core.colorize("#FFFFFF", "Ammunition: .357 Magnum rounds\n") ..core.colorize("#FFFFFF", "Reload time: 0.3\n") ..core.colorize("#be0d00", "The gun is NOT loaded! (Right-click to load)\n")..core.colorize("#FFFFFF", "Gun type: Revolver\n") ..core.colorize("#FFFFFF", "Bullet velocity: 50"), + inventory_image = "rangedweapons_python.png", + on_use = function(user) + minetest.sound_play("rangedweapons_empty", {user}) + end, +}) + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.001 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if player:get_wielded_item():get_name() == "rangedweapons:python_uld" + and inv:contains_item("main", "rangedweapons:357")then + if controls.RMB then + inv:remove_item("main", "rangedweapons:357") + player:set_wielded_item("rangedweapons:python_rld") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + timer = 0 + minetest.sound_play("rangedweapons_reload_b", {player}) + +end + end + + if timer >= 0.3 and + player:get_wielded_item():get_name() == "rangedweapons:python_rld" then + player:set_wielded_item("rangedweapons:python") + timer = 0 + minetest.sound_play("rangedweapons_reload_a", {player}) + + + + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:python_rld", { + stack_max= 1, + range = 0, + wield_scale = {x=1.25,y=1.25,z=1.1}, + description = "**RELOADING COLT PYTHON**", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_python_rld.png", +}) + + +minetest.register_tool("rangedweapons:python", { + description = "" ..core.colorize("#35cdff","Colt Python \n") ..core.colorize("#FFFFFF", "Ranged damage: 10-15\n")..core.colorize("#FFFFFF", "Accuracy: 95%\n") ..core.colorize("#FFFFFF", "Mob knockback: 8\n") ..core.colorize("#FFFFFF", "Critical chance: 32%\n") ..core.colorize("#FFFFFF", "Critical damage: 20-35\n") ..core.colorize("#FFFFFF", "Ammunition: .357 Magnum rounds\n") ..core.colorize("#FFFFFF", "Reload time: 0.3\n") ..core.colorize("#27a600", "The gun is loaded!\n")..core.colorize("#FFFFFF", "Gun type: Revolver\n") ..core.colorize("#FFFFFF", "Bullet velocity: 50"), + range = 0, + groups = {not_in_creative_inventory = 1}, + wield_scale = {x=1.25,y=1.25,z=1.1}, + inventory_image = "rangedweapons_python.png", + on_use = function(itemstack, user, pointed_thing) + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:pythonshot") + if obj then + minetest.sound_play("rangedweapons_revolver", {object=obj}) + obj:setvelocity({x=dir.x * 50, y=dir.y * 50, z=dir.z * 50}) + obj:setacceleration({x=dir.x * math.random(-0.5,0.5), y=math.random(-0.5,0.5), z=dir.z * math.random(-0.5,0.5)}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 1.5, + size = 8, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:python_uld" + end + end + end + return itemstack + end, +}) + +local rangedweapons_pythonshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_pythonshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.065 then + local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 1.5) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:pythonshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 32 then + local damage = math.random(20,35) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 16}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(10,15) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 8}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 32 then + local damage = math.random(20,35) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(10,15) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:pythonshot", rangedweapons_pythonshot ) + + diff --git a/remington.lua b/remington.lua new file mode 100644 index 0000000..a95a0bb --- /dev/null +++ b/remington.lua @@ -0,0 +1,237 @@ +minetest.register_craft({ + output = "rangedweapons:remington_uld", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:tree", "default:mese_crystal", "default:tree"}, + } +}) + +minetest.register_craftitem("rangedweapons:remington_uld", { + stack_max= 1, + wield_scale = {x=1.9,y=1.9,z=1.1}, + range = 0, + description = "" ..core.colorize("#35cdff","Remington 870\n") ..core.colorize("#FFFFFF", "Ranged damage: 2-7 X 9\n") ..core.colorize("#FFFFFF", "Accuracy: 60%\n") ..core.colorize("#FFFFFF", "Mob knockback: 5\n") ..core.colorize("#FFFFFF", "Critical chance: 3%\n") ..core.colorize("#FFFFFF", "Critical damage: 6-15 X 9\n") ..core.colorize("#FFFFFF", "Ammunition: 12 gauge shells\n") ..core.colorize("#FFFFFF", "Reload time: 0.8\n") ..core.colorize("#be0d00", "The gun is NOT loaded! (Right-click to load)\n")..core.colorize("#FFFFFF", "Gun type: shotgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 15"), + inventory_image = "rangedweapons_remington.png", + on_use = function(user) + minetest.sound_play("rangedweapons_empty", {user}) + end, +}) + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.001 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if player:get_wielded_item():get_name() == "rangedweapons:remington_uld" + and inv:contains_item("main", "rangedweapons:shell")then + if controls.RMB then + inv:remove_item("main", "rangedweapons:shell") + player:set_wielded_item("rangedweapons:remington_rld") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell_shotgun") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + timer = 0 + minetest.sound_play("rangedweapons_shotgun_reload_a", {player}) + +end + end + + if timer >= 0.8 and + player:get_wielded_item():get_name() == "rangedweapons:remington_rld" then + player:set_wielded_item("rangedweapons:remington") + timer = 0 + minetest.sound_play("rangedweapons_shotgun_reload_b", {player}) + + + + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:remington_rld", { + stack_max= 1, + range = 0, + wield_scale = {x=1.9,y=1.9,z=1.1}, + description = "**RELOADING REMINGTON870**", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_remington_rld.png", +}) + + +minetest.register_tool("rangedweapons:remington", { + description = "" ..core.colorize("#35cdff","Remington 870\n") ..core.colorize("#FFFFFF", "Ranged damage: 2-7 X 9\n") ..core.colorize("#FFFFFF", "Accuracy: 60%\n")..core.colorize("#FFFFFF", "Mob knockback: 5\n") ..core.colorize("#FFFFFF", "Critical chance: 3%\n") ..core.colorize("#FFFFFF", "Critical damage: 6-15 X 9\n") ..core.colorize("#FFFFFF", "Ammunition: 12 gauge shells\n") ..core.colorize("#FFFFFF", "Reload time: 0.8\n") ..core.colorize("#27a600", "The gun is loaded!\n")..core.colorize("#FFFFFF", "Gun type: shotgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 15"), + range = 0, + groups = {not_in_creative_inventory = 1}, + wield_scale = {x=1.9,y=1.9,z=1.1}, + inventory_image = "rangedweapons_remington.png", + on_use = function(itemstack, user, pointed_thing) + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:remingtonshot") + if obj then + minetest.sound_play("rangedweapons_shotgun_shot", {object=obj}) + obj:setvelocity({x=dir.x * math.random(13,17), y=dir.y * math.random(13,17), z=dir.z * math.random(13,17)}) + obj:setacceleration({x=dir.x * math.random(-4.0,4.0), y=math.random(-4.0,4.0), z=dir.z * math.random(-4.0,4.0)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:remingtonshot") + obj:setvelocity({x=dir.x * math.random(13,17), y=dir.y * math.random(13,17), z=dir.z * math.random(13,17)}) + obj:setacceleration({x=dir.x * math.random(-4.0,4.0), y=math.random(-4.0,4.0), z=dir.z * math.random(-4.0,4.0)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:remingtonshot") + obj:setvelocity({x=dir.x * math.random(13,17), y=dir.y * math.random(13,17), z=dir.z * math.random(13,17)}) + obj:setacceleration({x=dir.x * math.random(-4.0,4.0), y=math.random(-4.0,4.0), z=dir.z * math.random(-4.0,4.0)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:remingtonshot") + obj:setvelocity({x=dir.x * math.random(13,17), y=dir.y * math.random(13,17), z=dir.z * math.random(13,17)}) + obj:setacceleration({x=dir.x * math.random(-4.0,4.0), y=math.random(-4.0,4.0), z=dir.z * math.random(-4.0,4.0)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:remingtonshot") + obj:setvelocity({x=dir.x * math.random(13,17), y=dir.y * math.random(13,17), z=dir.z * math.random(13,17)}) + obj:setacceleration({x=dir.x * math.random(-4.0,4.0), y=math.random(-4.0,4.0), z=dir.z * math.random(-4.0,4.0)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:remingtonshot") + obj:setvelocity({x=dir.x * math.random(13,17), y=dir.y * math.random(13,17), z=dir.z * math.random(13,17)}) + obj:setacceleration({x=dir.x * math.random(-4.0,4.0), y=math.random(-4.0,4.0), z=dir.z * math.random(-4.0,4.0)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:remingtonshot") + obj:setvelocity({x=dir.x * math.random(13,17), y=dir.y * math.random(13,17), z=dir.z * math.random(13,17)}) + obj:setacceleration({x=dir.x * math.random(-4.0,4.0), y=math.random(-4.0,4.0), z=dir.z * math.random(-4.0,4.0)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:remingtonshot") + obj:setvelocity({x=dir.x * math.random(13,17), y=dir.y * math.random(13,17), z=dir.z * math.random(13,17)}) + obj:setacceleration({x=dir.x * math.random(-4.0,4.0), y=math.random(-4.0,4.0), z=dir.z * math.random(-4.0,4.0)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:remingtonshot") + obj:setvelocity({x=dir.x * math.random(13,17), y=dir.y * math.random(13,17), z=dir.z * math.random(13,17)}) + obj:setacceleration({x=dir.x * math.random(-4.0,4.0), y=math.random(-4.0,4.0), z=dir.z * math.random(-4.0,4.0)}) +----------------------------------------------------- + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 1.25, + size = 10, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:remington_uld" + end + end + end + return itemstack + end, +}) + +local rangedweapons_remingtonshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.1, y=0.1}, + textures = {"rangedweapons_buckball.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_remingtonshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.3 then + local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 1.25) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:remingtonshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 3 then + local damage = math.random(6,15) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 10}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,7) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 5}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 3 then + local damage = math.random(6,15) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,7) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_wood_a" or + node.name == "doors:door_wood_b" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:remingtonshot", rangedweapons_remingtonshot ) + + diff --git a/rpg.lua b/rpg.lua new file mode 100644 index 0000000..332b7ec --- /dev/null +++ b/rpg.lua @@ -0,0 +1,106 @@ +minetest.register_craft({ + output = 'rangedweapons:rpg_uld', + recipe = { + {'default:diamond', 'default:steel_ingot', ''}, + {'default:steelblock', 'default:tree', 'default:diamondblock'}, + {'default:diamond', 'default:tree', ''}, + } +}) + +minetest.register_craftitem("rangedweapons:rpg_uld", { + stack_max= 1, + wield_scale = {x=2.5,y=2.5,z=3.75}, + range = 0, + description = "" ..core.colorize("#35cdff","rpg\n") ..core.colorize("#FFFFFF", "Explosion radius: 3\n") ..core.colorize("#FFFFFF", "Ammunition: rockets\n") ..core.colorize("#FFFFFF", "Reload time: 1.0\n") ..core.colorize("#be0d00", "The gun is NOT loaded! (Right-click to load)\n")..core.colorize("#FFFFFF", "Gun type:Rocket launcher\n") ..core.colorize("#FFFFFF", "Bullet velocity: 15"), + inventory_image = "rangedweapons_rpg.png", + on_use = function(user) + minetest.sound_play("rangedweapons_empty", {user}) + end, +}) + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.001 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if player:get_wielded_item():get_name() == "rangedweapons:rpg_uld" + and inv:contains_item("main", "rangedweapons:rocket")then + if controls.RMB then + inv:remove_item("main", "rangedweapons:rocket") + player:set_wielded_item("rangedweapons:rpg_rld") + end + timer = 0 + minetest.sound_play("", {player}) + + + + end + + if timer >= 1.25 and + player:get_wielded_item():get_name() == "rangedweapons:rpg_rld" then + player:set_wielded_item("rangedweapons:rpg") + timer = 0 + minetest.sound_play("rangedweapons_reload_b", {player}) + + + + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:rpg_rld", { + stack_max= 1, + range = 0, + wield_scale = {x=2.5,y=2.5,z=3.75}, + description = "**RELOADING rpg**", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_rpg.png", +}) + + +minetest.register_tool("rangedweapons:rpg", { + description = "" ..core.colorize("#35cdff","rpg\n") ..core.colorize("#FFFFFF", "Explosion radius: 3\n") ..core.colorize("#FFFFFF", "Ammunition: rockets\n") ..core.colorize("#FFFFFF", "Reload time: 1.0\n") ..core.colorize("#27a600", "The gun is loaded!\n")..core.colorize("#FFFFFF", "Gun type:Rocket launcher\n") ..core.colorize("#FFFFFF", "Bullet velocity: 15"), + range = 0, + groups = {not_in_creative_inventory = 1}, + wield_scale = {x=2.5,y=2.5,z=3.75}, + inventory_image = "rangedweapons_rpg_rld.png", + on_use = function(itemstack, user, pointed_thing) + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:rocket") + if obj then + minetest.sound_play("rangedweapons_rocket", {object=obj}) + obj:setvelocity({x=dir.x * 15, y=dir.y * 15, z=dir.z * 15}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 1.5, + size = 10, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:rpg_uld" + end + end + end + return itemstack + end, +}) + + + + diff --git a/rpk.lua b/rpk.lua new file mode 100644 index 0000000..badb276 --- /dev/null +++ b/rpk.lua @@ -0,0 +1,176 @@ +minetest.register_craft({ + output = 'rangedweapons:rpk', + recipe = { + {'default:diamond', 'default:mese', ''}, + {'default:steel_ingot', 'default:steelblock', 'default:tree'}, + {'', 'default:diamond', 'default:steel_ingot'}, + } +}) + + minetest.register_craftitem("rangedweapons:rpk", { + stack_max= 1, + wield_scale = {x=2.5,y=2.5,z=1.5}, + description = "" ..core.colorize("#35cdff","RPK\n") ..core.colorize("#FFFFFF", "Ranged damage: 2-5\n") ..core.colorize("#FFFFFF", "Accuracy: 55%\n") ..core.colorize("#FFFFFF", "Mob knockback: 2\n") ..core.colorize("#FFFFFF", "Critical chance: 8%\n") ..core.colorize("#FFFFFF", "Critical damage: 4-9\n") ..core.colorize("#FFFFFF", "Ammunition: 7.26mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.05\n") ..core.colorize("#FFFFFF", "Gun type: heavy machinegun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 30"), + range = 0, + inventory_image = "rangedweapons_rpk.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.05 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:rpk" then + if not inv:contains_item("main", "rangedweapons:726mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:rpk" then + inv:remove_item("main", "rangedweapons:726mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:rpkshot") + if obj then + minetest.sound_play("rangedweapons_machinegun", {object=obj}) + obj:setvelocity({x=dir.x * 30, y=dir.y * 30, z=dir.z * 30}) + obj:setacceleration({x=dir.x * math.random(-4.5,4.5), y=math.random(-4.5,4.5), z=dir.z * math.random(-4.5,4.5)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.25, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_rpkshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_rpkshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.11 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:rpkshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 8 then + local damage = math.random(4,9) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=4}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,5) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 2}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 8 then + local damage = math.random(4,9) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,5) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:rpkshot", rangedweapons_rpkshot ) \ No newline at end of file diff --git a/scar.lua b/scar.lua new file mode 100644 index 0000000..550b06b --- /dev/null +++ b/scar.lua @@ -0,0 +1,177 @@ +minetest.register_craft({ + output = 'rangedweapons:scar', + recipe = { + {'default:diamond', 'default:mese', 'default:mese'}, + {'default:steel_ingot', 'default:steel_ingot', 'default:mese'}, + {'rangedweapons:plastic_sheet', '', 'default:mese_crystal'}, + } +}) + + minetest.register_craftitem("rangedweapons:scar", { + stack_max= 1, + wield_scale = {x=1.7,y=1.7,z=1.25}, + description = "" ..core.colorize("#35cdff","FN SCAR 16\n") ..core.colorize("#FFFFFF", "Ranged damage: 9-24\n") ..core.colorize("#FFFFFF", "Accuracy: 85%\n") ..core.colorize("#FFFFFF", "Mob knockback: 6\n")..core.colorize("#FFFFFF", "Critical chance: 14%\n") ..core.colorize("#FFFFFF", "Critical damage: 20-42\n") ..core.colorize("#FFFFFF", "Ammunition: 7.26mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.15\n") ..core.colorize("#FFFFFF", "Gun type: Assault rifle\n") ..core.colorize("#FFFFFF", "Bullet velocity: 45"), + range = 0, + inventory_image = "rangedweapons_scar.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.15 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:scar" then + if not inv:contains_item("main", "rangedweapons:726mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:scar" then + inv:remove_item("main", "rangedweapons:726mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:scarshot") + if obj then + minetest.sound_play("rangedweapons_ak", {object=obj}) + obj:setvelocity({x=dir.x * 45, y=dir.y * 45, z=dir.z * 45}) + obj:setacceleration({x=dir.x * math.random(-1.5,1.5), y=math.random(-1.5,1.5), z=dir.z * math.random(-1.5,1.5)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.5, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_scarshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_scarshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.06 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:scarshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 14 then + local damage = math.random(20,42) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=12}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(9,24) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 6}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 14 then + local damage = math.random(20,42) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(9,24) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:scarshot", rangedweapons_scarshot ) \ No newline at end of file diff --git a/settings.lua b/settings.lua new file mode 100644 index 0000000..d1ef7e6 --- /dev/null +++ b/settings.lua @@ -0,0 +1,20 @@ +-- change "true" to "false" in order to disable a feature, or +-- "false" to "true" to enable it + +explosives = true +javelins = true +shurikens = true +handguns = true +shotguns = true +rifles = true +magnums_and_revolvers = true +machine_pistols = true +sub_machineguns = true +assault_rifles = true +power_weapons = true +glass_breaking = true +door_breaking = true +heavy_machineguns = true +minigun_aswell = true + + \ No newline at end of file diff --git a/shurikens.lua b/shurikens.lua new file mode 100644 index 0000000..4b2d293 --- /dev/null +++ b/shurikens.lua @@ -0,0 +1,877 @@ +---wooden--- + + +minetest.register_craftitem("rangedweapons:shuriken_wooden", { + wield_scale = {x=0.5,y=0.5,z=0.20}, + inventory_image = "rangedweapons_wooden_shuriken.png", +}) + +minetest.register_craftitem("rangedweapons:wooden_shuriken", { + description = "" ..core.colorize("#35cdff","Wooden shuriken\n") ..core.colorize("#FFFFFF", "Ranged damage: 1-3\n") ..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 4\n") ..core.colorize("#FFFFFF", "Critical chance: 4%\n") ..core.colorize("#FFFFFF", "Critical damage: 2-5\n") ..core.colorize("#FFFFFF", "Shuriken survival rate: 10%\n")..core.colorize("#FFFFFF", "Projectile gravity: 8\n") ..core.colorize("#FFFFFF", "Projectile velocity: 12"), + range = 0, + stack_max= 100, + inventory_image = "rangedweapons_wooden_shuriken.png", + on_use = function(itemstack, user, pointed_thing) + if not minetest.setting_getbool("creative_mode") then itemstack:take_item() + end + if pointed_thing.type ~= "nothing" then + local pointed = minetest.get_pointed_thing_position(pointed_thing) + if vector.distance(user:getpos(), pointed) < 8 then + return itemstack + end + end + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir then + pos.y = pos.y + 1.5 + local obj = minetest.add_entity(pos, "rangedweapons:woodensr") + if obj then + minetest.sound_play("rangedweapons_throw", {object=obj}) + obj:setvelocity({x=dir.x * 12, y=dir.y * 12, z=dir.z * 12}) + obj:setacceleration({x=dir.x * -1, y=-8, z=dir.z * -1}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + end + end + end + return itemstack + end, +}) + +local rangedweapons_woodensr = { + physical = false, + timer = 0, + visual = "wielditem", + visual_size = {x=0.33, y=0.33,}, + textures = {"rangedweapons:shuriken_wooden"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_woodensr.on_step = function(self, dtime) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.25 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:woodensr" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 4 then + local damage = math.random(2,5) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=8}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(1,3) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=4}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + + if math.random(1, 100) <= 4 then + local damage = math.random(2,5) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(1,3) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end +end +end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") and math.random(1, 100) <= 10 then + minetest.add_item(self.lastpos, "rangedweapons:wooden_shuriken") + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end + +minetest.register_entity("rangedweapons:woodensr", rangedweapons_woodensr) + +minetest.register_craft({ + output = 'rangedweapons:wooden_shuriken 20', + recipe = { + {'', 'group:wood', ''}, + {'group:wood', '', 'group:wood'}, + {'', 'group:wood', ''}, + } +}) + + +---stone--- + + +minetest.register_craftitem("rangedweapons:shuriken_stone", { + wield_scale = {x=0.5,y=0.5,z=0.20}, + inventory_image = "rangedweapons_stone_shuriken.png", +}) + +minetest.register_craftitem("rangedweapons:stone_shuriken", { + description = "" ..core.colorize("#35cdff","stone shuriken\n") ..core.colorize("#FFFFFF", "Ranged damage: 2-5\n") ..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 7\n") ..core.colorize("#FFFFFF", "Critical chance: 5%\n") ..core.colorize("#FFFFFF", "Critical damage: 4-8\n") ..core.colorize("#FFFFFF", "Shuriken survival rate: 15%\n")..core.colorize("#FFFFFF", "Projectile gravity: 9\n") ..core.colorize("#FFFFFF", "Projectile velocity: 10"), + range = 0, + stack_max= 125, + inventory_image = "rangedweapons_stone_shuriken.png", + on_use = function(itemstack, user, pointed_thing) + if not minetest.setting_getbool("creative_mode") then itemstack:take_item() + end + if pointed_thing.type ~= "nothing" then + local pointed = minetest.get_pointed_thing_position(pointed_thing) + if vector.distance(user:getpos(), pointed) < 8 then + return itemstack + end + end + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir then + pos.y = pos.y + 1.5 + local obj = minetest.add_entity(pos, "rangedweapons:stonesr") + if obj then + minetest.sound_play("rangedweapons_throw", {object=obj}) + obj:setvelocity({x=dir.x * 10, y=dir.y * 10, z=dir.z * 10}) + obj:setacceleration({x=dir.x * -1, y=-9, z=dir.z * -1}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + end + end + end + return itemstack + end, +}) + +local rangedweapons_stonesr = { + physical = false, + timer = 0, + visual = "wielditem", + visual_size = {x=0.33, y=0.33,}, + textures = {"rangedweapons:shuriken_stone"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_stonesr.on_step = function(self, dtime) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.30 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:stonesr" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 5 then + local damage = math.random(4,8) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=14}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,5) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=7}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + + if math.random(1, 100) <= 5 then + local damage = math.random(4,8) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,5) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end +end +end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") and math.random(1, 100) <= 15 then + minetest.add_item(self.lastpos, "rangedweapons:stone_shuriken") + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end + +minetest.register_entity("rangedweapons:stonesr", rangedweapons_stonesr) + +minetest.register_craft({ + output = 'rangedweapons:stone_shuriken 10', + recipe = { + {'', 'default:cobble', ''}, + {'default:cobble', '', 'default:cobble'}, + {'', 'default:cobble', ''}, + } +}) + +---steel--- + + +minetest.register_craftitem("rangedweapons:shuriken_steel", { + wield_scale = {x=0.5,y=0.5,z=0.20}, + inventory_image = "rangedweapons_steel_shuriken.png", +}) + +minetest.register_craftitem("rangedweapons:steel_shuriken", { + description = "" ..core.colorize("#35cdff","steel shuriken\n") ..core.colorize("#FFFFFF", "Ranged damage: 3-8\n") ..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 2\n") ..core.colorize("#FFFFFF", "Critical chance: 6%\n") ..core.colorize("#FFFFFF", "Critical damage: 7-16\n") ..core.colorize("#FFFFFF", "Shuriken survival rate: 25%\n")..core.colorize("#FFFFFF", "Projectile gravity: 6\n") ..core.colorize("#FFFFFF", "Projectile velocity: 15"), + range = 0, + stack_max= 175, + inventory_image = "rangedweapons_steel_shuriken.png", + on_use = function(itemstack, user, pointed_thing) + if not minetest.setting_getbool("creative_mode") then itemstack:take_item() + end + if pointed_thing.type ~= "nothing" then + local pointed = minetest.get_pointed_thing_position(pointed_thing) + if vector.distance(user:getpos(), pointed) < 8 then + return itemstack + end + end + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir then + pos.y = pos.y + 1.5 + local obj = minetest.add_entity(pos, "rangedweapons:steelsr") + if obj then + minetest.sound_play("rangedweapons_throw", {object=obj}) + obj:setvelocity({x=dir.x * 15, y=dir.y * 15, z=dir.z * 15}) + obj:setacceleration({x=dir.x * -1, y=-6, z=dir.z * -1}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + end + end + end + return itemstack + end, +}) + +local rangedweapons_steelsr = { + physical = false, + timer = 0, + visual = "wielditem", + visual_size = {x=0.33, y=0.33,}, + textures = {"rangedweapons:shuriken_steel"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_steelsr.on_step = function(self, dtime) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.17 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:steelsr" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 6 then + local damage = math.random(7,16) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=4}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(3,8) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=2}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + + if math.random(1, 100) <= 6 then + local damage = math.random(7,16) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(3,8) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end +end +end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") and math.random(1, 100) <= 25 then + minetest.add_item(self.lastpos, "rangedweapons:steel_shuriken") + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end + +minetest.register_entity("rangedweapons:steelsr", rangedweapons_steelsr) + +minetest.register_craft({ + output = 'rangedweapons:steel_shuriken 30', + recipe = { + {'', 'default:steel_ingot', ''}, + {'default:steel_ingot', '', 'default:steel_ingot'}, + {'', 'default:steel_ingot', ''}, + } +}) + +---bronze--- + + +minetest.register_craftitem("rangedweapons:shuriken_bronze", { + wield_scale = {x=0.5,y=0.5,z=0.20}, + inventory_image = "rangedweapons_bronze_shuriken.png", +}) + +minetest.register_craftitem("rangedweapons:bronze_shuriken", { + description = "" ..core.colorize("#35cdff","bronze shuriken\n") ..core.colorize("#FFFFFF", "Ranged damage: 3-8\n") ..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 2\n") ..core.colorize("#FFFFFF", "Critical chance: 6%\n") ..core.colorize("#FFFFFF", "Critical damage: 7-16\n") ..core.colorize("#FFFFFF", "Shuriken survival rate: 30%\n")..core.colorize("#FFFFFF", "Projectile gravity: 6\n") ..core.colorize("#FFFFFF", "Projectile velocity: 15"), + range = 0, + stack_max= 200, + inventory_image = "rangedweapons_bronze_shuriken.png", + on_use = function(itemstack, user, pointed_thing) + if not minetest.setting_getbool("creative_mode") then itemstack:take_item() + end + if pointed_thing.type ~= "nothing" then + local pointed = minetest.get_pointed_thing_position(pointed_thing) + if vector.distance(user:getpos(), pointed) < 8 then + return itemstack + end + end + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir then + pos.y = pos.y + 1.5 + local obj = minetest.add_entity(pos, "rangedweapons:bronzesr") + if obj then + minetest.sound_play("rangedweapons_throw", {object=obj}) + obj:setvelocity({x=dir.x * 15, y=dir.y * 15, z=dir.z * 15}) + obj:setacceleration({x=dir.x * -1, y=-6, z=dir.z * -1}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + end + end + end + return itemstack + end, +}) + +local rangedweapons_bronzesr = { + physical = false, + timer = 0, + visual = "wielditem", + visual_size = {x=0.33, y=0.33,}, + textures = {"rangedweapons:shuriken_bronze"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_bronzesr.on_step = function(self, dtime) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.17 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:bronzesr" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 6 then + local damage = math.random(7,16) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=4}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(3,8) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=2}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + + if math.random(1, 100) <= 6 then + local damage = math.random(7,16) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(3,8) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end +end +end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") and math.random(1, 100) <= 30 then + minetest.add_item(self.lastpos, "rangedweapons:bronze_shuriken") + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end + +minetest.register_entity("rangedweapons:bronzesr", rangedweapons_bronzesr) + +minetest.register_craft({ + output = 'rangedweapons:bronze_shuriken 35', + recipe = { + {'', 'default:bronze_ingot', ''}, + {'default:bronze_ingot', '', 'default:bronze_ingot'}, + {'', 'default:bronze_ingot', ''}, + } +}) + +---golden--- + + +minetest.register_craftitem("rangedweapons:shuriken_golden", { + wield_scale = {x=0.5,y=0.5,z=0.20}, + inventory_image = "rangedweapons_golden_shuriken.png", +}) + +minetest.register_craftitem("rangedweapons:golden_shuriken", { + description = "" ..core.colorize("#35cdff","golden shuriken\n") ..core.colorize("#FFFFFF", "Ranged damage: 4-10\n") ..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 4\n") ..core.colorize("#FFFFFF", "Critical chance: 7%\n") ..core.colorize("#FFFFFF", "Critical damage: 10-22\n") ..core.colorize("#FFFFFF", "Shuriken survival rate: 36%\n")..core.colorize("#FFFFFF", "Projectile gravity: 7\n") ..core.colorize("#FFFFFF", "Projectile velocity: 12"), + range = 0, + stack_max= 275, + inventory_image = "rangedweapons_golden_shuriken.png", + on_use = function(itemstack, user, pointed_thing) + if not minetest.setting_getbool("creative_mode") then itemstack:take_item() + end + if pointed_thing.type ~= "nothing" then + local pointed = minetest.get_pointed_thing_position(pointed_thing) + if vector.distance(user:getpos(), pointed) < 8 then + return itemstack + end + end + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir then + pos.y = pos.y + 1.5 + local obj = minetest.add_entity(pos, "rangedweapons:goldensr") + if obj then + minetest.sound_play("rangedweapons_throw", {object=obj}) + obj:setvelocity({x=dir.x * 12, y=dir.y * 12, z=dir.z * 12}) + obj:setacceleration({x=dir.x * -1, y=-7, z=dir.z * -1}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + end + end + end + return itemstack + end, +}) + +local rangedweapons_goldensr = { + physical = false, + timer = 0, + visual = "wielditem", + visual_size = {x=0.33, y=0.33,}, + textures = {"rangedweapons:shuriken_golden"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_goldensr.on_step = function(self, dtime) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.24 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:goldensr" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 7 then + local damage = math.random(10,22) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=8}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(4,10) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=4}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + + if math.random(1, 100) <= 7 then + local damage = math.random(10,22) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(4,10) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end +end +end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") and math.random(1, 100) <= 36 then + minetest.add_item(self.lastpos, "rangedweapons:golden_shuriken") + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end + +minetest.register_entity("rangedweapons:goldensr", rangedweapons_goldensr) + +minetest.register_craft({ + output = 'rangedweapons:golden_shuriken 42', + recipe = { + {'', 'default:gold_ingot', ''}, + {'default:gold_ingot', '', 'default:gold_ingot'}, + {'', 'default:gold_ingot', ''}, + } +}) + +---mese--- + + +minetest.register_craftitem("rangedweapons:shuriken_mese", { + wield_scale = {x=0.5,y=0.5,z=0.20}, + inventory_image = "rangedweapons_mese_shuriken.png", +}) + +minetest.register_craftitem("rangedweapons:mese_shuriken", { + description = "" ..core.colorize("#35cdff","mese shuriken\n") ..core.colorize("#FFFFFF", "Ranged damage: 5-12\n") ..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 1\n") ..core.colorize("#FFFFFF", "Critical chance: 8%\n") ..core.colorize("#FFFFFF", "Critical damage: 13-28\n") ..core.colorize("#FFFFFF", "Shuriken survival rate: 45%\n")..core.colorize("#FFFFFF", "Projectile gravity: 5\n") ..core.colorize("#FFFFFF", "Projectile velocity: 20"), + range = 0, + stack_max= 340, + inventory_image = "rangedweapons_mese_shuriken.png", + on_use = function(itemstack, user, pointed_thing) + if not minetest.setting_getbool("creative_mode") then itemstack:take_item() + end + if pointed_thing.type ~= "nothing" then + local pointed = minetest.get_pointed_thing_position(pointed_thing) + if vector.distance(user:getpos(), pointed) < 8 then + return itemstack + end + end + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir then + pos.y = pos.y + 1.5 + local obj = minetest.add_entity(pos, "rangedweapons:mesesr") + if obj then + minetest.sound_play("rangedweapons_throw", {object=obj}) + obj:setvelocity({x=dir.x * 20, y=dir.y * 20, z=dir.z * 20}) + obj:setacceleration({x=dir.x * -1, y=-5, z=dir.z * -1}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + end + end + end + return itemstack + end, +}) + +local rangedweapons_mesesr = { + physical = false, + timer = 0, + visual = "wielditem", + visual_size = {x=0.33, y=0.33,}, + textures = {"rangedweapons:shuriken_mese"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_mesesr.on_step = function(self, dtime) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.15 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:mesesr" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 8 then + local damage = math.random(13,28) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=2}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(5,12) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=1}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + + if math.random(1, 100) <= 8 then + local damage = math.random(13,28) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(5,12) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end +end +end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") and math.random(1, 100) <= 45 then + minetest.add_item(self.lastpos, "rangedweapons:mese_shuriken") + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end + +minetest.register_entity("rangedweapons:mesesr", rangedweapons_mesesr) + +minetest.register_craft({ + output = 'rangedweapons:mese_shuriken 55', + recipe = { + {'', 'default:mese_crystal', ''}, + {'default:mese_crystal', '', 'default:mese_crystal'}, + {'', 'default:mese_crystal', ''}, + } +}) + +---diamond--- + + +minetest.register_craftitem("rangedweapons:shuriken_diamond", { + wield_scale = {x=0.5,y=0.5,z=0.20}, + inventory_image = "rangedweapons_diamond_shuriken.png", +}) + +minetest.register_craftitem("rangedweapons:diamond_shuriken", { + description = "" ..core.colorize("#35cdff","diamond shuriken\n") ..core.colorize("#FFFFFF", "Ranged damage: 6-15\n") ..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 1\n") ..core.colorize("#FFFFFF", "Critical chance: 9%\n") ..core.colorize("#FFFFFF", "Critical damage: 18-35\n") ..core.colorize("#FFFFFF", "Shuriken survival rate: 60%\n")..core.colorize("#FFFFFF", "Projectile gravity: 4\n") ..core.colorize("#FFFFFF", "Projectile velocity: 25"), + range = 0, + stack_max= 420, + inventory_image = "rangedweapons_diamond_shuriken.png", + on_use = function(itemstack, user, pointed_thing) + if not minetest.setting_getbool("creative_mode") then itemstack:take_item() + end + if pointed_thing.type ~= "nothing" then + local pointed = minetest.get_pointed_thing_position(pointed_thing) + if vector.distance(user:getpos(), pointed) < 8 then + return itemstack + end + end + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir then + pos.y = pos.y + 1.5 + local obj = minetest.add_entity(pos, "rangedweapons:diamondsr") + if obj then + minetest.sound_play("rangedweapons_throw", {object=obj}) + obj:setvelocity({x=dir.x * 25, y=dir.y * 25, z=dir.z * 25}) + obj:setacceleration({x=dir.x * -1, y=-4, z=dir.z * -1}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + end + end + end + return itemstack + end, +}) + +local rangedweapons_diamondsr = { + physical = false, + timer = 0, + visual = "wielditem", + visual_size = {x=0.33, y=0.33,}, + textures = {"rangedweapons:shuriken_diamond"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_diamondsr.on_step = function(self, dtime) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.12 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:diamondsr" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 9 then + local damage = math.random(18,35) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=2}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(6,15) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=1}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + + if math.random(1, 100) <= 9 then + local damage = math.random(18,35) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(6,15) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end +end +end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") and math.random(1, 100) <= 60 then + minetest.add_item(self.lastpos, "rangedweapons:diamond_shuriken") + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end + +minetest.register_entity("rangedweapons:diamondsr", rangedweapons_diamondsr) + +minetest.register_craft({ + output = 'rangedweapons:diamond_shuriken 69', + recipe = { + {'', 'default:diamond', ''}, + {'default:diamond', '', 'default:diamond'}, + {'', 'default:diamond', ''}, + } +}) + + diff --git a/sounds/crit.ogg b/sounds/crit.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1281384ddb1d0771435c111143560cc907378df7 GIT binary patch literal 5031 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

GuVM%Z6EKNd%YY%X-WTtHYsYY*1G?9Gc-ck| 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 literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_beretta.ogg b/sounds/rangedweapons_beretta.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3b82f9c72463c4ae7f8fcd5430d69e90a33f7864 GIT binary patch literal 11348 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 OvHI2TSt1HMxc>_iWk8Yu literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_bulletdrop.ogg b/sounds/rangedweapons_bulletdrop.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6abe726ce10e51421f8712f1a3ff3d6f8e6be849 GIT binary patch literal 50960 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 literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_deagle.ogg b/sounds/rangedweapons_deagle.ogg new file mode 100644 index 0000000000000000000000000000000000000000..253289fc74d5a2eb3d5df12fa32385648f862a4c GIT binary patch literal 20300 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 R5Xk#elAu8oq1@v=0s$uHinjm& literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_glock.ogg b/sounds/rangedweapons_glock.ogg new file mode 100644 index 0000000000000000000000000000000000000000..43877bf9a444806f6e0b6f5d324f46978eee32bd GIT binary patch literal 19364 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 GIeGw?MqNz+ literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_laser.ogg b/sounds/rangedweapons_laser.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6527660af12fc6669294e91639054a80aed83211 GIT binary patch literal 7605 zcmaht2|QHo*Vn$Lv4#jS82iXJO7?B+!&pOMLKCt~s4Qhjb{ab&CKQS+k+rg9%^qUP zUJ4~kmV9^gzVHA2e!uVg{h!}+pL_1vp68tBoadf<&D`BB0ZQPnX1%|mM+VWn$aRWS z6xV(HTs-~B2nwAt@(lpORVa?`FDT5&lK(WaB$?8|J0ifMarm!xo9d66V<6S|()G)V zDl%|o8Mqvr%q{?47;je}H;kVeNOT2>^73S&;8jnTKXMc_f9|KXw5=%s4FC}F=a$eT z`g7qSyjtcwb9`F;*snZV#;kYv+_E74xYmoTh%yAo zETU*&9zly(=EJ{|5|6p_M(za{o?1~n?#{ei*GL4DR&-W`q2dlN-d!_@>(3k_ng&S` zw3=Pqcs)&U1+<749QYp15?;Inf?fbGsNlv4BmqGFL-Cl0;*1d9Dn_6S03aF`9G$*= zZ`3z!;3=-xIQbg=hphtc2-eakrs-rG{ByIoz<`&Glz8rK% za&7=XpRW=_w2dKp#4JT8(Bq@ZD1mSQpa!Q=(6&6MPtX~#LXX#aP5rAoq+xiD#6cfI zhCDBq(niZs@z5Ua1GtQE))=`r;eR_hoEypVkf9tw%9+czW645RBKUI*YJyX;W9ku0 zIsW}`7jxkKAoMWDjyVhDTgrKpZ^!rt5~~b;mnA{Q`SyRln8VruLZaotNm=nVAVgE{ znUG~v2|@<-!KiE_GR~i@>S*}V{+Ta_o%~qRRG*gpt{sHTIzG?jK>lGl;yZFOXs-q& zD*n<382!+ahoBy-3$OfV&Fy752HuDqtuKSi9z_IIdT6RI3Mux-;go;|y-*|v%HZ$8 zC0Zzo+pil|oPP%?QCjjaPQFL#dGFDn`nBvi%UNdl8;G`K`5Tm_m*SW$b``Od6;W+% zk1el3Az?%Uit)&Qf}roUXnEX{EXbN&qG823evA?&f7~fZ-WmWf`@uKJ%KxAKoo|2@ zYQY9}>0x=rVM|>!4l|yHv#SencpvGw9Wo8}9o!|`G>qN<>VHfJlUxuC_CJQeI=KCN z5z8V3$lqpy8wyykBx)uYM?`H0{$Ete{BE& zFu#4q(KELM^UphOIroPQ#liS!r2sE2aRoPB03rr_ zyvAp8U%`X}YQnB-#^E^5t~;8l(5IkiVTCr~Fd4N%+i{to)1W42OiVb?mh8G{PPAp3 z3AzR|px`xOg`Va@kJe%wwnA*uaMNc@CdiK<6$d^#)_P5+|Dy^$ZiSvw0;!4?0ge`E zj2)=?x})7V+GZ>S)I4fwGQo*Pr=cfCG3Yd$a{zkU+HqnWZ8sJ&H5TbS7V@g(af5ev zMa7eGaXu+m5rDwaDU2_Xvg zH${pU5Y3TB1^6*7SY;&2{%ZMXmVK-ue#l;&SYwWiEhX|gU={V^G`n){ry#_Lgd;*P zLLxT;JVL>P&Rz=EZi^6uMkFBVgor6fVq`Yfva`sy_-;g<(NTfU1y4IJhcM6^j-URAq?-SLGrJ8?{AVsRUIS z!N<%|u^_<+2?teqS1yccdPo$h_V-w?`pqo=ccnGm*VsG6A@2S)c}xwc z3R}4a5ks%Z#u_y(FEg+y! zSIWV>rzGe7Nd+hu9hkOIAc+yUc#W^;$2kiH^u%?kw;MWx3SegOA7Q}k^XmD7!QrNl zc+faU$88-8MKFND09OO0K#bj1$gtHBrZ&=90c`_f(l8`jM>0<>&Vk!{l#KCmP>ymK z$4zfXUP7qWd9O6A?Y;Vbwi5u>sp)`x%9GamDllFqsiReag&VlHng&7<5b#w>grJb% z*~onjEKB4Hm^pZ>*nns-R_T+$S7bba{GKF3L;~ACwb_5FwEqRs06S(Xz>fO+d|0K5 zMuCtdML4Lmm7AF1$E?Z#Q;b8<77z%ar!K|8>4`-n_C~4x5Ts#g&3l)!oCtFivb>$w z6^yAd`?AWhtg~R;a$(C5@A;6P(jB(`{Y~3RC@g%;-hZtreaxjyap^+@p823r@58g^`EaB4KTyVjr?^(#@EgT`p8rK)r6&_M+Qg61|}x^hDP2E4tKt8d(-^tZ|cAA z03!EIpyRQ@Fj6l5vM=MaL!S zYi6L$8qbm~K8ZsI<7D$a!(e(%O0EA>V)hJhW4tKgqtWrSMbcs_OYfy2kCBv>H)qB~;NjnAE4W5psVnZ#uI!yE zPw4L}Iir7h>O%gE9Zk4mRdW8yjWd2!w+0Mc7zhnBQ-{yW?vW&&IpBJ=`mnU$0~U-L zwkfXVn*$%6Z^&%ZuaL6BFZ$j*m6zZ_tuqC_&k3CjZz*x$=s0sVK$z{kWFo@1HQ9PaUdFy4Ff0O!iDI2-GQR%@W#3cUH+S z?|9~F6VvzOWG_MT(tAUM9^qZIx}HT0eWpBKSa@vK%Hq_(suD@=*_+K?)_l}Y&etxmsqf~~EC%@$jw#BYSD4!gm?UvvTY4uoL+lU|dbRppwus=+k{$|vCZFq_i3asiU zK5G2BUmf|BQ9K-Rql?d1HZ)9VLd4;~T7TDTAGPwW%IH|_~vBuOKyd*!2z5b-POrFFz*}L z3R=$2slRyp6?4e;>Ul1yafT(ltycs*;q$)LKh>MxQJwz64}^#Q98&fj=NivE!KQcr z;gy@{0&E0geWPwS{`)&)ThpjX{NQ1x!nDIi)wykwx1upK#(WE@?wPnG%-?Tc(C#=D zdg~{l*0j7>zABIOq0Z)Kzh0F<{MXC~F2vPxmCyysFE73ym?W6lJ)P+JM!oeC`ie62 z#I#`l9SV^d3HGt4i3bzwJ9$bh@Ysw#ii6rU%8L{l<8bclk3{aZ#ffFiJ?N}o8caLX z!}*_Df-ovx2%{tKM1qpG$(O$6RFqmBFgl8o-UZtO9{9l!YXZ&M)^PE2d%;XZqfPRBYMXqHBTOX3M_8y5qn`iSXL-`F5z@va~)t>2mW_?{v&?i`N6jeDA05K z<7U>vm)3^36eIU*6n3SAWH-_gi_Fq_x_u#y0WO z*s0a`i0l2eHoyaAOxBRBOz8Jl2C0)n;;f^3-5-%VlFZ_-1rO_0QokO23?0KzgztO5 zZF=#=g{~|A#-4YXBEVQ5<9)--P5fBD*Z7uGwaho}>oC(@o&CP}mO|vvD+i;ux|>DF ztgTD|<%e9u)r*k``RXsW+;8)@HdAv(mTu0+BY*cs)IV9sQQug1Yw9#?d9D~TnZ3a^ zwmsj<7%|b4ZFR{&lr)-N4mG@T^0z+P)5UW)J5-s!VCGg>^?ZTOBX1mi z^MsCf@^Z~$gt(;ksQvsit>RCezpqt$|Cmbr7OAuyY$qvlSh_xh>~mOuuqJ(17Quy@ zJr+{%t@gM&{nVj^e#aozU-iHl1%VrOerq*7O7=dfB8G)@X zZk|-|+IV}`-Z*W-(ya#7tD|kax_}jYkK)JSrG`I z9X4u`INPe`ZrwU;V-St8cR*x)td9?K8g35TKjb$XZg%@Y8kB2HS1!@cbT(e>K{uR| zDXbKu|4`Rr$k8~6?n^xrsOL_%y;A*EF>b_k?VSA3Tv($np~fIh)kbP4=3&b<)>X}} zi8~2Ps(vr+`F-;-`1-!=#~~*>ez9^j>o1_g4%vRLo)6feQKM<(1V68@<=|<;h0Q3{ zvc$y<^QnRIGcH`G6Xx&V+_&KXZU`Vu@*p1^&UkPyX5(frWQ;f+NVKkowah3m$gMOt z9T4u%r$<^E_dnCck#(dK#JoqCJvyloAkpRUC>#`w7uBcJd?AFv!;_d9dZ zt%Ez4ng$8HgN=T5xNyT~tr|GF1Rao7=!k(=`{b!Q(_Efbj~1{2Y)N532ht~LFHYYa zK0~?OfATOOPE}(y;=m7m*$>N@JA7VkyGudW)nwHa;qHiEt4cAedK!Rc^8G%zy!B3E zWTl-Xw}0TQbRf2%;RsV=vTmPU!%m!=^-^ib{5iwlaa!8t_~4RKf_w42WOJ_H_~vEp z&0j`+Y-f7pnreDi`AM?-N(HXE0u=JKt)oha9Kz4la&g&;*qJjIUBnWZEPsiJc2 z7fZo?wv--)L_xQzM)j(=ZGy{Q`B0we3I1EcODM=sGv#`oTiw_#O(gf!LfY$ygxhC( z!u|SHE2ftLRHdnK^M@B)*#DpwJ*12U<)D)1VCU{ zBl8-gx!s!Ov%9mZ>@OFb?fVQ{-O3LSCarEu*|@5@ak#r!s64y)JMsA2_Cu_nl!PZA z^;|)Tz_`{R_FHgl&SHbf&2!Tuma+?z-PD2C&b`#Um9TOz`TOShtCd?#-KPSZu6&7^ zW-qp~Hy=Km_47-j5R>oCdrW5pFoSb4vmvo%bM%F?qbR~l8)l`ty-pI%h|E+&|6p!N zhpO6Gi_+R~*+Y~26iyy}kQEuK@*B|{&78o;ux8e0vJ^V^Jy9v#%yLgDs){s7^+M*w z^)~de*qQV`god$D4JQkeha_J@-mOk&HotjYNU&XsA;y0=|EH8U0lbapQhE-4SF35>R;opNIGev^4IgYU#Qq!?dz`@ ze|XXdH)ql-S`mg>s=F$$AlD>RtNdn*sPeY7`?M|>Y|7-<X(!Fq%3~)BFU{C&$VuH@=(@DAgz* zM`>>foaU5I^p@U*KC1dGT=--Q=XIby$sBj>8<(L%;L=L+s&znw?Ah5}mxZxD#g-Jw z${dahwD*jgdGvQr|#{{i&Ez1FDx?yN~UECJJu_i zszaCSGIG6oXYYOxG0fo3a2D-F?*z9yHFN2k?w$X!di7@-qC)6`{EYsw=fhXp(yF5s zTB6pi0pM#V^;zLF_mL@r+}Bj@gr2l=vNu2XeuBD8!WQ%1lxlv<<16Qb;##e~2@5^C zsC~2@LDHt~E_!yV56~ZcTp~Jg^-l17TxKR;K=23E>WX4Vsml3;(kP8OfIZtrau)5tHG)!!Hwv@T`D?rzyrEmPO| zVbx=8< z?sVnlK){Z;U6!`dX`Tz^TcgNL_QEGm?5%9Z>z&k|m+amf97X4%ZDiF21VVax9=*Ql z;1tTbmVn5HGq~R}$3>@q^!0d~nYf21F3c~@6-vuy3kdW#=Ir0P6}^DjI1s*M>NF#e zXxnj1=fh(r#2Zn7<^O0${|cz1ZI6CH9Q`W*t4m=uo<)5fMQ^kcLBdgQ!S%OG-)W~5a%;NT&^y|h z>;7R+uR_ny%gfIz!Y6XefC~I+KXvw@2l>Ro9LG0silK@QNfy#ItQfkfXgI<#SlygS7vxk z`lmC0!%&oB-VZI#aO;Qm(g)%3_t6Kb@oyL8M~i*`P&F)u%T+xphgZ=>tnDN;HRn#) z&sLZKhe7{#k$gQ^fApXS=OTweWf?1rb;~&%T9o02$G`PgEqWjTR1@fpB~_`Q9r!}4 z`GaYMm`jU9a$G=RTu^;n$O+-?iO}<$)CHRrcsdUD2v5CaPrX`Clj;9zi?vRFRHugk zIrl}=zCrWMsXu-bdxstz@&N^~yj_wU>?{WMJQn-B4ZEyOpZ_$>KO~@u(Qao0Fo4D+zt3{Er!LAw1+d z+aIh-B(j^W1b$1G5YH;~c?N|3Wp0qpAQs8WwM`8|D$z&`uGt9?8wO8c6P?ZaFMby} z33ufF3~QK+caZ!8QROEbs{Du5E!6+lePjS2z;%i(G%tSZg=>gg5mcEyfyLt~GJj3< zb7}QLhVv)U;&kodi?s~*z(1PP1HeDM82*MKgwm}KTAUMz!(LL57ta3fL**d<0B6;| zx}6W8KjT7!k#e}DlavmT6_Z~xs)dxGnSUoeEV`NTH=;nJ(t}=%L1je>G6lW3ANsZc ziStjx5i*bS-TgvD_Js)SZ`;TbttK(^mmi#30+QOGKO?O4l00XVoInRQO7@$t^PI2s zTbzkndJw((k7n`j$N}WQnEVrt3FhH^n>j&*a?rm9{#WEExRUn9(W)SsR4X}$#y|;z znkVujCpsf!R$s`SMot~SoEdAL>S&T7w1rH@5w{^TiLgR=InCGpvswKka*&KrB%^5b zeNiOZKO%=M{M&=*HGL$r9g;0I$-W_NcRP#wdmh1mN6zCnA+~R#ZNt*o!t?%T?cYK8 z@5oVdW9o%-f|1kxUy;+!NBaxx-mJA|83IOJK za2)9C1o$v?BNpDzw@wR&Yf*;wuqf8u;BZll%pgK&A+7c>bdxrCPOjnoN_Z>m>;ekqT+)AcjcP!L%|{DV+f(()8c)3>KeJjVlN7-r z!CO}9qzI7JqA-XR((*uPA*>8^5C&c*2Ga<=Gf!0ztF1mu1`b3RoH`+rJePD3CVD2b z(+GnzKcnf_t5bd}l!(bGb-hW?$wW`HDXS-So=f^H>H_K@X9PGaAq1jM9Z_@33ZbKJ zaHckyh%lJ)L?l|7kSI)&ArMIlAdK*OZI)iAeIZ zN;G*=?`J~gY$6gpBIq>lfw(0;cQT_0nXQd_qJuEgvzisrH6VYvND|>b0a7Z7`kqWXf~3-qQq1o48I9(&I4D!@E=Iw$S*Iv#p%urIr34&Y*%K zh{pD!vZgHl-x%d$a(AHmq6uL;4WE(D8S99pob za~w_3rv)eUH<>)fGsoi#$#K`=hY|&Az*tLOfh)@8nE-bvtcir%l~zy5V1dbo9|l^( zP^qLk$&dp8cEJhl{z)dxKrAL8b321!Q5!<@LD8)o0W7|aj37exo{S&@IV>^|0p75N zMYrgK3FS6HgdA4xEut`C3@rbG;jryn1hmlO7LfqQ0RVOvuq-OqvUCrO%K;N73gB~_ zIANlgxe1EU9{L0%{8nL@N{Jh&Cb&*~AR@tV2SgY;2zlKix~Wy!L2FxlWGPH`WG z7E)Raif$&DM}j)Jg9U7c`><#ah!EYRz3npGqi?%E&_6ot|BDhOV6nxZ`==@=#{65F z3laV;(pCResgwVsX8%w1{{MiI{#j`Kcbx<)0c6^6Fo7FP8eOFaP-B6QLMtCM=%v;(0yQq1z?Gj>JEpqGlTWkPENs?Aq-kGWsb>E zI01*1)J%zCfk6*<;Od!?Wn(T(GK{F`26GBmjlRQhLkJvhUs^-yP%4x#aT^o*4y6o* z35JmsJsA#MpetKM)=Xu%gV9TFF(@=`hzl$`y8r>o<*p%#1y!HEEdQ}J1GvqRi@aS_ z&>tB7*y7e@802BM78t&D8PK4AvB9yo*KV=Fg#6$&(5pa54!kycOGhZT^~c?AA?(b5 z(fuX)gZ)p(c1!a2lsTCAUr_G1)JOzmh6A0!03}ed;CWK+4uQT1_Y5fKl_HSS>J&zrcg-mcT)@j?g0Q2pPrF1O*EPy=1weO91)T@ zo+JTuU+_Q)xB~<*p}%?a#yUE`a}||I-ZHqLYYmP0FBS5>(Eh-GH_h#mf6=#_ z=36lX2g!__ygd9I0>Yw#T-+QSJiQwnMnO?){<*(tJr}&aDal<^7)0=$(V@3+XN8+CKO10Sn zpn%wnsXG!Cq*va2d#ccMhS&}lSG;`J>b)r6xKk~BUke$saj|-j{opQqE0|*h?$Y-0 z^xCK8q<(x5cfh>O!A!O@XQz0{CSH(YQ<(WoD5sCW+8n1oUtlFsk5pP~i7 z2YeW$#oZkBt9QOWr*A z8CQ6=ujX$xkGaY6)UGa(e@~x=REvopvTJ=82TeZEcVX(76uX)u#{pTGEK#?DpwS#< z{nh_k<>#+_tVHyuE&M;9teKi95?d;%D;eM<(ZTxA3B^9@igf`=bH?s;^ zG%A`q5wjMbRlVjyg|vb)?I#53Pn?%41b6M+e$cvGq}&{Nk?mYgwL!-;vf0xE%h(#n ze$+DnXujwGJ&+f8p@TvvvGK&`t6y=GHBG2bsR~_!J~PrpI>TzodxxuUT#YJha{UH& zxW9jhF{o=|rFC$m`dkTnT$f>dZ2s_Y)#c?wH-A+}x~M*iYn#t##Z$tLF^DYo;Ye!qLqYo5#hj6J@K=jiZa!G39oI;O3m!is zXf`zA%uP!~Iqyr#R>}D&-#!#0{Q;%tYHp@%XXncL?SwQ@>td>em%&6O`j@P8I0Wx0 z6&huOvRm8ZD$P&~S(8F$$^Pz6zI^L5jM)ME+QrD(%G&J64zd_I?m#}>ekUk~3RDCa zSTOW_j3Vbz&sy7@K{G+dtH7f;KTfEx^$Qt>*c+5TxpsU_kxD#!>_^t9d639}ItSx= zW|+kuv^J2}z2^P?YBTy93+B*0Ck~wP6#j^MeUx@YGMF-zTU~a_i+1ihxQ#05)wX7| zoUgC;=4)?k-+5Y`yV`ob^j4bLmxUre3}07$YvO4iFDd}^lnzx}7?<;ZeMXY5YgW`g zxZA*|W+;?L`_Mu(oVMy>%%8ZtWvg3?Nrb;LpjaZ_>ur3zYrOQwb_tP-A8k!@(jz|t zlv=pfqP+QTWRP9mxNlE!CbYxf7&j@CjA|V${U%)5Q_J2iQgnWEH#tRgQYFX8+ADo6 z)2n>nzNsU)mIsgj+&Bw&q9lDsy9l&vX#U-Cd z-UCs);Eu`bF(F5dUgbV>3V+}Cs$)B^C)9ndC*j7U@3EWIyIKrfjSnXY@89b`9ex~Q zo9M8r_8RyQ9tI&G-4Aop1KiQ^P(Ex<=&W#fcncM{e5v35ZN6#1PE_}d!TY5SL8K`* zgdDfN?8{Ue$>WbtN|y$-o~W`CGp*Hm?mk&9nMe~sb=Y71Ap-*v#3J+`jxw)g&HVT- zK*-2jy+iSmu~G|uufL4wn8=JWlOC7qQSyH4EM|tA2~O}LrhNBIB^s8V3<4PYgmfiPVQ3LdIGC_K}-3HUyoAO{u5D zkEs!_>5dQg4>pK;e_X!FJ75IX%;VZoVqIcpE1#mb=a9COjTT0Qew;P2zCL~t-Xe72 zJK|+?sPeI!ur(CX+In*l&kZy`H{sN_HVD5;9mIL0hxBAa4Ubmui5u)4uf0S{b%lm@ z9?!%rnM~9(@4aX8pS3d(OT$N{zJz2cTVA6BTkGw%;e&6(?riPmg1+5)->WEYH}-NZ zC(`xz`TiVB`eV0`J9F16B6T!&8X`Wl^gR)i(@Hn#e*Whjsg#h$S&pQ{nv~;r%aXgs za##3GM$2#gaFlA--dN0AS3OWo#4*Ih6qWeTP^bz(QD*g(AhlW*Atb;eKibweP|S>V~yuJw(>)V zN$CzJ;#ubX52|Y_4{NC7lvD0lovzbk9W_X;?s|=ncIN_fbp%<42mn`b`PHw3McUlY zGm6L9)$uQW|lP8e&PFtz+k6%rcYVup|t8Fzs6l+R7_bgsSO)21{DL z$6Qo@zk6{AN0+YP{fAP^Q2{KW1Dem(v2-{u7uU^pmzNaXiWldJIh7!-?D)al;0^tx z@8&D1vcTsaOAfC9K6M4fBS&!m7_brpEz1xU_$=LGe4MeJWJ8C zOG$fYP%(ZvHoZnjW30F-U5K-XmDdPUrMkIlc{Nu&UPPd_!Qvy$EEzxSYX zXIk^XjKmJqsmtDGBpK`IAeIA;QxSJ3NeBH{PhS=5ht@C+Oxd8Qh9$n`ET%&E%63|k zd*Kl^h#s%1wa3v?Q7V4f8Wuj*PHx)RXG{f@DTg3{9K@? zwy_lJ`}Lz~hZ@Su5(Q39Gw-%!=_WCXE%Y3*_T?%=m|>S+px;oq=S0oKQC{$(MilcR zK1_szc}szm1#@DEo`wFDSWrsO{WTzE$W(}jF6%*MD=y`vRz#-s349XmO?wRRLV$qT z>sR@A46H9EViK}P%x<_ev+MF#9EZEk)-HKcVKqI$e*E0#YGO4XS3>p|=Z#Ajos&@7 zXZuNiJW~(KR$%olt1y+OX)1}qD_Bpi;t4Zj$x+QG^#n5UWk3CVz7t|;V(v|oahG7u zXS$+;0Le~qKG{mdTF2#PT{JA`<`JV}U5lajdck}d%Oi8%>eFgW;;Qr_rjY!l#x>cA zgCf2R+%SYc!+RjJbobOhT(=v_?JD`_^~EUFr3!K+9DTyNX%S2(e$UF1HeRs);iXHuz?!8j>ye}oWB*SITRZfRr*OS^OKcjs zwJx8x&iriJIVtQ)7S;A1`A`Hti(6LUrb^pHj`YxdsQz-;Go6ch?rI(ETBeoD2AA$w z@p_y@nR(uOkuM)i_1GL`*3hGg6o*3Qs2=EAB&~YBD@*^UkPEMZ`C?Ck3HF-&i_YiRB&dHrp zJfD0v0F!#0md3bh_(J&+s8@8Bvwz2m>>c&}uRhJTQoPsQsG8T7*M?_f_8C5go9QGY zf_X-15}E7UPEs6v=L{^3;3F&(=eD;mJdkr#xh>vYbutcVbhQubI$mr`#$A6=WqG4y zM!k{4>9&;a=oeFmdMVycl)lBxI4a5f_c&s^SyZ})?!q*aCVD(yJ#B>i zrr4E18NCy^m><;`E%`lhsE1DY-ibD58|-zQRtgm+0Q|HWO{zXx_xfmHqoFx|bN#dX z_s_Yq1W~h(j@j2&Qqy&zxv7J#$3cshbS(=Oy;1dz*H!sT(I~5zSMO&LG_nwxkLXKC zZ#w7B7LsYJwUXq0sng$FNdyYDMqCknx}2XLjK~D`wD0qmxZ2!@PhMmiRX_vR5lV8_ zuf#>q)XqQll@pEM4_aS7ugL%^%H1$7H*murw)~|3o-p#XaJA%(Fq070xyxM>O8S>S z14j(17@nP7BX?X)JnZrRJib7yeg+x|JZ>LffTafzwZNawH9R~yJ~YL_&d$xl2jztF z3G%P9b3vi(96W;4GxHqmP%aKO9&R2eE0j~<{%`W#;aFUa$JJy`^L~yiqy&+CVxzIL zpKo9Oi=3O)nu*hu`|qs`wADH}ZVX;m`3ammZWgZmVw&WhPFjvE<)L$|y1JKrF`pBe z%6w@J0ABkHb;s_N<@uo=~Nxps#Rgu^)%oiD@9&6TG97PF)T@|)6U2^+y4nBFE zXK{WJhw<%~=b$=?3TOOS>!WbI1H&?Db{@5p-1iklfs{`Kt`}FkxEA37cAPhLy4?|D zB>q;h3NydO5VM2H{(hoBa-A&T1pyEoi z9pwomWMq3j*@h0NOq%LNV|dNNd)}t^ZL!hkyOWc?cy;S)PwYs0~vsc1-F#pQq{Mk5FbLi6^$avpu8jK}aUmK~B zXK|P3fttWJX>5()5KdC48l3NP?Rm3VeVN8?^Oo1yO~=)GNNB_rr8|DQ9A0dD?9pBZ z_P1}YXHXo)@d}ODip=NevI2{8?d(4?zft_s1|PlMqu5Q0SKvmm$u(sUp|l|*c|Y1unOJiLpkmGLOA4!HhHZH=qbMp0|qH*Mb?jy@+lUgh;pc(&@JfJl`pJ z_Z5yDRZ7@p7CefsR3+vgMQc-khkQid`uGuj6YEJ^KNE@@N9xT8>D0aLwlWh4tdrN< zX8nG+5f5|3U3>as+)h`BNV@nvL8SA87UwSp^G)Dem|C)3?rzp`NR>(7_*a_Fsjp}E z_=bmp6h&v?egO{(uQN1VZRVeBk;jayojIy+j8S)ZSr@)E{2gYepW@R&dwwbD zIp~;I8Jv26CqGSi_N6V50@30TeA;L{hPFyP$WNVqA5-%=uZbJG;7|OritoV&sWZn$ zBMr586z<7L4zGlLKH9`Z8jFdFvFS`-j(!$`G+!hI?&!ExF*WoK zl2Xw#J(x)yc2K~OzHT+6V&XLa5Gw5Gxh8uZBhiI6c$CzVVN$3TSam>#O85~N=eseq zQB%S`x+|fxmn3;>;kR+uY2wVg&EMh6FU0d7WEdak zMeTxMwma;zFq>vw&nu%?x}Z}InOLoFf5@&(6;sm13(e;9_?i-4Udgqu9aAM7e?uL4 zNccXAoscM*nEvjS3Fc8!e7`G0p*Ov$v&Cj7 z&EFB|IC*`joYGSa+EJo%iCs*bNR0^v{&$oG(r~)6XIyEDt#_yxup{pI*c(t@p1>r& zuj`8wabb!nZL$$XdO>OuNsrNk#jCX{G$`0{#016&#+9 z&!Lz@Z2*lpAi}p*gk5D4mzs>wR*C2FDY=kUkE7#8hLPO-K3ThHBjRU~oO*{*G4PB~Kcu;qUxD zl5(22;Z5(;?idy04BO|!x;0mI9Mwn8$|Q0)sM3Uz`A=luplm*-a`BtqK46{QWIm%X zb~JXa{H%~9vd-VNmsBnY4c1y%%|4g;M)+#quZ?V+zP-FebeC?8hRSi~Mm?rlk)L(w!dFi%ROmhc_e9@fVJgaHWKf9=EA`T6OE#s^yiaC=F%t1-+}Micp?>+oCcy+q%}>2#u6 zlp-pbr1nXnA{+2Ed+gz%6hZnO@g}p2_uZj4qGrPv!lw6dE+>}-8BTt>%G5?0sytPs z!Jt~)<`0X1IrZD0t%6yhUs6x}fnIXupyH5Yy12>*0ufaj3Zos81`PCtO{vxVcUL0u zMf^J9C*ggFpDLy2=W$PiekWt!d*08wBMv7`XBV?4o15jP9Czi=9c&=ufBo~ubuOzY z(s6XhlYas)ep51S`_mdO4s}Rn@mK2hrFd(8_+c|&MzOaRGZ)o8R!$75^2fmgIs$0An4Y`_0 ze_d?xuWx3!A7`tZZf1pdFfox4L}h}#wo&rKS=D+A4YNo;dU1r;i6x?jtJ57enbxcJ zhDTa<{tfEy=Qd_XQ&bblEeFwcjl9LRp-Erif;Pe=DEj@bxfPb_BkdWnE}!n>i3&^!teO~UMo>l7O=0!;%7!zxulkL9QNFl9}^`KD&C%8YK;rXyb&_al>XB6-1%MAOR4qQb<^{N z60WP$14T1m7?V9Cbh;R0&BRhBT+^-Hb1O27bWf#ffy}yZCs*w#jc{GXkWbQNly^J( z=8fN&K-fe)MhRULk-|HgU6mBYBkk_&ilzh3G1ab*X747p(g|i#-%9?p+;Q)y)3ZqL zK0Li=SeKPW>LtYzQABKyW;7R~`c!puqZom`9kQ>@I9L)oC8MZI5lj_wUW^&w^U`_# z1@qXLtw|{a_yC~@k`iYi-JfN-qbx_->>HO#WsO&J8QRU#QSiPNziLfgZ+}|3PU0&N zj2?qd!mU@bAIBvSg%K8rwV*R5zoV$!bD)Lh;PN_N(anC=Ce_Q73oY{6S-1>M6m215 zNJpPAFQ=}t%7KJNrK>sNdl9?PS3{r~66!l%@QGcZLE0g`xw%~-a4D$O zlv7emc2*lj6PEdr@sYzUixrCzJ!d?o2PEdXfU=FUJTuzMIr2d=@RJ^2s8R6ufZ_}E z{hI;qBuh>(ExE+WWnp=s$50;QQM$yq;9!431iZ50U)Nd2Y(8DDd;6IeN?tbdfao-r zF$~bTNNOH{1UYDKnS22zgeWt!qPk^z==OBqBb0yQobyy1d)V;Mn%BK^xfhev42ir5 zk38$CbdkRyfP50#I^ymWJUW$ZFMCKqG-3Sv!Aud&%Ln`2M*FST50YqsjB8`7ti-OB zRz*KI6i;Sq36YblXGIFa*H0VQtt6*CBYkwf9{#1>-4r z_1Z5T-=5AY|DuR{_`Urk%&uqm`+WV&umIZk%8}PNfIdFzIohUipbI)_=C}UbFZG4o z;b8?b6fvY!%EXFPC~9Zc@~6?@SJSk4pO^zw9$^UD?8GrBF!HHgNkCR>24VyfqwlA= zktvT=5O`dN(*hV8H>^C5M7C&!5l)G;+e-zyz6IM-8%`NZ+WN>o(=TJXjQl#Xyt`P* zVHW#l)TqP1+fd$iNQwv`99%i-+B$P=gft^*giNWFWTdy! zTRD~UVGbn{QF-g_AeG8@Z~ESPf8Y20zW@EZpL^HyT-SYF_jP=(2e+^=PiP7BV{CI- z1mxD=-3QZw#qWv<3Xc^%f^E74K?`6&dtl<<>o7Ob&VPnzCk))7d9_LiqKNY6=#W@s zqz&-C;k$R5xy6K`BEy5c#q3eeC<}9Q3v(N+jfjB;xIA}7?Lz_ns2>zqGjr7D@TeV; zFsVgOXorp7Fh~ZFVqJ~yv%9h>5QKmrRK7KWaZVtlG7gu;QyCXT&?-SKl~E~z{#k-i zRw1eoBnc6Wh{`n~WLF}Zj&jP1nZR#(V8}Oek_#HgPutCgFi7QP6aFM3+CWCpPYMEN zBFN|^Bgk9yjv&QLP?}zOe$WH-IbO^IbTcYR!J-9~}=MWmzS<}tdYmmbU7$o zy|3)a#0iIE5f6;`Trv^8xMX0PWW;))z*!umHA1rOWkj6Q(dE1t1&irLwNMZns0lS^ zBb~2mJ?z$Ud#B&2jPX#h>$P<3wIcQ6n3O#%iVv&b8%#R5?FB1^<#UqdQ_G?a{A-TX zGR3N+U{LW&e8D)nG)VLE_?in+$tjnXKp`TN6w4Or8JDh#D19DYG_~*Ngo{alizP*; zfr`Tm%Kyg<^~px3g(iTUvpCY2p+0~;O6D5jhl>8i?{hJC zse^c1{csM$P7G8Nuk2T6WL)ik!mGhKp$iue-GQItEoKyODhfogv<4jsn1U#NfIeTwk^9wg z2!md%cK0&X?qy&V&Ca)4ZpsGT?@T=`?L0v|Q|LZDZ~_B!mNc(ZN45$1xh&d_v2aqwi8}+TH^sSh;=J)cL`y zQ8H>s@ytiHzfSrunZsFu=B&VHt;BOAf5{x9 z^l{s)315yuILGKzUPOJt%!?wkm!(So&YbOODLd1$b{;J-N-zD-=08dJPv$tq=r@y1 zLFP36D|7B(wKjrmsy21$wd#Do4yfsYbnNvass8E!kU1X6hgY?ndw|`wJ%H(z4LnqE zfbu_>z_7XE620-38Z8cyb-2p`gY%WcPL_Qr#!Hvfcqg4hSSnx@SHxvI8{*Dq+uutY zFD9Z@HxZK%t8B7R@($OFJSNwPoF@r+fVjoBVDGEPbU3#bZ|cCx7IK^LPW+r64`WQ8 zx+Pk#Tse4xm(%0iTE%gvNomS_ACS}uLt^-LN*e$*$+Zy{8e?#;~SSv8>&AqslKtUTy{~QpV=s%E27jyReO!5&Pp$+8H z=MqZJU$}kcLG|iO)sb3tSC%)MeI*Xm9tr-K@GPH6o0i{rd#gs^h+3BaoJQT7Nm`=~RhG9)n^!|kC)pqu)rnX17Ei{`SBHhWoq z4U*`L2CSxv%R2DJ{IWixb0sCixs`Xe2X9nSrtFEX5CB$uu9^!GTiZuwVwyA;S)nT$ z!EL30YSM%X$#QPZ2g03!aB5>dS80v$saOtRmCGTwf%wN8RwQK+o%sR|(FL4}NW6N4 z4BDCg0x|;!b~slE$V3LFmg?z(V4QKgkX>C`6zj86XP$nYa3>zrXpZIi^WStrQ7277356>>s3N z;DKU=V6u;Tsj^XYswQgeaonsI1l?gvKm@idy;xL7 zM7g^ojhyA|jEHH&6J;IRfTA%94zd_}o4t&IpaU<9ZWQ9-1_Gb}rqP>$MguJ{p!pEz zt~BXrBTP=wPZrt)Qn?A$sGcmX!BZf@#UWr(42w%<@C6y< z@X8t?K?W2X3nK6a)v2N;k7@!zGvGio;$mU|Wy2wY=mZ`3Fho!re!AFF2K$_sgfMR6 zB`G<`r~(9dVRhiAQOO90DS&X0DG?#~+#b;WC6kFSLE>w}USm z@P*V2>{K5$@~W_aLBurqGTQ4Q=&=+Ws*+glXlENEbPu^sp(fWS{_i56aLmS_<}zbvx3u0g{pv$`*18 za?Q!HJ>e1%BDqE3M4GRHvdV=+r9o>T-+=8caJE8bX3a7AX^T5jw8tz|GD=b}tr3RI zW+$mc?HyNiyZ)!_8b`j;;zuzI(t#k3B5K8o0(_Rz@uk^_6U#WtIVxNbzF;h2FNN6p zQfX;vp;>3|J(JMi6p~zae?rn=5e-%unZ@rFNii(`XqH?D8W7PCeKd>248#`rDPzsC z<4?xACdWnxUtr8kSDV4~<zQY`OHA(lJ(b>i`5G|^Dj!bYpHzrw6fj&nW>V`-{G-N z7bkT_{moy@Y2K))sW_UkbU!5br1$JN{`#(Wml`{&a9i?c_wF-UiHo^*XExMc_}a$z8P~i?vDBf5%ZoEhL zvBfH6=3e{i9$D9BQ_TK_kVw~lnomw3TCHFS`gl_|Ls<9meXZc#+PrJGTc+6;dY`W! zyw!GD-Qslb)RBNeB>LX`2kVl4wf*(4HW4w`UQ)(Os_Opo3ilBP6m4v7v65`jQPSIp ztn$gdZS%Oi@$0TIN#~r&x89~jk$>zzJ$$`=v&bdiUrs>sH;VV68X9!ngDU8DFcX4Z z@59m!ck+Oz#$NAx_h;t4g)&{(^mF~`_MwjrSBAkKHwbA`a|OSVXIHlNHEVt$?C&=0$wfMBGV8alep6Lj zKjYX?7zx|mP>y!HJr*$+M-h6YA2=4ddSN)mo73M+S2Ah6_~mQTo0Wct66x)0Up~n| z8k=}UUe<_`z2m;px{)=B8Y6MIwRuRWc;0u$<5em&b3CDO;ty%asCsI2^s>^EwYcHr zPs{(VGP-`T?9aA(F1zBq+bL};+iA%54#yto|5wAh9-Tp20@i4<#Vh;k$%W3XQCN$> z%i|SUQhu8I?K_dh-sB;nr0($J_1S4Ag>Vpbe-KHGTdtI4!y$EypvIloW?u#?16H?2 z;euN<2P>y!KGI^9^`qbRe^Uw>%6y=)Pk=wk>)vsiwL)H}xO`j1F0ZVIbTi=ucJvD2 zB4*19p??h}rM1TGKu=GgR_d)L6mw(rj>-Uc!OhAuQxiUp-)_DvQ^fDQuciG?$VY5< zie)DjuJx1Z>4M#MX{W-!OPlWAg$r|oHrt(Ec5+(Y9R3LR+}#y|1{3NQrsn?`y1D;F z*VBiXxhX++k?ooG8EZXPjkjFiTZ*5ey{6niGZCA(@Nl)VtE^UBT8aT_Gf6vV%|q8y z!l8#BhU#cMeoEkLoU+G z+i)m)qSU&^V_$WovEF?~X@`pE@(Ol2yCM9vhAd1{Q^r+$pfhP-`)Ut1`Sr}1)I^ki z50ijB*57(@mgxms{|A!V{O#;A+U~hbkKiTq662xp!t+t}V<(_vFlu*|{St^B7Pjzs z--ZL%Mw>Zr}UnU+?g z6?)Ic+Rqx4G?{@?eY5oS_M7jzx6^dlBOeast@Al}hpiDEVZLS<`S$!hsnIqm@4ihH z$7zJ3{qyCFcR8mGt1q|@%)ib(nP3rD+}FK#Ms-P4#(2olOpgg9vcz|QK0rO<*0uEJ z<<*MW_%)@UWCbL5-6AH@a2qwYu<+O)rizO-pu zRZnl%vL1xsBUi!8V(h_jKmRLQ%M;B5Uo(qF)_&*>3SB>69j~OzyQK1}mDa0>CF*;> ze_fEB(6IZwuEyV8^I>Qs$acAZ&Xt8vYqhGJBB1R; zcWuxIvsX5_M=LAkk6nUpE1f)eMMxRVWUW?^pVzhdY!!V_Z+Z5@ep7aR?-!Ne!~S+r zGkrp%31#%q_A8TcO5cD79D96U9rCo>Q>7iA_X!v2j%j-etY0_4`2Mbtxh-R$=)2B=eN#&l ziaQhXzS{0(MiwrF4W-!|7&DGO8$DjP+SG}4F0^1x&_Y1Cp(ouxtr6YSam6sP<_?YYTM5NZ9&fi#3Nwis~ z0ztdx8a9kbKFsSisXLQ3cW}?g^s0-pv0v#t*U6#}l=v_2H@?@c3{PC%mnmCS_N{)` z?>FY>{+zUc&cC@l@@)US+N%$YaK}eins$2G(sZ@Arjtm<(F=!i1gEc({J*@*#eZd5 zZ&Ym!d_(9tK7VBB2dyicr=i|ciFON_3$pt z_m$<%h(XT2r?$2N-p6D&g`&CiszZXZhu3aoUtV24tn->n=s&p0@%TjtoyK>6s$_h) zU=9-D_D#)u+o8BMeo*n!92tDo>^6yPojbYOf5)3{q~D)NaH)!zIa-?j1$X9i15A#> zd2LAyv5<08p1^v|rBsGKhP}I&JI~e#jrF7Z-Q6xROJ8@OtxVxl>U+s{X;hN?ZkUzM zS^cL?$4gZ7Qro!jY^?ypoSMPuRzxxTm_&yRnh@08Y^eI^@jGpey}#R<6WL9^?+ z{Lv`XhJYbh>gxmLcLxrfvfS_yOIiA;oUGz*ma0h^3p*-PHzjvdYBtj0)x}}kCpYcK plT5ZRUz-2dfomj_Wep30Z`Bb&+j_t5KEez%JNWGt_|Jgce*vXMxrHWI z4FK0*1ANi`{B1(hxS9Fyb~6(VybA5$vLb=rQ2wV4Vf@9Tu zuxCVd zK821XApn2`0GKjGNF2-SCk-6KOMDC*D{r8?^$iA&H8;?|2TLX)D+&O>1Y|g%q;IWY zs!)hElVXC$x|mY`y;2TEJd0JaZOLORN42t&bwf2MgdK-a{}upllMD`XBneE3Ig0$x zU=hn)mTA!sDbMxjhx9N-5D4@#MW_nwloTh3?^f3hiQ{v>9g!ud{X`0P7M`5-B*WMwz`g8oXH$f+$-~%sJh-s`>~Jpt+EfO{)ddsk@sv>XlI!tORZi3H zOEdahZ$$XNjc{Xj0FWUQ>Vk3gq;P2n3M1f>2yNjBxa5R3;(yS>{`d>12wI*^rb8%> zV2b{qZ3zY0l7tb!3I0j~36zr8*`B7P!k}UVDP3$8ND%TTPgNA|qyCQ>ZyM^!Q!472eD6KNDi@?{Qu(j3xy<> z{WGn3Hq}w`4@6UpJW&1*s~f2QulvXVK&bm9M@&)bcA$H-M;Szk6M5ImHKll6tgq(n ze6Gs}vGN@F(69Ae&+tE*GXcOqy%-kD98K-f3n@p1<8fA$6vc5?R=*h#_{>%JuVJqm z^k;lXWQr_)%>=b$eC@`O69{XBkMmr^KfComA}56flENaEz$%u4 z`H#rqh+BP-u&$TFZlA)DmG01-y}y&svs*;;-;rY$8*LYxVD~heBd+Lw*8d%Z|Bf6* z54Ii{7Z^ER{}nkM{B)1OXnMn?GA1;9C;_UeMJ_+4tw!-r1AvjEMgF;#PWcPC@AO*W z)|0YpkqLv8|AP*0Y}%g`{kWCV*o!0~d_z)1i$_`@$8NuofLAqM~p0vH}7 z3JDv6Y$n0_`8Vjma4pM)4~gN>N5+X^ZG^s$vHlc7_rzNT#KP5PD8Pvb{bOfDy7!Vc!dTaMW(uKy z5@a|PwKf^FLXDW1RMVaCo=EdHowPP@^j^}tt0t%haz=ow5=I~z)e!YJtPt92`X{Or zX$bvEZ$z54F`4`X1p<*S55fqaDAP1!Q!0@7hBMsTdtuVsJk#2kN_}F&8<8Glon~y_ z6l6@}Vl0|4EaW`rg}5O;bvC7no@sb)u8lC&wVn~x(WeYvph{@@Ca8co_J;dJ8K+sB zHa#~M^I6hO(4R^(pY&d9@-~LhrEO3}cRPOW=G%MYG2il%tNk@uu(jSF&Y*&#h>25B zbg<#nbL&5x^?#}9PDU9|rCFZ_6~3r!d)5DjxB86}UE`}eJvRuv8Q3Scsg2Ir5i{8|*WckVEac zkzWiPAl>5z&nYZP1bRxW1|H#-z9ok$LqJwrsFEQu&eD=`sB#S=Ub!!~_=^}vMF}Y! zQc(}GDn(MNK=~WSVb0v$w0~JaD!RbSntFr#-Aq;q%6*xjaAi=qL02Y{NSrgvGX-Ro zmI509{a@@}MMMHrxwJk7ssgSG3ayQTf#u9ZHq22NoS|G%4}&^#HyFTGguO{%c%^SC zK^gTrjt<=2H^NIORXA(wDIJ}`_b6a$b6#kEG=p=y$yL22O5Ks$lu=w~ByI5*ZyU_3m^>G0?FqFHQx~Lqdc_*Ah#pcq4z4nz#ZlGM#3CR>*HbeHE$SsV%w0sg}p65D2q zB$3?$5wbXiH;7W?7qI+`gh6+15Rg)@8w3)D2LPOIU|IB9%gQr683iUzbin^6aYDtg z3y}(tZYE?3>_%aza)k$|Cb&=hAOdNy2O8kptUVuvX@R8#Pe^B8#vWY zW;;T;yY(Cgn*m_{7B=u2rwu#+{aKzSElC>q?Fon zKx_+X5fAF*2^O%qorwU|1U~ZfW;QG&Y!BB6#H*!E==;b zNLTq+rB3;en*Bf3`~L$<|7W4~-*pnS0+4CP!v?Og@8~E#fY9P|-RMX{1OU_@Gb7?} zHc|<)T@pzoi(4TC6~ifw(1a?pgYE+@EdfiMEKeAWlO3$L_E05X44{zuNegV|(s3BH zqJB~w2Ml_cBX{@oBM$b`bc1KLU0_b(uGe!MYL14%9BS&R9czS<<2Ny(=UBsBiZqC? z?ap=N23^@QzJ4;-6O3L;%K_mj1AJiF#SI8mdhH&aR#Nw2bor01nZd^#+4!4H1^t2f zk1cLohFK1JV}YR?mjMm>7aN&$bMFQlNg@E=1HB4_WWjqQH*_Sj+kf2c2Extz7u{cy zKiK~a95*C?FWDnW{{cfdPD+!e2&i zsqMH;2aD4p&I5DON3OJVC`WP%spn9$4*?jrOgI1^3A13B3>rCgFDNJy69S-KcZ~2G zVPdY63g8jo^+bApvBv;NB6|svWAz9~$tuH&EW`mlBeP!YP=e>r-#)|N7U;NTJnzjE z$%M%q+l5A+6dFP1;>Io(zt#N8(;m z4%ZZ9IL#XbZr5rH7yCOGdAu*#omg{2uC65-R=QR@SwCj~E?JC#>Rt{LtyiI8n#u#1 zR+L}AYAK*ZH3ZIrSkYKI+T3RMPjeso%=r!xUQGtiIBj2OGR)Uvh6(QYdrHE5Q5gvu zPo5$8iRe10VAbs}mrgcp-qTx{b);Au@TsZUlkaGTyAQpu?&jDo8`Oa$9pXOF@FZ=~!LkWhWj7!&=Xe)M0e< zy)dmrIcxGeQ;&`|g<|hNe^Q$WThET`h9^$f=t-&d+pl;IP#{11PgUf1>dsL%>_sXe zTr!^Y?;e}Bd~3)Ko9QwN6(R_c_Ku*0hqIe3q<9;bF6UJxe65Q6xQW5Ze9(<4K9X!p zfW7z=J8geOHdNSZLV9gC!LV!T-7Uf?#`|`wsp&uHmO7RPTX9upV=~$00t$j zH{XdzXxHEcG+i56f{_5g7d$kdy!l!3o9o==VgJ|P(t^AUbV2Qwr@fPo0Kw0YcAX}i z(G1Fu2Fc-_Ul}l3;9bgPh8CZuS3j0?WTIAAr_xHQOW*CxHpHnu)9SyS&HZ@eg2pfK zaokkQ_=Bl))Ib2^+LO&w6(8pLp|a*Y&agPDT-prMz5u~Wj{7N#0XPGkEBKW;(QF3hA$QXyf(SGI6E9WocPsas-cmv zl;YbU__eMxMCtAW{Y<=?HPQcXEROe2?7!Hc)k=fx# z3pOhDOTJt$zbWZgt-6@$Gg+Ib`wa3HMoBtzRgdwMOd3X*qAKFK(JEY}Pfg@Dt_1xW zjD_;a!ZQ}a9=Eh6NJ?MTJ$vE4T0On0L0=MZlIGd3f`xg$ri78K7O#jZPkhE9$(Qdq zZY6$r*Tb9WLlx)Sj0Bg;HG7i1=IVO^iMh5FsTy15oytHP{st4#W|)3kyt3-cwBrgjQ5De^VGN48If%|@bK?S73 z?f13fvI^s#K<5+&lK`f<%`{4F*WJNlY>HgiA?N2oMXR?jGa9Tte_F9|wafJ{I7xls zY%;INa7hZWZJT|YoX|ycAb02I@3bm{v=qX;3OfN8S&q8^a7WSP+IM8(>ou)LO5(nf zvT{K-0kuiy?6cEN^@WGHGuaZ%nKB!)vQe7bTUqnsm)DoRl&u zGjeN6>-Y90yEOVH`F*-SxnXQZG4jh8Rpv-5pSYhj1Te)4te$$O)izXW>PkJAQlf3( z??&69EaFx*`OSqT74JwQF$fK?S|Sz>8f<#tUErhMZIq?GBV9`6*I9Ck?>s>u;@3(zH*UUCmLwF9;<8CFIu4sf)DxE*Hb4L)+$y|XgCMo|oU~OEC}&isYyJ@C(A<^_3jBdx6Kc;Hou%GO z^9m2>aQSjog+y+&zrVg*YoMY@wF$8a=nV9LxH>8+EH$?!k0MvtE|hy)FoZ2(tk;nl zch`lbFYQ|^1j~3v`4}vIPC6=)3z^+%xtP>(ruBEL*HoPx@9ySs6vFn1njckmaHdo4 zv|f z3!UX4^p~6^{m|3c85c=)%k15mNCJBbK(jpJu)w528tKxwHWPInZ3ySRpgCLb%{$I$ zaMgHY|81YM06*&NoSn4atHDoWkACRx^PD7-AxBF|Y=k(fUVnEoto2K4q$eIDafw!7 z1ua+^9p6US4bQWqm*x)-n!ez;S}Q0R|LUU1s20aR-#(R4M5x5sTGU5E%Iw~d*fP`C z?OKx58OuNN{&XGcs|2mUw@KW;TPu^E)Bf64N_5_-iITsp6{zHGNY2Ni_6{Q&t=u3= z&`Mh0NEx@*Jl1}hKg))G)w^$?mgPX>#+-PPiFM+T1i<+fY^)L(0JDAS+Rv-!KR!FX zw9_Z1s?arQ%g+pIX=row$Clg?Ufxmshf`Wsgzbv^KCUcKi4F`rS^CcpdRMg^bDBnP-Z< zDQ#neKBknybVSN01SJSt{3{%kYJT|Z7*;8<@%S}S8_tX^ye<0uUhwQaK=U@ofxNtP zqq-zq^<&^Oi|TR|u}3s^PyxV;S>K&RNV;WSkcgryVk*56<&4d-~Ce3Z<`~*?M z@#CRz6WkS=fWZEV{~V-{0L)-~^V z<`&-Rw8S(HjZyH%vnK1u(fmJcNV^+HzxR=*UHPoO*+>YPz2>I{tV|O3%XsSNm-9bl zY=mRdVQb#g?Jh7fIPv${)=rhW>?Dz)Kh$qpJ*bc$EKL~?#E6GsPoSCI7Vu)Q!7XH- zce>;!vipFC{{1;0gVGO{`{B7mjvw*A6dpv7f#>WZ8JtN>Z@+cE-)0h$$Px<{ry~nu zNUEylcYP^Q=v^W|E@PrFD}Tf-fd)kCP^I#q;TL_7)(v$-`@O^0oed|Tx4YwRVC$>d z&tAdTB-ItYv!oGsMPv?m$tJRaWVu%o+Bj6yc8Axw58q`i9et%TW;9#z|16g|F{ZlK zR(Qa?cLg3$lqkfIk~l%;S<5WFQ9s*=oqjd5vgT}lPzX{|rukMne$YRLT^(xC6LK7- zo^kNiRp6l;s)+W9+C`wmb==noVwd$(?1Y(i z&(Ms|uPQPgXQN1_rp@}GcRh4ep^4aI1UOB;hYm$;SdoLieFgqkFA3)z32_dF-|q`P zKOZof-($=O&9sm@V7D z(AkBas@CrTCR^`B8y(V1%71bCAFpf$-1!v(PtSVcJNQ-$4G4u_Ox7196o@7Hg+{wQ zx3suV^L=Q0G3*Jh$&R)oZ!G`1DAHM^KLgEX%=vCt`Nv*vEt3qN%%g5w zUE1cZ@sFn|JS@}!$h~zG)ckjqx{KS#O8R#m1{4E14XgC?ZOT=@E}CuNuUH?|#yLLA zY|UY1N@$Kdw^dTJO4mO}*$ATR)j0O&(35|4P_S>vef*o?3pp1Wn22U+WiQZ1t#!7! z(rkZVsE%Qch}PIsasy_8Kh~mJ$CoRlGp^gc#LjHCcK0S9BK9kH zrKNNUH1UA^>3thJoK;f*KlgI(y>+d+%pF$2F+mToXg8a`vOoS_E2jJHn_q6Qa1Hn7 zk87##Qp#*oYBqZ>i8i$R6@Dx{>I8y+ZzN8#7Jn7dgVUb~)m5nk#L|AZ8R`8ThgVtV zX;`fCbiOK1K?s&r$vZ~v$?;v$ZSvMOgly3~=u zAEpHkK0eQ0h^SpvJUo!mdxpu8(>Q0A;(^P-NsGns^`to%_;WUa`6lr{XA?Ik4Yoau zJ7k-4b2F3k!wZu$vvZR(U#5me#uqd9KM;3bV<`*uu^t&^$z{x08K#IbKJ1{*GKtL* z2SS5W^Gx0~KWLSDs*t)lR0+d!xo8SL{&}Tup`!J~{MX{(U6Vc=OIw4@rycJaHkkDU ze{gT9C(QTiG%Tq|i_CZlTjG!L#Lc4aMYnqG3c1@AsPKPO+BHdcJAW_HJ^1nyZ~qBx z+}!x=Tx}p1ED7Er?ySf!ro5H8)$t?p4gWGhT=%#$$-M_c-0EU_{_?wcD1_@rY7q2j_ zT`KKX=h(~|FUuCjJy+&#RX4NbM(g4cCsT~w5n+ldCkjF@^i6ttF@1?{YS(H^WO(#& zt=5n>k5er(f%OLlXAJHaJr8YKS~aQg_BMnYzCRvgo7A+jR2uF`H}`i~eThq?Zg@+JXTK*(*8Eu*pnvGQHg5oCVI#qzGT^M zHSNtIP$SA(C#k4_di1*YsZ{YVHM7TyTC-f=-egdW$uN+_7M z2?-3k7z=urwN*EZVL4|vbBMM#5w$@@DQ03k#8@mv`UbwG{GZm4(=�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 literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_reload_a.ogg b/sounds/rangedweapons_reload_a.ogg new file mode 100644 index 0000000000000000000000000000000000000000..939ad80ff00c1113e9ada8957b060a99efb1028a GIT binary patch literal 8771 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 P_jYafs5y~Zzzh8s$`Hg8 literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_revolver.ogg b/sounds/rangedweapons_revolver.ogg new file mode 100644 index 0000000000000000000000000000000000000000..722af138935db35783142ab1e6166c4e6b5a8e25 GIT binary patch literal 10876 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 H0NMWl7EVo0 literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_rifle_a.ogg b/sounds/rangedweapons_rifle_a.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6e02c6d2ce48a1699db0db18025f89bebb59a77f GIT binary patch literal 31830 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 literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_rifle_b.ogg b/sounds/rangedweapons_rifle_b.ogg new file mode 100644 index 0000000000000000000000000000000000000000..846486c79276ca839708ff02fe45be49adb19acd GIT binary patch literal 25158 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 literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_shellhit.ogg b/sounds/rangedweapons_shellhit.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ef494dd7d41eff62e01cec4e31ed16726b923100 GIT binary patch literal 6457 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 literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_shotgun_reload_a.ogg b/sounds/rangedweapons_shotgun_reload_a.ogg new file mode 100644 index 0000000000000000000000000000000000000000..aeeb45055df607d815be0b9f62ac51b58c448411 GIT binary patch literal 6368 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 bo49K>Sg-l&n6mTnV;Rv3TUlm)S?#|8wB1-1 literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_shotgun_reload_b.ogg b/sounds/rangedweapons_shotgun_reload_b.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8d18d5dc12b39ec1dc4355527175e4d4275a32ed GIT binary patch literal 7029 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 literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_shotgun_shot.ogg b/sounds/rangedweapons_shotgun_shot.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9a154e5c16e2db73c88b362744e490787b59dd87 GIT binary patch literal 9431 zcma)h2|SeT_xEjI(_{-#BkPDV7>p$v>kPs$c9Aib#*&?i$eJyCC1e{>WC@jQWnZ%I z*|Ha`QK%OKzyWvxeiVm)Us33jNB(`0M^b=KVsltL1Vfhm=jx$4Qp5-H z&77}0o!9qtgt|D}nH;KzqM=ffl2Vd#a5=I9Ztym8cME`m`k{YGz|TuUHJ#nAx=_#@ zX@a5DOeg?)P!z5!+8o@MfCB&s06-teLWobQMl6VT@_j9cPsx;URka1NgiQV2;h{42 z8~{KKsET4(EA6qm7#IPn74Nx#)b11^iE1(0%^_Emx9y2~1^Ek>dKj1x{V{VI09+X^lY{y+MR4&d&#D>N9KtHUjuK2=+K1)B8TA)jrmv|IwzZ zT@PJ{QUKWk$n-f_t{uJ`i0~|cX^W)@d%Gv) zEg(BeDkn4C-XWhnGV0k~$nd&z=s6Ss{+-3xDE^qENMfthWVo!@Jx~00r zU;Ndr7K8cB1Pe<-F_jE+5o61Tr!y)MTCmKcN%tU^Gma1i1{DfsF)cTN9aIWtaVM-W zKZ)_*frAJQ!uk47aP*%5dvfdj&a2NV)W0EaD6MP+<};39n&vZ}<_adT<^8}9FMU2# z2TqN}&B({k|EuBuMh<`iF?k5b6uW5na&{;L1v?7xU&zt$U~fz0MJEaBREWPH04>Pq zZ>jfg8TWD!`Z-;Dw_W;wSm|#Y>vQ0Y5Y~e@GGvBv1e~wyhw6Vf!oQG{bQYF$78x&q zOrri5azvx&X zqva{sh7|{q)AAq4X@v8tfoQ4_*BO-Q-BbeIG-THpG}hzzcK|@-7_xVj^P&g9b>}k# zm!4I~kPQJ!{ud2g*wn)%$~LZ3jSnc>IIdMBVo z5QPbsnxf{iF)$8wOejQHE*{E+dX;6ks6-APHDCzlExaAx%;njG?#Nc}fiq;Lv?8@g z$peOB5@}r0F#ZBo{6a?Z0JwiCX{3&OP^!>9*I&leVrq|FS4z(~ACJ+NiouZ?F& zZZ~VW_+A;;58gPk@Q$m^$%yglxU0rE8&kr#oQXMS(A3HJny=EDxNRRJ-*D?xg3YTq zYozatX}tMp>eUgS`By&HFy7R~lM$`Nu2#v_3eU-!=i&`zY(WIGL(QOra=76g&~%XH zXdK~Cv-z%`=}5TsXewbRFsJZoeQ9UKh2jbq-j}7P+Rp#Rj8=!^e+14yaJ61xQmenr zePxO>-g1Zg<@%|>tJ-D}BrriJ$O*#MshY!ojxt!D0?>plvl~IgTA}P1cF`Sm) z>oTT=H^l&h;ZGS7YlRxequVo*SuswqlmRSV4#@yR%t;x+65$0y7HiOac8s$`%7Dc+ zSnH5Q90wjE)s}DHeTjio$&Nw8Kvm1x`8`N6QvMJIU4n~6cVy%ZAVrJvS&d*tRiG+T z3a1VRUOj|$m1yNTQUxn&0Ut}MEY7t;?c>oM4?yE+(6~j*gA^78v4>tspsLg)Y&V$y zNRgt@cnq3Um4wj&XNAF(hhxEVW;h*7M1UjEMO9b~QKH(yNC)8q!7`F6IYAp$Cd6wJ ztz_f*oH}CVRh&duaPuY`XSD>4b6Uogw3vY-3Wn@l%ZGU^^_0N^1p_*W1sUm$RV86uK;xD!h=LS5mvV4cG2~jurD}1=qPV1m zJgZgoTgb0IyUPyq&$02rU_3pM%Fdj2!0MtP!w?bRE!f3fkT%mnjdF*(I z7>Nsv3yB>M?k!wiEGQT^zUPuCEX)8S1`CIPOHBfcUPfN9sB`H{G2;a%bhMe+GTSl3 zBeK1WrC=w*E@MQBLckT3@JYcENma2}=aR}1ReEr1OtUx#0Bhic)($rl zAs~ScP$kcx2k8j0>qf3*OVh)bGD0C@tr?*#D0&W%0sdh1AXlJa5Y#frK+)%r8Kjf} zu>1?dVm^@>Fp@W!k%DCeOX}-jSyX0d?{z0J8{9Z4fdKNxi9yokq-ergp(#mNvcnj3 zktgUTxK418kz%n5GAxJ)UoxYGM@I~dHvYK~X~ZHHzC2{%Qa+MS#7MN75#PTCfJquU zpp5F2hO7t|gP4r{p%cMi?D4V4NU$D-FK4J>U@Z^4dSE0jd^d7A#V!`~$qOuCGrW3` ztsn!r%uDVvyyD5-A@#40;s4@95m;>Tn;cf z{Eo~GgGhnzz^no(6!@->EC)fY9HtwYV#xeU?nva2`%foI7CCwp3S<3?%K2Z4fj`XP z=pBp%<}3IJ3X@VGsKa5RIbjeCLk^gtRODS)U_~&m^Q?=^$9Gf)PVE>Vm>B>(#;&au zwX{PQv%^L(_9>nQ*Dj=Dqc1ta9kf9JZzsVE*zv~16<%z#;qgpxPihiRO~Z&LCb4?; zy!K@VaSNpfBq99LA*vMYTq#GI7?hens)d3*Avl!H&42Eg{;RhP3K}Gq zqeC$Ta2f!TjzQ0!O-IJF+&i8CNj#Cnn#`60rZ0F=1|J841!zrG*P@9Z2< z{QPo2vHRou&NpCoOL4Z`;eOlw;rNTky4i?@Nb zZxP8X_62i_aB~fQfB*dnm9_%bI@E#(2LIyz{2E}*Q_#K= zAaXvgX1@CHokdpw$RtGnI{5;R0+<)w%)I>gnPsq#P0!?fd>axFY0@-URCAqoaPD`_ zr&+T^blN_xV#D0W(geIaRZ-+^e!%Kayr}6r`%@?pf2&3B ziv3CuUgYnW9eXnHB_9sMK^6CYJ-d1g0K}#4ac}Yh>MF^qYC~Fs785;#WeWSL5z+=< zLoayaW;R|n8(GvpjK8E)Fy8iO;Af~Q4N&Qz(@yhNU9GY$(d3Rv{`$+kYR@yzhj(tY zbuDY%_u2itTx?bN&B~>hbRmp7FUNiMa%LHh_ZYC|=_3wny!t&z;L_RfJCpoRug*-b z+G{i@O|ORDzv-ZZta=9X+U0{i`nkF#C}2hkh$!RQ_*55IXiTNR+d2(Q0#0hZql29} z({*S$loJ6R!k6tX^;|R2`2h>yR#ANFvE{S8KT z?OF(h{QW7^GNW7MOGwB$;r0c%q0iX4nFmTXvOCMYw|LH}&)&gKLaIJJ4{W%BQn>7y zugKNNKZ>t>mtjoOvg&ZflF>+#oHzjfnpJ>kQS z+E1ueGKxf=-tFYFjyvJP%uI|5$kbFN-{elN=uk?>;KVes<74Q8dc^vvhJG|sEiAzL#)`_!Uu)k;5Q9T**;XL&-GYZ8vjO(M# z8{aRKrq>0WaeEt_^fm$9q_xbLm){~0`Xgtr?{K`2l>@%s@{@RQw znX>GkD{uR6_;o&d9#}%W*43sMoCYnE`7^-|Ub6i2p1mDsvL>FVmW$S@|tlT^@*^ws4LisTi%cbdoe2;q4 zdNTJ! z<2;pP2zC9W&*{*Kd)3*wdbR6zEEkfeMIQWuYdUB;bTgaXwm9EYyK%#RV`HrN@kPbk z^Aox?EF(e$N!gKxnw^i6pceG+B_}x`aKolcbaDQ`J7TsO7M$^OP%#I;m+NZFc0FTs~EK}-dmp| z3TpVleouOvyI03a z&kPTgn0iXaUN>c>t3$)@?%@)KwfO84D~A*VHssTUk53LPHq$R55H3BLRAwhmRVPTy zG;{65N=V`??>zFz8*UUh^V(6Pbay0(%>c&3A0BnlzFv#@0i)UO?$>8QVr+yne@)@@PTyWt;ze!BrF}vz>`WGS#%B&$y?@G5aX=xKL;-iG zpqHzSeH2;Do*2%6l^PsgU+|eFo=C zaw^@yl!(!02PL}GjJowaHdhV;aQZSk>oN0mKVHze33|Q`DGJ?CVLs>F<(}8$+f?Iq zgEem@O5~~?>eRRM^cjN4gYoFuMh0I*NsDag-OfrYp^wjWiUzN2ZFq<=?s34LYAD>7 zrnkKCd@u`5;}4NGs$89&Q@HbRpmiQiG)VSXXTP>lCrtoNoa) z2QsEBge(LHAM!8AIS5>nE2qt%H8S>pV^xlqx50Tb(~1cF0InTexkzCCRHPpe$$$i$ zN-R#B-(StEIjv4G4@wx7lK;LY_V&8h_mk@_x%Z;URx0 z1l-bNCt71%8Fe4sd}Gtg04acg=~p#P44JloCSQDmP0y4BO5dfnj^|J>nyRzUaH0JZz*?d7Di3nQY}Pj2t`a< z<8KuD-uD`;omDE8S+L+&V~#c)!)JH!N43|3+2PLf3gUk>D4%^Nbo_ zEFb^CpA->#V{jtM&|5vw84g6%C*rJZt_!69)Uazt(YS9Vv&sBk8Z+$46TOu4D(98I zT|1{mM#sR-*l0QMKM?@5uZ~qzw9mtuE^Cs6rh@_#3xRvM2E-F~+vwG+_U)~@1&w=j zK`!~c#p{8!ncIzPDK?Ls8xmgLpFiz45GlQSJ!oLym5<)3-A}BJ--Y`xvXW$(v}(&` zCfAwl_Ixt6;=JR=pH|&iYkPf`hj_)?KP*pds)~Z7ui9$AgL`%s>X1D1(idR6yuFag zo|@GClzpp8D}dE@sNkE^7hkF9w}@29S#N8W26-7Vs}PpE_81O1E-1aC*7sggx^|CvtO7LN;Yrp;(rO< z#wPxme9TF(%?qabB{Li6l66Z&D_Vlj9_M(OlQWz#rrnzT&YsvK}W0_-J%+D^aN21IbC`|gM85=PLwly}a zm1(mSuGO*T2Q`&2`Xz8X)Rw82&6BHo{G zdUCr%;|@E$lhLi!FOE+52s%n5o2-ZN+_~@QX4i=?W|mcC8h`rB{=Vt+jpNb$9@Tnj z#B$MS>-4s)Vu$XZhwDb17n56z?&P`>C**wEWY9AB8PrYbCM!(D`Rfc&IYRG^yi9qt z*MbhaMup5hKbZ6%=IF1oO`3ie^;WG+@e8XJzocVML4B9F>BAq_5lm{ryIb1t>})8e zI=o0MlGpnv{pb!$i1K*MebU&7c#mdHVE*`H=4G{g<}L>Agb5VK;`~O?5-Bz7(}}iI zb3bMJ?_>q4E^59<^TmBf7YX>6o>N-a7+s09yK_QCyKjksQhn&~ATvD~H%_AlJ?E4> z)v0>&9j}-U+k@72mkd#fxe6etE@OZF=eZBRZ~fW-ytDV%>oU@TTOO}Glm5o~o@VEW z(DXgETG%&W&Qse~&f6Q`b==twH&$I*1gq&*#s9#?5Q8pmaa7eZ5%@cJ6W&~DBQR%t zx!rR^=fdq@A8j8$G`n^4_oTMnjQCALRCHL*Jwb~V2KGDkPwYKcX8OzXO=^c zV@$%v`DFT3e9-63qGLR9UA?s6rlDx~t-`wZf+*3>@hV-}#77qCzKeBZW$o38lgyBS z;%Oh{#KpO|=EYIJtS?v!Pm4m$=_#6<6u&weYw3V1lc{hT`h-5=z^tn}HR1G}0ojiW zV9Ig=xmjia-Ge~Zt+9Lax7Ai`H#>i>%2=M6P+mt5wkwxSFvVmZi{HN3Z*=3A{O7d7 zlBg?mp_lFMqr~HiuUcwSH1;duiL6I;1y!l0_6gh?)cEL=UuK9rW{ z&Ap&R#NEj8<6SCe{6pTD4II{+;!F z&ZBFV0zhNhBgtQhH2ag=flL_axsi$dQQD_nxgwH_G8J&^(XR8r89$ZBeAe-Q^pgF* z91tV)qLD~P2ispG5)U1pcDyy&-VeC9)vn@pqIT{bGpbtt?nAX?YfOLpT`kt#@-x!H zd{TXdLD$NsPd70nZXZ{HIR%F0;-d$$PYswU@XMa!O0Gff-s|wiJF4j5*#+ut8crnb zYj$|~{utE`!X~p^Nf^MFjO8A8z&{CK;Ep_lDOQD5$I`Ptw`8B!4{u`n!amZd`!Njl zW3Owk{D$*fznm7{-*{R0{;9^eA`|)3NFm8WzRFRvzDgl00#%^zi?H2-a_kylHgmr)o(<~!Krs0HqZJMqHejHXv1%Kh^Aupt!;VaV!~VK zzZoT;%j9Gc=H`}9$ezAHeMPoANa;Bh1eu_ohSRt6@93HvY_qR{oAJ$th+L(iv ze{b1bxTPzd`dQbNLGgBH{4F4R%a)DsdZN%uUqU=npyVv%>YnStEStgIa%VF=gIj#K zCJzOiz)Yf+P$BQqI#J$V^VuI8MEN44r6*eVN>ih+)PS0L8@y6;7v znMy-nZRz{@8aZ+I+yrc2VU!*1w4Ia-UZ)qBSSL1}7Y$O?CrqC*-wg}KfT`{yaiFFA&zpNcG6!Qztod?uFte&U5Y&ZvA$Z+Dw_LY$v^Bd<)jX!B#l zd@!6f=-Ar;x1_1(1J8$749ADk(_4KF;J>4X0SV`|J?k zgehJp{=gC{yja23qZ5hlv?Xd3lR-Z2-`rP+V%_!jKJ9FW6xpnQ7~g4r#2q)}2$O!e z*L=5?!gv4c^s@uUJ5n)Ea*@eI%db_gkjAyCU_EUf7oU6Mq{$9nRNUn-z&kiiX-TW> z%$b?yid`Cug?W}jtDXB?+~fR8`}g8G#E++n0|I_e;F9knZ+t+aw+V}D!<`mHSc3#* zqOYO`GtU@ndz-AL!&p)A9kyNb#ou!}*ZUMa7%oXjPUGK+nZ!s1eTcnW8u(^|zm2^t zB2)J5lAyPt;>RXqlPFXqmzt?nVD ztKJ^loYg8%sI_HT>2{Oji^)KY*jIpGsFMw4ZQbkGRSzDK39++u5Gt+7wcw%d7V1m$ z@?!Z5)UI1_>KU!=9OdI@WEzBlLQkIh=A>tn$aK;z-V>jZN*C_6@72Ywg^6-70$G|a zn~>U&T8ZIV>5IBm0RTQ0#+cU05C#DI8I#Np{=EA!*!byME;4aYZg$#HuBcrp&)h=)aUmxcamTL14^odNdY<19 z?(=LCy)acM>E6&!*{CS-(kbm?bKO>sslpwvv;a<*jOd2Xb>C=DQ5oLUwH;N_j<0Go z%i~6>^(-N#lTCBs2Ce3tYyG^nxi>$liIb{W04}OvbcO!-6aER2#B+O>JZ40UvzY6Q Q>W{lWTNf$4E5Zi+57SzE+yDRo literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_smg.ogg b/sounds/rangedweapons_smg.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ad7e09e8aff0d73b2c6575327834405f60e76dec GIT binary patch literal 8867 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 literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_throw.ogg b/sounds/rangedweapons_throw.ogg new file mode 100644 index 0000000000000000000000000000000000000000..71ebb311b830a78381c8b0d509f8bfd3eaab398a GIT binary patch literal 6130 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 Gp??EXhAlq; literal 0 HcmV?d00001 diff --git a/sounds/rangedweapons_woodbreak.ogg b/sounds/rangedweapons_woodbreak.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bd11566eafc5766c27287a62d460fe5faf9a916b GIT binary patch literal 7639 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 0.001 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if player:get_wielded_item():get_name() == "rangedweapons:spas12_uld" + and inv:contains_item("main", "rangedweapons:shell")then + if controls.RMB then + inv:remove_item("main", "rangedweapons:shell") + player:set_wielded_item("rangedweapons:spas12_rld") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell_shotgun") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + timer = 0 + minetest.sound_play("rangedweapons_shotgun_reload_a", {player}) + +end + end + + if timer >= 0.45 and + player:get_wielded_item():get_name() == "rangedweapons:spas12_rld" then + player:set_wielded_item("rangedweapons:spas12") + timer = 0 + minetest.sound_play("rangedweapons_shotgun_reload_b", {player}) + + + + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:spas12_rld", { + stack_max= 1, + range = 0, + wield_scale = {x=2.1,y=2.1,z=1.25}, + description = "**RELOADING FRANCHI SPAS-12**", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_spas12_rld.png", +}) + + +minetest.register_tool("rangedweapons:spas12", { + description = "" ..core.colorize("#35cdff","Franchi SPAS-12\n") ..core.colorize("#FFFFFF", "Ranged damage: 4-10 X 12\n") ..core.colorize("#FFFFFF", "Accuracy: 67%\n")..core.colorize("#FFFFFF", "Mob knockback: 7\n") ..core.colorize("#FFFFFF", "Critical chance: 5%\n") ..core.colorize("#FFFFFF", "Critical damage: 10-22 X 12\n") ..core.colorize("#FFFFFF", "Ammunition: 12 gauge shells\n") ..core.colorize("#FFFFFF", "Reload time: 0.45\n") ..core.colorize("#27a600", "The gun is loaded!\n")..core.colorize("#FFFFFF", "Gun type: shotgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 20"), + range = 0, + groups = {not_in_creative_inventory = 1}, + wield_scale = {x=2.1,y=2.1,z=1.25}, + inventory_image = "rangedweapons_spas12.png", + on_use = function(itemstack, user, pointed_thing) + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") + if obj then + minetest.sound_play("rangedweapons_shotgun_shot", {object=obj}) + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.3,3.3), y=math.random(-3.3,3.3), z=dir.z * math.random(-3.3,3.3)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.3,3.3), y=math.random(-3.3,3.3), z=dir.z * math.random(-3.3,3.3)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.3,3.3), y=math.random(-3.3,3.3), z=dir.z * math.random(-3.3,3.3)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.3,3.3), y=math.random(-3.3,3.3), z=dir.z * math.random(-3.3,3.3)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.3,3.3), y=math.random(-3.3,3.3), z=dir.z * math.random(-3.3,3.3)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.3,3.3), y=math.random(-3.3,3.3), z=dir.z * math.random(-3.3,3.3)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.3,3.3), y=math.random(-3.3,3.3), z=dir.z * math.random(-3.3,3.3)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.3,3.3), y=math.random(-3.3,3.3), z=dir.z * math.random(-3.3,3.3)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.3,3.3), y=math.random(-3.3,3.3), z=dir.z * math.random(-3.3,3.3)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.3,3.3), y=math.random(-3.3,3.3), z=dir.z * math.random(-3.3,3.3)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.3,3.3), y=math.random(-3.3,3.3), z=dir.z * math.random(-3.3,3.3)}) +----------------------------------------------------- + local obj = minetest.add_entity(pos, "rangedweapons:spas12shot") + obj:setvelocity({x=dir.x * math.random(18,22), y=dir.y * math.random(18,22), z=dir.z * math.random(18,22)}) + obj:setacceleration({x=dir.x * math.random(-3.3,3.3), y=math.random(-3.3,3.3), z=dir.z * math.random(-3.3,3.3)}) +----------------------------------------------------- + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 1.25, + size = 10, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:spas12_uld" + end + end + end + return itemstack + end, +}) + +local rangedweapons_spas12shot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.1, y=0.1}, + textures = {"rangedweapons_buckball.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_spas12shot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.225 then + local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 1.25) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:spas12shot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 5 then + local damage = math.random(10,22) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 14}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(4,10) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 7}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 5 then + local damage = math.random(10,22) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(4,10) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_wood_a" or + node.name == "doors:door_wood_b" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:spas12shot", rangedweapons_spas12shot ) + + diff --git a/svd.lua b/svd.lua new file mode 100644 index 0000000..f2b0f79 --- /dev/null +++ b/svd.lua @@ -0,0 +1,219 @@ +minetest.register_craft({ + output = 'rangedweapons:svd_uld', + recipe = { + {'default:steel_ingot', 'default:diamondblock', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:tree', 'default:diamond', 'default:tree'}, + } +}) + +minetest.register_craftitem("rangedweapons:svd_uld", { + stack_max= 1, + wield_scale = {x=1.9,y=1.9,z=1.1}, + range = 0, + description = "" ..core.colorize("#35cdff","S.V.D \n") ..core.colorize("#FFFFFF", "Ranged damage: 80/sec of bullet lifetime\n") ..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 14\n") ..core.colorize("#FFFFFF", "Critical chance: 42%\n") ..core.colorize("#FFFFFF", "Critical damage: 200/sec of bullet lifetime\n") ..core.colorize("#FFFFFF", "Ammunition: 308.Winchester rounds\n") ..core.colorize("#FFFFFF", "Reload time: 1.15\n") ..core.colorize("#be0d00", "The gun is NOT loaded! (Right-click to load)\n")..core.colorize("#FFFFFF", "Gun type: Rifle\n") ..core.colorize("#FFFFFF", "Bullet velocity: 60"), + inventory_image = "rangedweapons_svd.png", + on_use = function(user) + minetest.sound_play("rangedweapons_empty", {user}) + end, +}) + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.001 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if player:get_wielded_item():get_name() == "rangedweapons:svd_uld" + and inv:contains_item("main", "rangedweapons:308winchester")then + if controls.RMB then + inv:remove_item("main", "rangedweapons:308winchester") + player:set_wielded_item("rangedweapons:svd_rld") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + timer = 0 + minetest.sound_play("rangedweapons_reload_a", {player}) + +end + end + + if timer >= 1.15 and + player:get_wielded_item():get_name() == "rangedweapons:svd_rld" then + player:set_wielded_item("rangedweapons:svd") + timer = 0 + minetest.sound_play("rangedweapons_reload_b", {player}) + + + + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:svd_rld", { + stack_max= 1, + range = 0, + wield_scale = {x=1.9,y=1.9,z=1.1}, + description = "**RELOADING S.V.D.**", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_svd_rld.png", +}) + + +minetest.register_tool("rangedweapons:svd", { + description = "" ..core.colorize("#35cdff","S.V.D. \n") ..core.colorize("#FFFFFF", "Ranged damage: 80/sec of bullet lifetime\n")..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "Mob knockback: 14\n") ..core.colorize("#FFFFFF", "Critical chance: 42%\n") ..core.colorize("#FFFFFF", "Critical damage: 200/sec of bullet lifetime\n") ..core.colorize("#FFFFFF", "Ammunition: 308.Winchester rounds\n") ..core.colorize("#FFFFFF", "Reload time: 1.15\n") ..core.colorize("#27a600", "The gun is loaded!\n")..core.colorize("#FFFFFF", "Gun type: Rifle\n") ..core.colorize("#FFFFFF", "Bullet velocity: 60"), + range = 0, + groups = {not_in_creative_inventory = 1}, + wield_scale = {x=1.9,y=1.9,z=1.1}, + inventory_image = "rangedweapons_svd.png", + on_use = function(itemstack, user, pointed_thing) + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:svdshot") + if obj then + minetest.sound_play("rangedweapons_rifle_a", {object=obj}) + obj:setvelocity({x=dir.x * 60, y=dir.y * 60, z=dir.z * 60}) + obj:setacceleration({x=dir.x * 0, y=0, z=dir.z * 0}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 1.5, + size = 8, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:svd_uld" + end + end + end + return itemstack + end, +}) + +local rangedweapons_svdshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_svdshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.05 then + local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 1.5) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:svdshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 80) <= 42 then + local damage = 200 * self.timer + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 28}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = 80 * self.timer + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 14}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 42 then + local damage = 200 * self.timer + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = 80 * self.timer + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:svdshot", rangedweapons_svdshot ) + + diff --git a/taurus.lua b/taurus.lua new file mode 100644 index 0000000..7a64f0e --- /dev/null +++ b/taurus.lua @@ -0,0 +1,228 @@ +minetest.register_craft({ + output = 'rangedweapons:taurus_uld', + recipe = { +{'rangedweapons:gunsteel_ingot', 'default:mese_crystal', 'default:mese_crystal_fragment'}, +{'rangedweapons:gunsteel_ingot', 'default:diamondblock', 'rangedweapons:gunsteel_ingot'}, + {'', 'rangedweapons:gunsteel_ingot', 'rangedweapons:plastic_sheet'}, + } +}) + +minetest.register_craft({ + output = 'rangedweapons:taurus_uld', + recipe = { +{'moreores:silver_ingot', 'default:mese_crystal', 'default:mese_crystal_fragment'}, +{'moreores:silver_ingot', 'default:diamondblock', 'moreores:silver_ingot'}, + {'', 'moreores:silver_ingot', 'rangedweapons:plastic_sheet'}, + } +}) + +minetest.register_craftitem("rangedweapons:taurus_uld", { + stack_max= 1, + wield_scale = {x=1.25,y=1.25,z=1.1}, + range = 0, + description = "" ..core.colorize("#35cdff","Taurus\n") ..core.colorize("#FFFFFF", "Ranged damage: 14-24\n") ..core.colorize("#FFFFFF", "Accuracy: 95%\n") ..core.colorize("#FFFFFF", "Mob knockback: 10\n") ..core.colorize("#FFFFFF", "Critical chance: 36%\n") ..core.colorize("#FFFFFF", "Critical damage: 30-50\n") ..core.colorize("#FFFFFF", "Ammunition: .357 Magnum rounds\n") ..core.colorize("#FFFFFF", "Reload time: 0.35\n") ..core.colorize("#be0d00", "The gun is NOT loaded! (Right-click to load)\n")..core.colorize("#FFFFFF", "Gun type: Revolver\n") ..core.colorize("#FFFFFF", "Bullet velocity: 55"), + inventory_image = "rangedweapons_taurus.png", + on_use = function(user) + minetest.sound_play("rangedweapons_empty", {user}) + end, +}) + + local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.001 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if player:get_wielded_item():get_name() == "rangedweapons:taurus_uld" + and inv:contains_item("main", "rangedweapons:357")then + if controls.RMB then + inv:remove_item("main", "rangedweapons:357") + player:set_wielded_item("rangedweapons:taurus_rld") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + end + end + timer = 0 + minetest.sound_play("rangedweapons_reload_b", {player}) + +end + end + + if timer >= 0.35 and + player:get_wielded_item():get_name() == "rangedweapons:taurus_rld" then + player:set_wielded_item("rangedweapons:taurus") + timer = 0 + minetest.sound_play("rangedweapons_reload_a", {player}) + + + + end + end + end + end) + + +minetest.register_craftitem("rangedweapons:taurus_rld", { + stack_max= 1, + range = 0, + wield_scale = {x=1.25,y=1.25,z=1.1}, + description = "**RELOADING COLT taurus**", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_taurus_rld.png", +}) + + +minetest.register_tool("rangedweapons:taurus", { + description = "" ..core.colorize("#35cdff","Taurus \n") ..core.colorize("#FFFFFF", "Ranged damage: 14-24\n")..core.colorize("#FFFFFF", "Accuracy: 95%\n") ..core.colorize("#FFFFFF", "Mob knockback: 10\n") ..core.colorize("#FFFFFF", "Critical chance: 36%\n") ..core.colorize("#FFFFFF", "Critical damage: 30-50\n") ..core.colorize("#FFFFFF", "Ammunition: .357 Magnum rounds\n") ..core.colorize("#FFFFFF", "Reload time: 0.35\n") ..core.colorize("#27a600", "The gun is loaded!\n")..core.colorize("#FFFFFF", "Gun type: Revolver\n") ..core.colorize("#FFFFFF", "Bullet velocity: 55"), + range = 0, + groups = {not_in_creative_inventory = 1}, + wield_scale = {x=1.25,y=1.25,z=1.1}, + inventory_image = "rangedweapons_taurus.png", + on_use = function(itemstack, user, pointed_thing) + local pos = user:getpos() + local dir = user:get_look_dir() + local yaw = user:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:taurusshot") + if obj then + minetest.sound_play("rangedweapons_revolver", {object=obj}) + obj:setvelocity({x=dir.x * 55, y=dir.y * 55, z=dir.z * 55}) + obj:setacceleration({x=dir.x * math.random(-0.5,0.5), y=math.random(-0.5,0.5), z=dir.z * math.random(-0.5,0.5)}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 1.5, + size = 8, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or user + itemstack = "rangedweapons:taurus_uld" + end + end + end + return itemstack + end, +}) + +local rangedweapons_taurusshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_taurusshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.06 then + local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 1.5) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:taurusshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 36 then + local damage = math.random(30,50) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 20}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(14,24) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 10}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 36 then + local damage = math.random(30,50) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(14,24) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:taurusshot", rangedweapons_taurusshot ) + + diff --git a/tec9.lua b/tec9.lua new file mode 100644 index 0000000..0261652 --- /dev/null +++ b/tec9.lua @@ -0,0 +1,177 @@ +minetest.register_craft({ + output = 'rangedweapons:tec9', + recipe = { + {'rangedweapons:plastic_sheet', 'rangedweapons:plastic_sheet', 'rangedweapons:plastic_sheet'}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:mese_crystal_fragment', 'default:steel_ingot'}, + } +}) + + minetest.register_craftitem("rangedweapons:tec9", { + stack_max= 1, + wield_scale = {x=1.25,y=1.25,z=1.50}, + description = "" ..core.colorize("#35cdff","TEC-9\n") ..core.colorize("#FFFFFF", "Ranged damage: 2-4\n") ..core.colorize("#FFFFFF", "accuracy: 75%\n") ..core.colorize("#FFFFFF", "Mob knockback: 0\n") ..core.colorize("#FFFFFF", "Critical chance: 10%\n") ..core.colorize("#FFFFFF", "Critical damage: 4-7\n") ..core.colorize("#FFFFFF", "Ammunition: 9mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.2\n") ..core.colorize("#FFFFFF", "Gun type: machine pistol\n") ..core.colorize("#FFFFFF", "Bullet velocity: 20"), + range = 0, + inventory_image = "rangedweapons_tec9.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.2 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:tec9" then + if not inv:contains_item("main", "rangedweapons:9mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:tec9" then + inv:remove_item("main", "rangedweapons:9mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:tec9shot") + if obj then + minetest.sound_play("rangedweapons_machine_pistol", {object=obj}) + obj:setvelocity({x=dir.x * 20, y=dir.y * 20, z=dir.z * 20}) + obj:setacceleration({x=dir.x * math.random(-2.5,2.5), y=math.random(-2.5,2.5), z=dir.z * math.random(-2.5,2.5)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.30, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_tec9shot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_tec9shot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.17 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:tec9shot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 10 then + local damage = math.random(4,7) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=0}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,4) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 0}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 10 then + local damage = math.random(4,7) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,4) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:tec9shot", rangedweapons_tec9shot ) \ No newline at end of file diff --git a/textures/rangedweapons_10mm.png b/textures/rangedweapons_10mm.png index f7f7bf597fc4dc73a6712fe50688b719ca4cbd93..327827f5cbb50da5e9f7fbb7d34b76190cad8e53 100644 GIT binary patch delta 296 zcmV+@0oVS}7Tp)HzY2c=2uVaiRCwB?(6LIyKoo`HKf@M6niN(}kzSDqVis-O(q;n| zc>sNaJdr-Ylqqb}E?5{uTNxpOphX~o#f6N8W@L3?HtVg1;e3b7^^7t6XS~z1+qJ_N zTbBmldVb{r6gP*6A^7O{goFJ(TLicZCga@nxS!pfZCfH-I1GP702WQnqN(|Kf2C;~ zoE!8w2m-n!^!;^%s9?;u>*_kH3xrb{v&U*4AR%7WimN(q3Jk}k=3iq4nvVjWyn z6>Zz1wWgR&y_E$nT$be@YzsEU0Ae!E4X_cm8-!sH(7tj{4zY2cm!VP-^1WLSzj$70LQ*fI~UYz-Iy1fvopjcSji*8l(j07*qo IM6N<$g2gL9E&u=k diff --git a/textures/rangedweapons_10mm_shot.png b/textures/rangedweapons_10mm_shot.png new file mode 100644 index 0000000000000000000000000000000000000000..0eb5d09df44733224debce18aca8f1fe51d101c9 GIT binary patch literal 2971 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_308winchester.png b/textures/rangedweapons_308winchester.png new file mode 100644 index 0000000000000000000000000000000000000000..6b3f0d049636508f99480d34e022bdb1beaa381e GIT binary patch literal 3071 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_44_shot.png b/textures/rangedweapons_44_shot.png new file mode 100644 index 0000000000000000000000000000000000000000..7214d40ad0c59a30b12c2f3cda12a1e60e8af6a0 GIT binary patch literal 2982 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_556mm.png b/textures/rangedweapons_556mm.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c077375a4dd95b95caee0d10af426b39fd2202 GIT binary patch literal 2980 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_726mm_shot.png b/textures/rangedweapons_726mm_shot.png new file mode 100644 index 0000000000000000000000000000000000000000..0add166580924e4e89f35bd97ecbcf04e93dd3af GIT binary patch literal 2977 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 X6YEYbfE9)C00000NkvXXu0mjf?Dd4d literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_762mm.png b/textures/rangedweapons_762mm.png new file mode 100644 index 0000000000000000000000000000000000000000..1e60138fd501b41e002b05e2adb4e0848d722213 GIT binary patch literal 3049 zcmVKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0003LNklK1*I-Rq|m`J2u>28!X>_gi}(c2X7MS^ zScFVcp&$)pQmR!@hoVJPs$2(Yu+);=p7Fr%JLkX=TRWFbQpc+Y(y$iLRpHURF9EFT zE-zOXY61IGd(tW`GqYIc?);3y*Fb1_vF~_tY1TkDEk2&^)4rY;*D3{?bl?Ua-uj$; zpNh-?-|-|stx~`)S88 zv@8tJ?f;be->rdQ`IqFeE38yCn raVVlzk8O8T2@n0jFY=@c2KX5ORH%mlcS&Z_00000NkvXXu0mjfX*jH# literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_9mm.png b/textures/rangedweapons_9mm.png index fc522d4dc5524501dfdfea8f152262402e8d92e6..11204f4747a0a2366f67cd40ba41dfca7fba1b47 100644 GIT binary patch delta 314 zcmV-A0mc5@7Vj6ZzY2c=8c9S!RCwB?(?3fCF&M}3Z)&S3c2E$ZgF;=()uj{>heC1l zTzv%&U0m+P=+ePg;Oe;*p@Tz_P6ekxZxG528SW5j58_Y=cl~2in(^WJ{E~+xLTk+? zD-Y1T`Lt?&xR++Pr{}VGf2&UeY_a1w#BmJ3-R*~lx>y;|s=9x=aQTSiIHsnQ%8u|K zK0V6w4Q6Mh6j2nJp4=*YSlpr{J%S)Gcr+UE@_Hqf2Bh)+-Zp2I8YSt?;e{j2;=(}% zfRp20kRFpT0sO@yEW;D^Mf~&2FidCey)0kc25__kcwMLfByfsXI5?CoUfv+{J7rD&25j_h6k7Tl)esQ3k(co zb8|cP9|+P_Zm}Ait*NQuv9JG^Vo~}^gjsL8fnfkgL6zexKdEK|eQ9P8XrCfl+2~QI z(<9}e&Rnpp`FZ|-Bb)l)vWF@+OfO+pX`Ojd=u*&|N;bLZvSU-@BUMW6rx diff --git a/textures/rangedweapons_9mm_shot.png b/textures/rangedweapons_9mm_shot.png new file mode 100644 index 0000000000000000000000000000000000000000..033c31d9253ddd72736f3d171442b7f6d92d09c7 GIT binary patch literal 2980 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 D9kWPj literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_awp.png b/textures/rangedweapons_awp.png index 10b5368f8c4898dc31dd8fabb9d230a8219e2ec7..e439b920e70caabb4886b20bb6bf3d63c2fb9226 100644 GIT binary patch delta 625 zcmV-%0*?Kk8KfGpzY2c>Pf0{URCwCNm$7TxP!Pty_sC!fg=UCAv=~aEgD8X&K}KmX z#(#mAZb^rLHzz}qxh6}= z5rl&Qfa|)Do(XQX!?i?^yak*H!GpL_=!jnCI?}|7UAb+y$e-U(P)>(;-qzl_yVKSBaW@Jckfs6?|O?22e&A1?#OS^ zq_zL++lT1Z%2E;K&7G)Qq(YFzDtq?o37#$&006JcHFo2NxcqYgWvPfpyM$Rl9t0sy z(dTbASm0@g2>cLPK^7ibjuA*T@gDHbG}^QV@Wa$!O$x~t z_#saA-PF%PDG;JoPWD}l#<2slJ?=FaP=eBW4B>F*6ey zS^*Jp6h$B+ZVEy$GwC2rC?Wu$X%L})GzlW~g9}I%UbUKFx<$mm#66e2~VphBI4QX?`w&OlQhPBx~Oh;6jdfkV`gR~Y0Uj$ zSbvLVjs5HMr%mmTP7W{_b=b8{MOgs7OU^D&SqA|^r*UIns6}lc`chB;FrO~)c>iu~ z)6x(ML_h25D3FJ{H>#x^YMC!E%hc|+tYryM^ZNSy!R^(HeV$a&qInZHZ;sRkQDn4N haxwFUUS5m-4gk3@le6TND&GJA002ovPDHLkV1gax=hOfI diff --git a/textures/rangedweapons_awp_rld.png b/textures/rangedweapons_awp_rld.png new file mode 100644 index 0000000000000000000000000000000000000000..75291710e8fb9c3cf79827816d2dd3f4099df5e2 GIT binary patch literal 3375 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 FV1noPKS%%o literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_barrel_side.png b/textures/rangedweapons_barrel_side.png new file mode 100644 index 0000000000000000000000000000000000000000..205abd93167b9c5e588216fa6d38d28ef19a4882 GIT binary patch literal 2988 zcmV;d3sdxoP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( zX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHz3$DNjUR8-d%htIutdZEoQ0#b(FyTAa_ zdy`&8VVD_UC<6{NG_fI~0ue<-nj%P0#DLLIBvwSR5EN9f2P6n6F&ITuEN@2Ei>|D^ z_ww@lRz|vC zuzLs)$;-`!o*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!&C1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2h zoGcOF60t^#FqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTX za!E_i;d2ub1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqK zG_|(0G&D0Z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY z_n(^h55xYX#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^b zXThc7C4-yrInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qj zZ=)yBuQ3=54Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK% z>{;v(b^`kbN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<) z0>40zCTJ7v2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01) zS~6}jY?%U?gEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j z*2tcg9i<^OEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfKTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761 zjmyXF)a;mc^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQq zHZJR2&bcD49Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^ zTY0bZ?)4%01p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK z8LKk71XR(_RKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS z<&CX#T35dwS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@ zqL5!WvekBL-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW z%ue3U;av{94wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#oSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%o zZ=0JGnu?n~9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8N zo_-(u{qS+0<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-U zsyQuty7Ua;Ou?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimk zUAw*F_TX^n@STz9kDQ z$NC=!KfXWC8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgU zAAWQEt$#LRcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6 z?<+s(e(3(_^YOu_)K8!O1p}D#{JO;G(*OVf32;bRa{vGi!~g&e!~vBn4jTXf0NqJM zK~y+TV~ny;{m(!F02^SfBFVtd#Re5(VAyu)Ap@~uOd!VFFW(tHe)|Q+FhHyrV?jZ| ze|~;`23}rXs1O2t{`?urLI9XLkle?Q9~l^@PM!K+QBe^rhzve__yDE_1O&h|3?Pf& zzkeU%0vQ<@upkT|+lAS_QA0w2L70aVEC>oDP~Z?N1`b4QpmzN!FrBsdAehDl za2n7YXa?3iE!G|?f*s&>0Z20;7hpsqp#TH{lt4s|Mq;848IT-}=;BYFJfUJVg3>uG it-}B@Viaa)1_l5fOQ@kPnhlEp0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( zX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHz3$DNjUR8-d%htIutdZEoQ0#b(FyTAa_ zdy`&8VVD_UC<6{NG_fI~0ue<-nj%P0#DLLIBvwSR5EN9f2P6n6F&ITuEN@2Ei>|D^ z_ww@lRz|vC zuzLs)$;-`!o*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!&C1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2h zoGcOF60t^#FqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTX za!E_i;d2ub1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqK zG_|(0G&D0Z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY z_n(^h55xYX#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^b zXThc7C4-yrInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qj zZ=)yBuQ3=54Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK% z>{;v(b^`kbN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<) z0>40zCTJ7v2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01) zS~6}jY?%U?gEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j z*2tcg9i<^OEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfKTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761 zjmyXF)a;mc^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQq zHZJR2&bcD49Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^ zTY0bZ?)4%01p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK z8LKk71XR(_RKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS z<&CX#T35dwS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@ zqL5!WvekBL-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW z%ue3U;av{94wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#oSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%o zZ=0JGnu?n~9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8N zo_-(u{qS+0<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-U zsyQuty7Ua;Ou?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimk zUAw*F_TX^n@STz9kDQ z$NC=!KfXWC8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgU zAAWQEt$#LRcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6 z?<+s(e(3(_^YOu_)K8!O1p}D#{JO;G(*OVf32;bRa{vGi!~g&e!~vBn4jTXf0OmDbR=7VDj#eTWPwoD6!>@3f@bZtA+YJ>-17%l359wKWO`5JL!< zm@*p;)pWTz1QRu&*b37sAR;hY?T>2W{JQ{xRj@*Q4smvOCj0{%Fc(^_0HqR^Tm|FQ zs6n0R7u0<9AQv^jIp;!+8rZJZnK4d{!&$Pccv>?6fi=bXGdH>i>?#5TW*orANY+)h r@#re+tOO_(tRf5Wt6Bn%pAv00000NkvXXu0mjfk!YL0 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_benelli.png b/textures/rangedweapons_benelli.png new file mode 100644 index 0000000000000000000000000000000000000000..0200ef5ae21e2936e495efe080499f67a9570a34 GIT binary patch literal 3313 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_benelli_rld.png b/textures/rangedweapons_benelli_rld.png new file mode 100644 index 0000000000000000000000000000000000000000..19db4df055ccbadc20377627b36945105634599b GIT binary patch literal 3296 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_beretta_rld.png b/textures/rangedweapons_beretta_rld.png new file mode 100644 index 0000000000000000000000000000000000000000..a10d2f4ccbce7ab851fcf56950e3d27fe5bdd9d8 GIT binary patch literal 3035 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_bronze_shuriken.png b/textures/rangedweapons_bronze_shuriken.png index 959c1adc503689dc76e82a131cf50b76efccbcd0..7e464656477ac07bf80235c279477efdc930314f 100644 GIT binary patch delta 352 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 Rn5F;#002ovPDHLkV1n6@l@tH~ delta 270 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 U`PkTRD*ylh07*qoM6N<$f;Pa6ZU6uP literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_g36.png b/textures/rangedweapons_g36.png new file mode 100644 index 0000000000000000000000000000000000000000..d7473c1bf13c07bb7d0529821ae6e14230a30bd0 GIT binary patch literal 3351 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_generator_bottom.png b/textures/rangedweapons_generator_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..f85dbe89a693470fb448e652b4cd5b6c67e994ea GIT binary patch literal 2949 zcmV;03wrd4P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_generator_side.png b/textures/rangedweapons_generator_side.png new file mode 100644 index 0000000000000000000000000000000000000000..97ab78bde26b921a7fe83ad2e1b0ac2106588dfe GIT binary patch literal 3003 zcmV;s3q004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( 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 JPDHLkV1i-fXJ!BZ literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_glock17.png b/textures/rangedweapons_glock17.png new file mode 100644 index 0000000000000000000000000000000000000000..7f8d3a719700b3c2bdb66ac619aae1dab71de3bf GIT binary patch literal 3033 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 a_#OZZjh!ixdw#tDe*Z=?k diff --git a/textures/rangedweapons_gun_power_core.png b/textures/rangedweapons_gun_power_core.png new file mode 100644 index 0000000000000000000000000000000000000000..67f3012a9558325ab0a23afc3d28acf4aa35cb58 GIT binary patch literal 3111 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 Ef>IX~CIA2c literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_hand_grenade.png b/textures/rangedweapons_hand_grenade.png new file mode 100644 index 0000000000000000000000000000000000000000..334d3c7e59b75b1053b3835f7d400ab3774b252d GIT binary patch literal 3133 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_invisible.png b/textures/rangedweapons_invisible.png new file mode 100644 index 0000000000000000000000000000000000000000..91aa7793354d10254df099b4dbd93c544c617bc9 GIT binary patch literal 2800 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 Xh)+^6=(aSF00000NkvXXu0mjf(VJGb delta 1427 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 LNkvXXu0mjf^)@)V literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_kriss_sv.png b/textures/rangedweapons_kriss_sv.png new file mode 100644 index 0000000000000000000000000000000000000000..150cc9ccb8851961e5d5e6eaa031ecfcdb7da455 GIT binary patch literal 3491 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 Y08Bexxp3li>i_@%07*qoM6N<$f*&rA82|tP literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_laser_shotgun.png b/textures/rangedweapons_laser_shotgun.png new file mode 100644 index 0000000000000000000000000000000000000000..0abdce50a32471217c2f596abd1b135c032e71e6 GIT binary patch literal 3381 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 LNkvXXu0mjfZd5zS literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_luger.png b/textures/rangedweapons_luger.png new file mode 100644 index 0000000000000000000000000000000000000000..bf53dccd2d8696a61991b2942adbc19e65156ae5 GIT binary patch literal 2981 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 bKEU4qLV$YMeQ2yQ00000NkvXXu0mjfbSH{o literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_luger_rld.png b/textures/rangedweapons_luger_rld.png new file mode 100644 index 0000000000000000000000000000000000000000..ed932d1ee0b460018b0e968342947d2a52fa9cf0 GIT binary patch literal 2988 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_m200_rld.png b/textures/rangedweapons_m200_rld.png new file mode 100644 index 0000000000000000000000000000000000000000..583f258116427a66d7afc6fba83e9aee4ade4c4f GIT binary patch literal 3303 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_m60.png b/textures/rangedweapons_m60.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a4c77fc736a234a2abfdbc027a0a4f2c757746 GIT binary patch literal 3360 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 P00000NkvXXu0mjf!ZSDc literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_m79_rld.png b/textures/rangedweapons_m79_rld.png new file mode 100644 index 0000000000000000000000000000000000000000..56ebae48e935eb4bb379f99944383a9bc2026130 GIT binary patch literal 3376 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 b8Q^;WbOn&HK9{AU00000NkvXXu0mjfsu!X2 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_mese_shuriken.png b/textures/rangedweapons_mese_shuriken.png index 9a990fc8fe7ac5dbca8d29b1dec839e4dbf56f5a..81269526bdf92c197c4fbdef9de872ec5a7f2f04 100644 GIT binary patch delta 319 zcmV-F0l@y$7xWjfzY2c=A4x<(RCwB?lRZwuP!NQ_wQ>at3Ky|EN*XMspiIR9xIzm1 z7Sy|$JP&cCJlMNtHfrxY&6SdKHhrSA4OZ- z`{tR+e39B7;|MOUx)$09$HsaoRxg00U#CdX*DKPu>HQHs-=iW$UiVs&qCXeOy*u1* zJwYP#z=QwZf0#GO;;2WUT$$YGe%CKD&1Atb^5OW0==_a~+*B=#dhEB{jcKFGIn+ulkxe8^UA#%tDzVI6?_LWT>XS8fp~V)-FN`0b{|k9; z)^RXrk0;1d6JsWxj)fivxZVOiXj&zC?i9=uC@UqawK+@vo4<{Gk-$p)WN5I;b8x6Y lL4vYUa=jT~3=9|W8UXb2dJ(p$s5t-t002ovPDHLkV1lH#g0lbs diff --git a/textures/rangedweapons_milkor.png b/textures/rangedweapons_milkor.png new file mode 100644 index 0000000000000000000000000000000000000000..16d70b9b4e67ffec682a5c7b22bf4d240aa96a45 GIT binary patch literal 3544 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%0ArM6olv1q_ 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 Z0{}ipZmK~|wjcli002ovPDHLkV1k|K`mO)~ literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_mp5.png b/textures/rangedweapons_mp5.png new file mode 100644 index 0000000000000000000000000000000000000000..ca22dd11b95bfc15f7d29f6b2c42f54be03ed801 GIT binary patch literal 3398 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_pin.png b/textures/rangedweapons_pin.png new file mode 100644 index 0000000000000000000000000000000000000000..50cb95bb1f9b27388b89ecde08e3d6359a7d87bc GIT binary patch literal 2874 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 Y0QZ3-5eHNQk^lez07*qoM6N<$f@~^QssI20 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_plastic_sheet.png b/textures/rangedweapons_plastic_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..f25c8efb61542957fa5d2853f63d32dcb6ed32bf GIT binary patch literal 2931 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_power_particle.png b/textures/rangedweapons_power_particle.png new file mode 100644 index 0000000000000000000000000000000000000000..8309290ade00e88d8466ccff14f2fb134ed60719 GIT binary patch literal 2937 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 jMOt3v<Yo& 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 Ug5*H2jsO4v07*qoM6N<$f+8fH5dZ)H literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_ray_blue.png b/textures/rangedweapons_ray_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..f9771b41fc0d62b2b5b325a24aa56c055d6e579e GIT binary patch literal 2821 zcmV+g3;OhlP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( zX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHz3$DNjUR8-d%htIutdZEoQ0#b(FyTAa_ zdy`&8VVD_UC<6{NG_fI~0ue<-nj%P0#DLLIBvwSR5EN9f2P6n6F&ITuEN@2Ei>|D^ z_ww@lRz|vC zuzLs)$;-`!o*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!&C1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2h zoGcOF60t^#FqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTX za!E_i;d2ub1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqK zG_|(0G&D0Z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY z_n(^h55xYX#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^b zXThc7C4-yrInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qj zZ=)yBuQ3=54Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK% z>{;v(b^`kbN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<) z0>40zCTJ7v2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01) zS~6}jY?%U?gEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j z*2tcg9i<^OEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfKTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761 zjmyXF)a;mc^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQq zHZJR2&bcD49Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^ zTY0bZ?)4%01p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK z8LKk71XR(_RKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS z<&CX#T35dwS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@ zqL5!WvekBL-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW z%ue3U;av{94wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#oSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%o zZ=0JGnu?n~9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8N zo_-(u{qS+0<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-U zsyQuty7Ua;Ou?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimk zUAw*F_TX^n@STz9kDQ z$NC=!KfXWC8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgU zAAWQEt$#LRcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6 z?<+s(e(3(_^YOu_)K8!O1p}D#{JO;G(*OVf32;bRa{vGi!~g&e!~vBn4jTXf05(ZP zK~y+TV>D@b@}GeMzyzhq28CG*eLt`+7N*v(a$iM&q XtKbwY|McC800000NkvXXu0mjfUgJqs literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_ray_green.png b/textures/rangedweapons_ray_green.png new file mode 100644 index 0000000000000000000000000000000000000000..91bf907527ef1164d7ebde7d4d3d4bd55b853106 GIT binary patch literal 2839 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_rocket.png b/textures/rangedweapons_rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..5e7d01a6323767c49e43dab98a2fed45149abf72 GIT binary patch literal 3037 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_rocket_fly.png b/textures/rangedweapons_rocket_fly.png new file mode 100644 index 0000000000000000000000000000000000000000..00e80db4660dc87e36323160a38d409b4077b96b GIT binary patch literal 3058 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 A=>Px# literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_rocket_fly_alternate.png b/textures/rangedweapons_rocket_fly_alternate.png new file mode 100644 index 0000000000000000000000000000000000000000..a267f7f054dc630d794b8d9cd6cae4b47cfb9c37 GIT binary patch literal 2964 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 literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_rpk.png b/textures/rangedweapons_rpk.png new file mode 100644 index 0000000000000000000000000000000000000000..7f2c0c4eb467fb43706da32124b2582b79ad86d2 GIT binary patch literal 3389 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 TL*2RS00000NkvXXu0mjf7122` literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_scar.png b/textures/rangedweapons_scar.png new file mode 100644 index 0000000000000000000000000000000000000000..5ecbbdd6d8f1351043a995f9187006974e65f3ff GIT binary patch literal 3531 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 FV1j2%ia`JX literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_shell.png b/textures/rangedweapons_shell.png index d03fbb04a3662550fcb5241a337713fc0d5db1b1..b6a68740e395f807f2eaf6a48300c33aa81fd94c 100644 GIT binary patch delta 300 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 A&j0`b literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_shelldrop_shotgun.png b/textures/rangedweapons_shelldrop_shotgun.png new file mode 100644 index 0000000000000000000000000000000000000000..cf829fd8148651ac20277b6cd9f5b1472d0a1954 GIT binary patch literal 2868 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 delta 855 zcmV-d1E~De8s!@yiBL{Q4GJ0x0000DNk~Le0000$0000$2nGNE0IF$m-mxK`3V#C- zNklKc5Tx?}0Ih+50Pt~M+C0xdMEH6J5E0Jv97hO|-pq&&0Dy>4hJg$P zK8J|(Mn-&+ATvR-VVWjLvEvmvz<<&KnhkHx2c{0tdEw2KA*usf0U@aaS^y#JIr?@G zzN$cLApA;#ErM{k3|iM1pw|F!6of}>1tN+bKaJAo0D!N9&yV9s{~t&2q@&vb=c`BP z`~GX?$8m&ZSzsK;$Mp=DGZN!ur=4fpw(S=P%d+f-gBPGe?mxzy=WFad0DpX#kaFHj z6$v@3pK@M<006Ko3-o<&I_Pcs6s~-jWCDkUbkM3EcZ0AC01@G~ZGQqmCPqt4c>n=( z-wVV-VcRx{o#&juVUf}icWH_25U`jKbKc4cdrX+;Ihr?IFhG|?T^aV6V3kN_0y{77 zsl|lu56TgBSmZE)o!1SP41cY4T@e6a7zV1P6S^}uYX@RXU=U>alVZrqFB}e~LFmpt zKsu0Of{yoTnm%mcXAHwYwL!Q<2XKPaOpt%;cMhBcB?$7KbzN~?S1g?vFB3x20SSh7 z{s;(~2`;L@5xpRtXWH+DMl2_kst(=Nh_VB*6^{uZD<{;b4xt3Ch<^zA$a&RvXEpwGPm+UrHFE*DP;`_2$e{yGGFa$J25I h))WJ3S%Ajv-vIMU3|*D9d$Rxl002ovPDHLkV1f)ub$b8+ diff --git a/textures/rangedweapons_spas12_rld.png b/textures/rangedweapons_spas12_rld.png new file mode 100644 index 0000000000000000000000000000000000000000..778b61faed9068d7876e60cf439ecbfaaacadf5b GIT binary patch literal 3441 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 T8_xF*00000NkvXXu0mjf>oIJ^ literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_steel_shuriken.png b/textures/rangedweapons_steel_shuriken.png index ccbd30571a63392aecbbfb9a45b6645b4d40a044..abdda91148f016aff53564ef01a977cdbcc3c9b9 100644 GIT binary patch delta 294 zcmV+>0onfF7u*-HzzTl{Nklo&<5U85FstN4nl`c zNeNv7F9P9{f24a~hL~B+E{mwO;t6Ix35+pt&WU#ZyqS$L&{|`fCLG5BA`+uU{>Kae zGK6s3!5WrRPCBAOS!rbt=;0KMk`XmSw3#)T559>k5AWu-0PRHsqZ9o%de! zS16?b0H$f`f*4~LF>@s%Xsyxo%v`{Pq2bNElYj3@xM9!#t59^d>80FOVOJbG$es{jB107*qoM6N<$f;r`fQUCw| delta 297 zcmV+^0oMN97vC4KzzTl~Nkl}#B=Wm&=)gVXu(KL_u~Nnp*|rzqNH3L^3%lG|5RIOkr%%t3#{Fa%~!Rsp~{m+VIo z0Px;pxsjBCszO8{B8hyt&UCrX6oukOm^nEry1t^Qtg7j?tw3|JwwVIOBIPsY>&r*5 z)&c-T1gZ+}J!q|od596-`!x6cb_gPZaU9os(DfBrYmd;u~%L0D@P)cE4SLB@AT?m1- z27OqS7-JJ@t&5bh-F?4b+nZE%5E99aMcJ!xl00000NkvXXu0mjfWj2Ob delta 277 zcmV+w0qXwR7s?l~zY2c<^+`lQRCwByQ?aT9Aq*UsXCp$e&bMtoF8^k|2*G9xU!{0^ zp2tlmF=J*jy4D(Y5Rq{~Ro%0Gd}|INfSEx=FJxZ{M5HnEIG0j>pTNxEy+_V@**pkV zqX9sS5i!QCM@QE=lZZ$oBA6Kf;8~yH&huwBp7nVn!-MO( z&>c53)LNmcPE}ng1!jg20*DCAJSIB&g_IJ!_e1;2kNL4q;(Cx~jUfc2lwKs68A>T{ zXSYh?oB=b#ecwaUT+cbL3Fb|7^PV{nk*2C{8>BwL3U6E3#dwFmPt7as%OHI+arcF1 b{0{)DORA1mAcYOP00000NkvXXu0mjfWea+w diff --git a/textures/rangedweapons_svd.png b/textures/rangedweapons_svd.png new file mode 100644 index 0000000000000000000000000000000000000000..d21efb99b8d125d8542236ee77e729f38e0a5c11 GIT binary patch literal 3476 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 delta 183 zcmV;o07(DW7ws0XzY2caQ;c7X96UY|oU$)*1lI lvfRIetH}2|U%f(r*8qteq%z{A+n)dc002ovPDHLkV1kp1SE2v_ diff --git a/textures/rangedweapons_taurus_rld.png b/textures/rangedweapons_taurus_rld.png new file mode 100644 index 0000000000000000000000000000000000000000..a53d8b505a102c38b9375e462ed4a1b0deea98d2 GIT binary patch literal 3031 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 Z*8rcMh6VVW+!Fu*002ovPDHLkV1jL=o?ZX| literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_tec9.png b/textures/rangedweapons_tec9.png new file mode 100644 index 0000000000000000000000000000000000000000..692f409046242e7c601c06d8fa9f389e2476b1a7 GIT binary patch literal 3063 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 HxJ3USK)l)l literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_tmp.png b/textures/rangedweapons_tmp.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b537ed29adcd906d6af3d26d692cc07be66b26 GIT binary patch literal 3079 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 V#R0zm#by8i002ovPDHLkV1fyQy`lgB literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_ultra_gunsteel_ingot.png b/textures/rangedweapons_ultra_gunsteel_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..e0e4eab4dd0a1eb1da0bb546205ce5f0eb541c77 GIT binary patch literal 3286 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 Uvm&bv4FCWD07*qoM6N<$g2C4<`v3p{ literal 0 HcmV?d00001 diff --git a/textures/rangedweapons_ump.png b/textures/rangedweapons_ump.png new file mode 100644 index 0000000000000000000000000000000000000000..b41ad00dd3761253cb99eda8477b0f4c0b04ed60 GIT binary patch literal 3313 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 BrRM+u delta 311 zcmV-70m%ND80{CZzzTmDNklc{O3^-C=x0;!!ee>Q3r4)O}l1MkiX)cy^u}6?4k-EAkK0gi|O`F@} z`9fm+XLy$Yz;Vw2o5Px5s&k53R=k6eC6Nj)){G=eA{F``07rk*W?7#t@#p(Xg}z5E zD+<{I5c(cN*KjXe{T`((9Welgt^wfco(L`$0Qa&bPID2bxwt)^)Uwj`(D(F@j5y83 zy=-yZvtHVocE>$yM~1G^BsvFEjms|w7fV~Yl(-tCafw6Ma5U`~E60o!vfobP*aT3> z{v`)l5~(=N#h)*Nw1$}rTM}wn?UJk>(^CIlj5n|G-3d?eI{= 0.08 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:tmp" then + if not inv:contains_item("main", "rangedweapons:9mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:tmp" then + inv:remove_item("main", "rangedweapons:9mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:tmpshot") + if obj then + minetest.sound_play("rangedweapons_machine_pistol", {object=obj}) + obj:setvelocity({x=dir.x * 20, y=dir.y * 20, z=dir.z * 20}) + obj:setacceleration({x=dir.x * math.random(-3.8,3.8), y=math.random(-3.8,3.8), z=dir.z * math.random(-3.8,3.8)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.30, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_tmpshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_tmpshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.17 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:tmpshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 4 then + local damage = math.random(3,6) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=0}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(1,4) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 0}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 4 then + local damage = math.random(3,6) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(1,4) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:tmpshot", rangedweapons_tmpshot ) \ No newline at end of file diff --git a/ump.lua b/ump.lua new file mode 100644 index 0000000..dd92755 --- /dev/null +++ b/ump.lua @@ -0,0 +1,178 @@ +minetest.register_craft({ + output = 'rangedweapons:ump', + recipe = { + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'rangedweapons:gunsteel_ingot', 'default:diamond', 'default:steel_ingot'}, + {'default:steel_ingot', '', 'default:steel_ingot'}, + } +}) + + minetest.register_craftitem("rangedweapons:ump", { + stack_max= 1, + wield_scale = {x=1.75,y=1.75,z=1.20}, + description = "" ..core.colorize("#35cdff","UMP-9\n") ..core.colorize("#FFFFFF", "Ranged damage: 4-8\n") ..core.colorize("#FFFFFF", "Accuracy: 77%\n") ..core.colorize("#FFFFFF", "Mob knockback: 1\n") ..core.colorize("#FFFFFF", "Critical chance: 8%\n") ..core.colorize("#FFFFFF", "Critical damage: 9-18\n") ..core.colorize("#FFFFFF", "Ammunition: 10mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.115\n") ..core.colorize("#FFFFFF", "Gun type: Sub-machinegun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 25"), + range = 0, + inventory_image = "rangedweapons_ump.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.115 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:ump" then + if not inv:contains_item("main", "rangedweapons:10mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:ump" then + inv:remove_item("main", "rangedweapons:10mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:umpshot") + if obj then + minetest.sound_play("rangedweapons_machine_pistol", {object=obj}) + obj:setvelocity({x=dir.x * 25, y=dir.y * 25, z=dir.z * 25}) + obj:setacceleration({x=dir.x * math.random(-2.3,2.3), y=math.random(-2.3,2.3), z=dir.z * math.random(-2.3,2.3)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell_white") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.35, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + obj:setyaw(yaw + math.pi) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_umpshot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_umpshot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.12 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:umpshot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 8 then + local damage = math.random(9,18) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=2}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(4,8) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 1}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 8 then + local damage = math.random(9,18) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(4,8) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:umpshot", rangedweapons_umpshot ) \ No newline at end of file diff --git a/uzi.lua b/uzi.lua new file mode 100644 index 0000000..a2a1c88 --- /dev/null +++ b/uzi.lua @@ -0,0 +1,178 @@ +minetest.register_craft({ + output = 'rangedweapons:uzi', + recipe = { + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:diamond', 'rangedweapons:plastic_sheet', 'default:steel_ingot'}, + {'', 'default:steel_ingot', ''}, + } +}) + + minetest.register_craftitem("rangedweapons:uzi", { + stack_max= 1, + wield_scale = {x=1.6,y=1.6,z=1.10}, + description = "" ..core.colorize("#35cdff","UZI\n") ..core.colorize("#FFFFFF", "Ranged damage: 2-5\n") ..core.colorize("#FFFFFF", "accuracy: 69%\n") ..core.colorize("#FFFFFF", "Mob knockback: 0\n") ..core.colorize("#FFFFFF", "Critical chance: 5%\n") ..core.colorize("#FFFFFF", "Critical damage: 4-8\n") ..core.colorize("#FFFFFF", "Ammunition: 9mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.08\n") ..core.colorize("#FFFFFF", "Gun type: machine pistol\n") ..core.colorize("#FFFFFF", "Bullet velocity: 25"), + range = 0, + inventory_image = "rangedweapons_uzi.png", +}) + +local timer = 0 +minetest.register_globalstep(function(dtime, player) + timer = timer + dtime; + if timer >= 0.08 then + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + local controls = player:get_player_control() + if controls.LMB then + timer = 0 + local wielded_item = player:get_wielded_item():get_name() + if wielded_item == "rangedweapons:uzi" then + if not inv:contains_item("main", "rangedweapons:9mm") then +minetest.sound_play("rangedweapons_empty", {object=player}) + else + if wielded_item == "rangedweapons:uzi" then + inv:remove_item("main", "rangedweapons:9mm") + local pos = player:getpos() + local dir = player:get_look_dir() + local yaw = player:get_look_yaw() + if pos and dir and yaw then + pos.y = pos.y + 1.6 + local obj = minetest.add_entity(pos, "rangedweapons:uzishot") + if obj then + minetest.sound_play("rangedweapons_machine_pistol", {object=obj}) + obj:setvelocity({x=dir.x * 25, y=dir.y * 25, z=dir.z * 25}) + obj:setacceleration({x=dir.x * math.random(-3.1,3.1), y=math.random(-3.1,3.1), z=dir.z * math.random(-3.1,3.1)}) + obj:setyaw(yaw + math.pi) + pos.y = pos.y + 0 + local obj = minetest.add_entity(pos, "rangedweapons:empty_shell") + minetest.sound_play("", {object=obj}) + obj:setvelocity({x=dir.x * -10, y=dir.y * -10, z=dir.z * -10}) + obj:setacceleration({x=dir.x * -5, y= -10, z=dir.z * -5}) + obj:setyaw(yaw + math.pi) + minetest.add_particle({ + pos = pos, + velocity = {x=dir.x * 3, y=dir.y * 3, z=dir.z * 3} , + acceleration = {x=dir.x * -4, y=2, z=dir.z * -4}, + expirationtime = 0.30, + size = 4, + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 5, + }) + local ent = obj:get_luaentity() + if ent then + ent.player = ent.player or player + + end + end + end + end +end + +end + end + end + end + end) + +local rangedweapons_uzishot = { + physical = false, + timer = 0, + visual = "sprite", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons_invisible.png"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_uzishot.on_step = function(self, dtime, node, pos) + self.timer = self.timer + dtime + local tiem = 0.002 + local pos = self.object:getpos() + local node = minetest.get_node(pos) + + if self.timer > 0.125 then + 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 obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "rangedweapons:uzishot" and obj:get_luaentity().name ~= "__builtin:item" then + if math.random(1, 100) <= 5 then + local damage = math.random(4,8) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback=0}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,5) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage, knockback = 0}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + else + if math.random(1, 100) <= 5 then + local damage = math.random(4,8) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("crit", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + else + local damage = math.random(2,5) + obj:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups= {fleshy = damage}, + }, nil) + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + self.object:remove() + end + end + if timer >= 0.002 + tiem then + minetest.add_particle({ + pos = pos, + velocity = 0, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.06, + size = 3, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullet_fly.png", + glow = 15, + }) + tiem = tiem + 0.002 + end + if self.timer >= 4.0 then + self.object:remove() + end + if self.lastpos.x ~= nil then + if minetest.registered_nodes[node.name].walkable then + if not minetest.setting_getbool("creative_mode") +then + end + minetest.sound_play("default_dig_cracky", {pos = self.lastpos, gain = 0.8}) + if node.name == "rangedweapons:barrel" or + node.name == "doors:door_glass_a" or + node.name == "doors:door_glass_b" or + node.name == "xpanes:pane" or + node.name == "xpanes:pane_flat" or + node.name == "vessels:drinking_glass" or + node.name == "vessels:glass_bottle" or + node.name == "default:glass" then + minetest.get_node_timer(pos):start(0) + end + self.object:remove() + end + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end +end +end + + + +minetest.register_entity("rangedweapons:uzishot", rangedweapons_uzishot ) \ No newline at end of file