diff --git a/mods/rangedweapons/aa12.lua b/mods/rangedweapons/aa12.lua new file mode 100644 index 00000000..e32f77af --- /dev/null +++ b/mods/rangedweapons/aa12.lua @@ -0,0 +1,75 @@ + + +minetest.register_tool("rangedweapons:aa12_r", { + stack_max= 1, + wield_scale = {x=1.9,y=1.9,z=1.4}, + description = "", + rw_next_reload = "rangedweapons:aa12_rr", + load_sound = "rangedweapons_rifle_clip_in", + range = 0, + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_aa12_rld.png", +}) +minetest.register_tool("rangedweapons:aa12_rr", { + stack_max= 1, + wield_scale = {x=1.9,y=1.9,z=1.4}, + description = "", + rw_next_reload = "rangedweapons:aa12_rrr", + load_sound = "rangedweapons_reload_a", + range = 0, + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_aa12.png", +}) +minetest.register_tool("rangedweapons:aa12_rrr", { + stack_max= 1, + wield_scale = {x=1.9,y=1.9,z=1.4}, + description = "", + rw_next_reload = "rangedweapons:aa12", + load_sound = "rangedweapons_reload_b", + range = 0, + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_aa12.png", +}) +------------------------------------------- + + minetest.register_tool("rangedweapons:aa12", { + stack_max= 1, + wield_scale = {x=1.9,y=1.9,z=1.4}, + description = "" ..core.colorize("#35cdff","AA-12\n") ..core.colorize("#FFFFFF", "Ranged damage: 1\n") ..core.colorize("#FFFFFF", "projectiles: 5\n") ..core.colorize("#FFFFFF", "Gun gravity: 4\n") ..core.colorize("#FFFFFF", "accuracy: 40%\n") ..core.colorize("#FFFFFF", "knockback: 5\n") ..core.colorize("#FFFFFF", "Reload delay: 1.5\n") ..core.colorize("#FFFFFF", "Clip size: 20\n") ..core.colorize("#FFFFFF", "Critical chance: 5%\n") ..core.colorize("#FFFFFF", "Critical efficiency: 2.0x\n") ..core.colorize("#FFFFFF", "Ammunition: 12 gauge shell\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.2 (full-auto)\n") ..core.colorize("#FFFFFF", "Gun type: shotgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 25"), + range = 0, + inventory_image = "rangedweapons_aa12.png", + RW_gun_capabilities = { + automatic_gun = 1, + gun_damage = {fleshy=1,knockback=5}, + gun_crit = 5, + gun_critEffc = 2.0, + suitable_ammo = {{"rangedweapons:shell",20}}, + gun_skill = {"shotgun_skill",40}, + gun_magazine = "rangedweapons:drum_mag", + gun_icon = "rangedweapons_aa12_icon.png", + gun_unloaded = "rangedweapons:aa12_r", + gun_velocity = 25, + gun_accuracy = 40, + gun_cooldown = 0.2, + gun_reload = 1.5/4, + gun_projectiles = 1, + has_shell = 1, + gun_durability = 750, + gun_smokeSize = 8, + gun_door_breaking = 1, + gun_projectiles = 5, + gun_gravity = 4, + gun_unload_sound = "rangedweapons_rifle_clip_out", + gun_sound = "rangedweapons_shotgun_shot", + }, + on_secondary_use = function(itemstack, user, pointed_thing) +rangedweapons_reload_gun(itemstack, user) +return itemstack +end, +}) + + + + + + diff --git a/mods/rangedweapons/ak47.lua b/mods/rangedweapons/ak47.lua new file mode 100644 index 00000000..d7ba1091 --- /dev/null +++ b/mods/rangedweapons/ak47.lua @@ -0,0 +1,76 @@ + + +minetest.register_tool("rangedweapons:ak47_r", { + stack_max= 1, + wield_scale = {x=1.75,y=1.75,z=1.3}, + description = "", + rw_next_reload = "rangedweapons:ak47_rr", + load_sound = "rangedweapons_rifle_clip_in", + range = 0, + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_ak47_rld.png", +}) + +minetest.register_tool("rangedweapons:ak47_rr", { + stack_max= 1, + wield_scale = {x=1.75,y=1.75,z=1.3}, + description = "", + rw_next_reload = "rangedweapons:ak47_rrr", + load_sound = "rangedweapons_rifle_reload_a", + range = 0, + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_ak47.png", +}) + +minetest.register_tool("rangedweapons:ak47_rrr", { + stack_max= 1, + wield_scale = {x=1.75,y=1.75,z=1.3}, + description = "", + rw_next_reload = "rangedweapons:ak47", + load_sound = "rangedweapons_rifle_reload_b", + range = 0, + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_ak47.png", +}) + + + minetest.register_tool("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", "Gun damage: 7\n") ..core.colorize("#FFFFFF", "accuracy: 77%\n") ..core.colorize("#FFFFFF", "Gun knockback: 5\n") ..core.colorize("#FFFFFF", "Gun Critical chance: 12%\n")..core.colorize("#FFFFFF", "Critical efficiency: 2.9x\n") ..core.colorize("#FFFFFF", "Reload delay: 1.4\n") ..core.colorize("#FFFFFF", "Clip size: 30\n") ..core.colorize("#FFFFFF", "Ammunition: 7.62mm rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 0.10(full-auto)\n") ..core.colorize("#FFFFFF", "Gun type: assault rifle\n") ..core.colorize("#FFFFFF", "Block penetration: 5%\n") +..core.colorize("#FFFFFF", "Enemy penetration: 15%\n") ..core.colorize("#FFFFFF", "Bullet velocity: 40"), + range = 0, + inventory_image = "rangedweapons_ak47.png", + RW_gun_capabilities = { + automatic_gun = 1, + gun_damage = {fleshy=7,knockback=5}, + gun_crit = 12, + gun_critEffc = 2.9, + suitable_ammo = {{"rangedweapons:762mm",30}}, + gun_skill = {"arifle_skill",50}, + gun_magazine = "rangedweapons:assaultrifle_mag", + gun_icon = "rangedweapons_ak47_icon.png", + gun_unloaded = "rangedweapons:ak47_r", + gun_velocity = 40, + gun_accuracy = 77, + gun_cooldown = 0.1, + gun_reload = 1.4/4, + gun_projectiles = 1, + has_shell = 1, + gun_gravity = 0, + gun_durability = 1200, + gun_smokeSize = 5, + gun_mob_penetration = 15, + gun_node_penetration = 5, + gun_unload_sound = "rangedweapons_rifle_clip_out", + gun_sound = "rangedweapons_ak", + }, + on_secondary_use = function(itemstack, user, pointed_thing) +rangedweapons_reload_gun(itemstack, user) +return itemstack +end, + + inventory_image = "rangedweapons_ak47.png", +}) + + diff --git a/mods/rangedweapons/ammo.lua b/mods/rangedweapons/ammo.lua new file mode 100644 index 00000000..db8f01e8 --- /dev/null +++ b/mods/rangedweapons/ammo.lua @@ -0,0 +1,778 @@ +forbidden_ents = { +"", +} + + +minetest.register_alias("rangedweapons:726mm", "rangedweapons:762mm") + +bullet_particles = bullet_particles or "rangedweapons_bullet_fly.png" + + +minetest.register_craftitem("rangedweapons:shot_bullet_visual", { + wield_scale = {x=1.0,y=1.0,z=1.0}, + inventory_image = "rangedweapons_bulletshot.png", +}) + + +local rangedweapons_shot_bullet = { + timer = 0, +initial_properties = { + physical = true, + hp_max = 420, + glow = 100, + visual = "wielditem", + visual_size = {x=0.75, y=0.75}, + textures = {"rangedweapons:shot_bullet_visual"}, + lastpos = {}, + collide_with_objects = false, + collisionbox = {-0.0025, -0.0025, -0.0025, 0.0025, 0.0025, 0.0025}, +}, +} +rangedweapons_shot_bullet.on_step = function(self, dtime, moveresult) +---------------------------------------- +--------------------------------------- + +if self.owner == nil then +self.object:remove() +end + +local sparks = self.sparks or 0 +local ignite = self.ignite or 0 +local size = self.size or 0.0025 + +local SBP = self.bullet_particles +if SBP ~= nil then +for i=1,math.random(SBP.amount[1],SBP.amount[2]) do + minetest.add_particle({ + pos = {x=self.object:get_pos().x+(math.random(-SBP.pos_randomness,SBP.pos_randomness)/100),y=self.object:get_pos().y+(math.random(-SBP.pos_randomness,SBP.pos_randomness)/100),z=self.object:get_pos().z+(math.random(-SBP.pos_randomness,SBP.pos_randomness)/100)}, + velocity = {x=math.random(-SBP.velocity.x,SBP.velocity.x), y=math.random(-SBP.velocity.y,SBP.velocity.y), z=math.random(-SBP.velocity.z,SBP.velocity.z)}, + acceleration = {x=math.random(-SBP.acceleration.x,SBP.acceleration.x), y=math.random(-SBP.acceleration.y,SBP.acceleration.y)-SBP.gravity, z=math.random(-SBP.acceleration.z,SBP.acceleration.z)}, + expirationtime = SBP.lifetime, + size = math.random(SBP.minsize,SBP.maxsize)/10, + collisiondetection = SBP.collisiondetection, + vertical = false, + texture = SBP.texture, + animation = {type="vertical_frames", aspect_w=8, aspect_h=8, length = SBP.lifetime+0.1,}, + glow = SBP.glow, + }) +end end + + +self.timer = self.timer + dtime + +if self.timer > 0.06 then +self.object:set_properties({collide_with_objects = true}) +self.object:set_properties({collisionbox = {-size, -size, -size, size, size, size}}) +end + +if self.timer > 10 then +self.object:remove() +end + +if moveresult.collides == true then +if moveresult.collisions[1] ~= nil then + +local mobPen = self.mobPen or 0 +local nodePen = self.nodePen or 0 +local door_break = self.door_break or 0 +local glass_break = self.glass_break or 0 + +if moveresult.collisions[1].type == "node" then + +minetest.check_for_falling(moveresult.collisions[1].node_pos) + + +if minetest.registered_nodes[minetest.get_node(moveresult.collisions[1].node_pos).name] and +minetest.registered_nodes[minetest.get_node(moveresult.collisions[1].node_pos).name].tiles and +minetest.registered_nodes[minetest.get_node(moveresult.collisions[1].node_pos).name].tiles[1] +then + +local hit_texture = minetest.registered_nodes[minetest.get_node(moveresult.collisions[1].node_pos).name].tiles[1] + +if hit_texture.name ~= nil then +hit_texture = hit_texture.name +end + + minetest.add_particle({ + pos = self.object:get_pos(), + velocity = {x=0, y=0, z=0}, + acceleration = {x=0, y=0, z=0}, + expirationtime = 30, + size = math.random(10,20)/10, + collisiondetection = false, + vertical = false, + texture = "rangedweapons_bullethole.png", + glow = 0, + }) + + for i=1,math.random(4,8) do + minetest.add_particle({ + pos = self.object:get_pos(), + velocity = {x=math.random(-3.0,3.0), y=math.random(2.0,5.0), z=math.random(-3.0,3.0)}, + acceleration = {x=math.random(-3.0,3.0), y=math.random(-10.0,-15.0), z=math.random(-3.0,3.0)}, + expirationtime = 0.5, + size = math.random(10,20)/10, + collisiondetection = true, + vertical = false, + texture = ""..hit_texture.."^[resize:4x4".."", + glow = 0, + }) + end + +end + + +minetest.sound_play("default_dig_cracky", {self.object:get_pos(), gain = 1.0}) + +if ignite > 0 then + +if minetest.get_node(moveresult.collisions[1].node_pos).name == "rangedweapons:barrel" then +minetest.swap_node(moveresult.collisions[1].node_pos, {name = "air"}) +tnt.boom(moveresult.collisions[1].node_pos, {radius = 3}) +end + +if minetest.get_node(moveresult.collisions[1].node_pos).name == "tnt:tnt" then +minetest.swap_node(moveresult.collisions[1].node_pos, {name = "tnt:tnt_burning"}) + minetest.sound_play("tnt_ignite", {moveresult.collisions[1].node_pos}, true) + minetest.get_node_timer(moveresult.collisions[1].node_pos):start(3) + minetest.check_for_falling(moveresult.collisions[1].node_pos) +end + +end + + +if rweapons_door_breaking == "true" and door_break > 0 then +if string.find(minetest.get_node(moveresult.collisions[1].node_pos).name,"door_wood") then + +minetest.swap_node(moveresult.collisions[1].node_pos, {name = "air"}) +minetest.add_item(moveresult.collisions[1].node_pos, "default:wood 5") +minetest.sound_play("rangedweapons_woodbreak",{moveresult.collisions[1].node_pos}) + +end end + +if rweapons_glass_breaking == "true" and glass_break > 0 then + +local nodeName = minetest.get_node(moveresult.collisions[1].node_pos).name + + if nodeName == "default:glass" then + minetest.swap_node(moveresult.collisions[1].node_pos, {name = "rangedweapons:broken_glass"}) +minetest.sound_play("glass_break",{moveresult.collisions[1].node_pos}) + end + if nodeName == "xpanes:pane" or + nodeName == "xpanes:pane_flat" then +minetest.swap_node(moveresult.collisions[1].node_pos, {name = "air"}) +minetest.add_item(moveresult.collisions[1].node_pos, "rangedweapons:glass_shards") +minetest.sound_play("glass_break",{moveresult.collisions[1].node_pos}) + end +if string.find(nodeName,"door_glass") then +minetest.swap_node(moveresult.collisions[1].node_pos, {name = "air"}) +minetest.add_item(moveresult.collisions[1].node_pos, "vessels:glass_fragments 5") +minetest.sound_play("glass_break",{moveresult.collisions[1].node_pos}) + end +end + + +if minetest.get_item_group(minetest.get_node(moveresult.collisions[1].node_pos).name, "level") > 1 then +self.object:set_velocity(moveresult.collisions[1].old_velocity) + +if sparks > 0 then +make_sparks(self.object:get_pos()) +end + +local objVel = moveresult.collisions[1].old_velocity +local objRot = self.object:get_rotation() + +if objRot and objVel then +if moveresult.collisions[1].axis == "x" then +self.object:set_rotation({x=0,y=objRot.y,z=objRot.z+3}) +self.object:set_velocity({x=objVel.x*-1,y=objVel.y,z=objVel.z}) +end + +if moveresult.collisions[1].axis == "z" then +self.object:set_rotation({x=0,y=objRot.y,z=objRot.z+3}) +self.object:set_velocity({x=objVel.x,y=objVel.y,z=objVel.z*-1}) +end + +if moveresult.collisions[1].axis == "y" then +self.object:set_rotation({x=0,y=objRot.y+3,z=objRot.z+3}) +self.object:set_velocity({x=objVel.x,y=objVel.y*-1,z=objVel.z}) +end end + + +else + +if math.random(1,100) <= nodePen then + for i=1,10 do + minetest.add_particle({ + pos = self.object:get_pos(), + velocity = {x=1.5, y=1.5, z=1.5} , + acceleration = {x=math.random(-3.0,3.0), y=math.random(-4.0,4.0), z=math.random(-3.0,3.0)}, + expirationtime = 1.25, + size = math.random(3,6), + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 2, + }) + end +minetest.sound_play("default_dig_cracky", {self.object:get_pos(), gain = 1.0}) +self.object:set_properties({collisionbox = {0,0,0,0,0,0}}) +--minetest.chat_send_all("hit") +self.object:set_velocity(moveresult.collisions[1].old_velocity) +else + +if minetest.get_item_group(minetest.get_node(moveresult.collisions[1].node_pos).name, "leaves") > 0 then + +minetest.sound_play("default_dig_snappy", {self.object:get_pos(), gain = 1.5}) + +for i = 1,math.random(3,6) do + minetest.add_particle({ + pos = self.object:get_pos(), + velocity = {x=math.random(-2,2), y=math.random(3,6), z=math.random(-2,2)}, + acceleration = {x=math.random(-2,2), y=math.random(-3,-6), z=math.random(-2,2)}, + expirationtime = math.random(2,4), + size = math.random(6,9), + collisiondetection = true, + collision_removal = false, + vertical = false, + texture = "rangedweapons_leaf.png", + animation = {type="vertical_frames", aspect_w=8, aspect_h=8, length = 0.8,}, + glow = 15, + }) +end + +self.object:set_properties({collisionbox = {0,0,0,0,0,0}}) +self.object:set_velocity(moveresult.collisions[1].old_velocity) + +else +if self.OnCollision ~= nil then +self.OnCollision(self.owner,self,moveresult.collisions[1]) +end +self.object:remove() +end +end +end + +end + +if moveresult.collisions[1].type == "object" then + + +local actualDamage = self.damage or {fleshy=1} +local damage = {} +local crit = self.crit or 0 +local critEffc = self.critEffc or 1 +local owner = minetest.get_player_by_name(self.owner) +local hit_texture = "rangedweapons_hit.png" +local dps = self.dps or 0 +local skill = self.skill_value or 1 + +for _, dmg in pairs(actualDamage) do +damage[_] = actualDamage[_] +end + +if moveresult.collisions[1].object:is_player() then +for _, player_dmg in pairs(damage) do +damage[_] = damage[_] * rweapons_player_dmg_multiplier +end +if self.object:get_pos().y - moveresult.collisions[1].object:get_pos().y > 1.5 then +for _, hs_dmg in pairs(damage) do +damage[_] = damage[_] * rweapons_headshot_dmg_multiplier +end +end +knockback = damage.knockback or 0 +projectile_kb(moveresult.collisions[1].object,self.object,knockback) +else +for _, mob_dmg in pairs(damage) do +damage[_] = damage[_] * rweapons_mob_dmg_multiplier +end +end + +for _, bonus_dmg in pairs(damage) do +damage[_] = (damage[_]*skill) + (self.dps*self.timer) +end + +--minetest.chat_send_all(critEffc) +if math.random(1,100) <= crit+((skill*10)-10) then +for _, critDmg in pairs(damage) do +damage[_] = damage[_] * critEffc +end + + +entpos = self.object:get_pos() +minetest.add_particle ({ +pos = entpos, velocity = 0, acceleration = {x=0, y=5, z=0}, +expirationtime = 0.75, size = 12, collisiondetection = false, +vertical = false, texture = "rangedweapons_crit.png", glow = 30,}) +hit_texture = "rangedweapons_crithit.png" +end + +moveresult.collisions[1].object:punch(owner, 1.0, { + full_punch_interval = 1.0, + damage_groups = damage,}, nil) +owner:hud_change(hit, "text", hit_texture) + + for i=1,math.random(math.ceil(rweapons_bloodyness*0.66),math.ceil(rweapons_bloodyness*1.5)) do + minetest.add_particle({ + pos = self.object:get_pos(), + velocity = {x=math.random(-15.0,15.0)/10, y=math.random(2.0,5.0), z=math.random(-15.0,15.0)/10}, + acceleration = {x=math.random(-3.0,3.0), y=math.random(-10.0,-15.0), z=math.random(-3.0,3.0)}, + expirationtime = 0.75, + size = math.random(10,20)/10, + collisiondetection = true, + vertical = false, + texture = "rangedweapons_blood.png", + animation = {type="vertical_frames", aspect_w=8, aspect_h=8, length = 0.8,}, + glow = 0, + }) + end + + +if math.random(1,100) <= mobPen then + for i=1,10 do + minetest.add_particle({ + pos = self.object:get_pos(), + velocity = {x=1.5, y=1.5, z=1.5} , + acceleration = {x=math.random(-3.0,3.0), y=math.random(-4.0,4.0), z=math.random(-3.0,3.0)}, + expirationtime = 1.25, + size = math.random(3,6), + collisiondetection = false, + vertical = false, + texture = "tnt_smoke.png", + glow = 2, + }) + end +minetest.sound_play("default_dig_cracky", {self.object:get_pos(), gain = 1.0}) +self.object:set_properties({collisionbox = {0,0,0,0,0,0}}) +self.object:set_velocity(moveresult.collisions[1].old_velocity) +else +if self.OnCollision ~= nil then +self.OnCollision(self.owner,self,moveresult.collisions[1]) +end +self.object:remove() +end +end + + +else + +self.object:remove() + +end +end + +end + +minetest.register_entity("rangedweapons:shot_bullet", rangedweapons_shot_bullet) + + + +--- +--- actual mags +--- + +--- +--- visual drop mags +--- + +minetest.register_craftitem("rangedweapons:drum_mag", { + wield_scale = {x=1.0,y=1.0,z=1.5}, + inventory_image = "rangedweapons_drum_mag.png", +}) + +minetest.register_craftitem("rangedweapons:handgun_mag_black", { + wield_scale = {x=0.6,y=0.6,z=0.8}, + inventory_image = "rangedweapons_magazine_handgun.png", +}) +local rangedweapons_mag = { + physical = false, + timer = 0, + visual = "wielditem", + visual_size = {x=0.3, y=0.3}, + textures = {"rangedweapons:handgun_mag_black"}, + lastpos= {}, + collisionbox = {0, 0, 0, 0, 0, 0}, +} +rangedweapons_mag.on_step = function(self, dtime, pos) + self.timer = self.timer + dtime + local pos = self.object:get_pos() + local node = minetest.get_node(pos) + if self.lastpos.y ~= nil then + if minetest.registered_nodes[node.name] ~= nil then + if minetest.registered_nodes[node.name].walkable then + local vel = self.object:get_velocity() + local acc = self.object:get_acceleration() + self.object:set_velocity({x=0, y=0, z=0}) + self.object:set_acceleration({x=0, y=0, z=0}) + end end + end + if self.timer > 2.0 then + self.object:remove() + + end + self.lastpos= {x = pos.x, y = pos.y, z = pos.z} +end + +minetest.register_entity("rangedweapons:mag", rangedweapons_mag) + +minetest.register_craftitem("rangedweapons:handgun_mag_white", { + wield_scale = {x=0.6,y=0.6,z=0.8}, + inventory_image = "rangedweapons_handgun_mag_white.png", +}) + +minetest.register_craftitem("rangedweapons:machinepistol_mag", { + wield_scale = {x=0.6,y=0.6,z=0.8}, + inventory_image = "rangedweapons_machinepistol_mag.png", +}) + +minetest.register_craftitem("rangedweapons:assaultrifle_mag", { + wield_scale = {x=0.6,y=0.6,z=0.8}, + inventory_image = "rangedweapons_assaultrifle_mag.png", +}) + +minetest.register_craftitem("rangedweapons:rifle_mag", { + wield_scale = {x=0.6,y=0.6,z=0.8}, + inventory_image = "rangedweapons_rifle_mag.png", +}) + +minetest.register_craftitem("rangedweapons:9mm", { + stack_max= 500, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff","9x19mm Parabellum\n")..core.colorize("#FFFFFF", "Bullet damage: 1 \n") ..core.colorize("#FFFFFF", "Bullet crit efficiency: 0.25 \n") ..core.colorize("#FFFFFF", "Bullet crit chance: 1% \n") ..core.colorize("#FFFFFF", "Bullet velocity: 25 \n") ..core.colorize("#FFFFFF", "Bullet knockback: 1 \n") ..core.colorize("#FFFFFF", "Ammunition for some guns"), + inventory_image = "rangedweapons_9mm.png", + RW_ammo_capabilities = { + ammo_damage = {fleshy=1,knockback=1}, + ammo_critEffc = 0.25, + ammo_crit = 1, + ammo_velocity = 25, + ammo_glass_breaking = 1, + ammo_entity = "rangedweapons:shot_bullet", + ammo_visual = "wielditem", + ammo_texture = "rangedweapons:shot_bullet_visual", + shell_entity = "rangedweapons:empty_shell", + shell_visual = "wielditem", + shell_texture = "rangedweapons:shelldrop", + ammo_projectile_size = 0.0025, + has_sparks = 1, + ignites_explosives = 1, + } +}) +minetest.register_craftitem("rangedweapons:45acp", { + stack_max= 450, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff",".45ACP catridge\n")..core.colorize("#FFFFFF", "Bullet damage: 2 \n") ..core.colorize("#FFFFFF", "Bullet crit efficiency: 0.50 \n") ..core.colorize("#FFFFFF", "Bullet crit chance: 2% \n") +..core.colorize("#FFFFFF", "Bullet velocity: 20 \n") +..core.colorize("#FFFFFF", "Bullet knockback: 2 \n") ..core.colorize("#FFFFFF", "Ammunition for some guns"), + inventory_image = "rangedweapons_45acp.png", + RW_ammo_capabilities = { + ammo_damage = {fleshy=2,knockback=1}, + ammo_critEffc = 0.50, + ammo_crit = 1, + ammo_velocity = 20, + ammo_glass_breaking = 1, + ammo_entity = "rangedweapons:shot_bullet", + ammo_visual = "wielditem", + ammo_texture = "rangedweapons:shot_bullet_visual", + shell_entity = "rangedweapons:empty_shell", + shell_visual = "wielditem", + shell_texture = "rangedweapons:shelldrop", + ammo_projectile_size = 0.0025, + has_sparks = 1, + ignites_explosives = 1, + }, +}) +minetest.register_craftitem("rangedweapons:10mm", { + stack_max= 400, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff","10mm Auto\n")..core.colorize("#FFFFFF", "Bullet damage: 2 \n") ..core.colorize("#FFFFFF", "Bullet crit efficiency:0.30 \n") ..core.colorize("#FFFFFF", "Bullet velocity: 25 \n") +..core.colorize("#FFFFFF", "Bullet knockback: 1 \n") ..core.colorize("#FFFFFF", "Bullet crit chance: 1% \n") ..core.colorize("#FFFFFF", "Ammunition for some guns"), + inventory_image = "rangedweapons_10mm.png", + RW_ammo_capabilities = { + ammo_damage = {fleshy=2,knockback=1}, + ammo_critEffc = 0.3, + ammo_crit = 1, + ammo_velocity = 25, + ammo_glass_breaking = 1, + ammo_entity = "rangedweapons:shot_bullet", + ammo_visual = "wielditem", + ammo_texture = "rangedweapons:shot_bullet_visual", + shell_entity = "rangedweapons:empty_shell", + shell_visual = "wielditem", + shell_texture = "rangedweapons:shell_whitedrop", + ammo_projectile_size = 0.0025, + has_sparks = 1, + ignites_explosives = 1, + } +}) + + +minetest.register_craftitem("rangedweapons:357", { + stack_max= 150, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff",".357 magnum round\n")..core.colorize("#FFFFFF", "Bullet damage: 4 \n") ..core.colorize("#FFFFFF", "Bullet crit efficiency: 0.6 \n") ..core.colorize("#FFFFFF", "Bullet crit chance: 3% \n") ..core.colorize("#FFFFFF", "Bullet knockback: 5 \n") ..core.colorize("#FFFFFF", "Bullet enemy Penetration: 5%\n") ..core.colorize("#FFFFFF", "Bullet velocity: 45 \n") ..core.colorize("#FFFFFF", "Ammunition for some guns"), + inventory_image = "rangedweapons_357.png", + RW_ammo_capabilities = { + ammo_damage = {fleshy=4,knockback=5}, + ammo_critEffc = 0.6, + ammo_crit = 3, + ammo_velocity = 45, + ammo_glass_breaking = 1, + ammo_mob_penetration = 5, + ammo_entity = "rangedweapons:shot_bullet", + ammo_visual = "wielditem", + ammo_texture = "rangedweapons:shot_bullet_visual", + shell_entity = "rangedweapons:empty_shell", + shell_visual = "wielditem", + shell_texture = "rangedweapons:shelldrop", + ammo_projectile_size = 0.0025, + has_sparks = 1, + ignites_explosives = 1, + } +}) + +minetest.register_craftitem("rangedweapons:50ae", { + stack_max= 100, + wield_scale = {x=0.6,y=0.6,z=1.5}, + description = "" ..core.colorize("#35cdff",".50AE catridge\n")..core.colorize("#FFFFFF", "Bullet damage: 8 \n") ..core.colorize("#FFFFFF", "Bullet crit efficiency: 0.9 \n") ..core.colorize("#FFFFFF", "Bullet crit chance: 6% \n") ..core.colorize("#FFFFFF", "Bullet knockback: 10 \n") ..core.colorize("#FFFFFF", "Bullet enemy Penetration: 15%\n") ..core.colorize("#FFFFFF", "Bullet velocity: 55 \n") ..core.colorize("#FFFFFF", "Ammunition for some guns"), + inventory_image = "rangedweapons_50ae.png", + RW_ammo_capabilities = { + ammo_damage = {fleshy=8,knockback=10}, + ammo_critEffc = 0.9, + ammo_crit = 6, + ammo_velocity = 55, + ammo_glass_breaking = 1, + ammo_mob_penetration = 15, + ammo_entity = "rangedweapons:shot_bullet", + ammo_visual = "wielditem", + ammo_texture = "rangedweapons:shot_bullet_visual", + shell_entity = "rangedweapons:empty_shell", + shell_visual = "wielditem", + shell_texture = "rangedweapons:shelldrop", + ammo_projectile_size = 0.0025, + has_sparks = 1, + ignites_explosives = 1, + } +}) + +minetest.register_craftitem("rangedweapons:44", { + stack_max= 150, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff",".44 magnum round\n")..core.colorize("#FFFFFF", "Bullet damage: 4 \n") ..core.colorize("#FFFFFF", "Bullet crit efficiency: 0.7 \n") ..core.colorize("#FFFFFF", "Bullet crit chance: 4% \n") ..core.colorize("#FFFFFF", "Bullet knockback: 6 \n") ..core.colorize("#FFFFFF", "Bullet enemy Penetration: 6%\n") ..core.colorize("#FFFFFF", "Bullet velocity: 50 \n") ..core.colorize("#FFFFFF", "Ammunition for some guns"), + inventory_image = "rangedweapons_44.png", + RW_ammo_capabilities = { + ammo_damage = {fleshy=4,knockback=6}, + ammo_critEffc = 0.7, + ammo_crit = 4, + ammo_velocity = 50, + ammo_glass_breaking = 1, + ammo_mob_penetration = 6, + ammo_entity = "rangedweapons:shot_bullet", + ammo_visual = "wielditem", + ammo_texture = "rangedweapons:shot_bullet_visual", + shell_entity = "rangedweapons:empty_shell", + shell_visual = "wielditem", + shell_texture = "rangedweapons:shelldrop", + ammo_projectile_size = 0.0025, + has_sparks = 1, + ignites_explosives = 1, + } +}) +minetest.register_craftitem("rangedweapons:762mm", { + stack_max= 250, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff","7.62mm round\n")..core.colorize("#FFFFFF", "Bullet damage: 4 \n") ..core.colorize("#FFFFFF", "Bullet crit efficiency: 0.5 \n") ..core.colorize("#FFFFFF", "Bullet crit chance: 2% \n") ..core.colorize("#FFFFFF", "Bullet velocity: 40 \n") ..core.colorize("#FFFFFF", "Bullet knockback: 4 \n") ..core.colorize("#FFFFFF", "Bullet enemy Penetration: 5%\n") ..core.colorize("#FFFFFF", "Ammunition for some guns"), + inventory_image = "rangedweapons_762mm.png", + RW_ammo_capabilities = { + ammo_damage = {fleshy=4,knockback=4}, + ammo_critEffc = 0.5, + ammo_crit = 2, + ammo_velocity = 40, + ammo_glass_breaking = 1, + ammo_entity = "rangedweapons:shot_bullet", + ammo_visual = "wielditem", + ammo_texture = "rangedweapons:shot_bullet_visual", + shell_entity = "rangedweapons:empty_shell", + shell_visual = "wielditem", + shell_texture = "rangedweapons:shelldrop", + ammo_mob_penetration = 5, + ammo_projectile_size = 0.0025, + has_sparks = 1, + ignites_explosives = 1, + }, +}) +minetest.register_craftitem("rangedweapons:556mm", { + stack_max= 300, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff","5.56mm round\n")..core.colorize("#FFFFFF", "Bullet damage: 3 \n") ..core.colorize("#FFFFFF", "Bullet crit efficiency: 0.4 \n") ..core.colorize("#FFFFFF", "Bullet crit chance: 2% \n") ..core.colorize("#FFFFFF", "Bullet velocity: 35 \n") ..core.colorize("#FFFFFF", "Bullet knockback: 3 \n") ..core.colorize("#FFFFFF", "Ammunition for some guns"), + inventory_image = "rangedweapons_556mm.png", + RW_ammo_capabilities = { + ammo_damage = {fleshy=3,knockback=3}, + ammo_critEffc = 0.4, + ammo_crit = 2, + ammo_velocity = 35, + ammo_glass_breaking = 1, + ammo_entity = "rangedweapons:shot_bullet", + ammo_visual = "wielditem", + ammo_texture = "rangedweapons:shot_bullet_visual", + shell_entity = "rangedweapons:empty_shell", + shell_visual = "wielditem", + shell_texture = "rangedweapons:shelldrop", + ammo_projectile_size = 0.0025, + has_sparks = 1, + ignites_explosives = 1, + }, +}) +minetest.register_craftitem("rangedweapons:shell", { + stack_max= 50, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff","12 Gauge shell\n")..core.colorize("#FFFFFF", "Bullet damage: 2 \n") ..core.colorize("#FFFFFF", "Bullet crit efficiency: 0.15 \n") ..core.colorize("#FFFFFF", "Bullet crit chance: 1% \n") ..core.colorize("#FFFFFF", "Bullet velocity: 20 \n") ..core.colorize("#FFFFFF", "Bullet knockback: 4 \n") ..core.colorize("#FFFFFF", "Bullet gravity: 5 \n") ..core.colorize("#FFFFFF", "Bullet projectile multiplier: 1.5x\n") ..core.colorize("#FFFFFF", "Ammunition for some guns"), + inventory_image = "rangedweapons_shell.png", + RW_ammo_capabilities = { + ammo_damage = {fleshy=2,knockback=4}, + ammo_projectile_multiplier = 1.5, + ammo_critEffc = 0.15, + ammo_crit = 1, + ammo_velocity = 20, + ammo_glass_breaking = 1, + ammo_entity = "rangedweapons:shot_bullet", + ammo_visual = "sprite", + ammo_texture = "rangedweapons_buckball.png", + shell_entity = "rangedweapons:empty_shell", + shell_visual = "wielditem", + shell_texture = "rangedweapons:shell_shotgundrop", + ammo_gravity = 5, + ammo_projectile_size = 0.00175, + ammo_projectile_glow = 0, + has_sparks = 1, + ignites_explosives = 1, + }, +}) +minetest.register_craftitem("rangedweapons:308winchester", { + stack_max= 75, + wield_scale = {x=0.4,y=0.4,z=1.2}, + description = "" ..core.colorize("#35cdff",".308 winchester round\n")..core.colorize("#FFFFFF", "Bullet damage: 8 \n") ..core.colorize("#FFFFFF", "Bullet crit efficiency: 0.75 \n") ..core.colorize("#FFFFFF", "Bullet crit chance: 4% \n") ..core.colorize("#FFFFFF", "Bullet velocity: 60 \n") ..core.colorize("#FFFFFF", "Bullet knockback: 10 \n") ..core.colorize("#FFFFFF", "Damage gain over 1 sec of flight time: 40 \n") ..core.colorize("#FFFFFF", "Bullet enemy Penetration: 20%\n") ..core.colorize("#FFFFFF", "Bullet node Penetration: 10%\n") ..core.colorize("#FFFFFF", "Ammunition for some guns"), + inventory_image = "rangedweapons_308winchester.png", + RW_ammo_capabilities = { + ammo_damage = {fleshy=8,knockback=10}, + ammo_critEffc = 0.75, + ammo_crit = 2, + ammo_velocity = 60, + ammo_glass_breaking = 1, + ammo_entity = "rangedweapons:shot_bullet", + ammo_visual = "wielditem", + ammo_texture = "rangedweapons:shot_bullet_visual", + shell_entity = "rangedweapons:empty_shell", + shell_visual = "wielditem", + shell_texture = "rangedweapons:shelldrop", + ammo_mob_penetration = 20, + ammo_node_penetration = 10, + ammo_projectile_size = 0.0025, + ammo_dps = 40, + has_sparks = 1, + ignites_explosives = 1, + }, +}) + +minetest.register_craftitem("rangedweapons:408cheytac", { + stack_max= 40, + wield_scale = {x=0.65,y=0.65,z=1.5}, + description = "" ..core.colorize("#35cdff",".408 chey tac\n")..core.colorize("#FFFFFF", "Bullet damage: 10 \n") ..core.colorize("#FFFFFF", "Bullet crit efficiency: 0.8 \n") ..core.colorize("#FFFFFF", "Bullet crit chance: 5% \n") ..core.colorize("#FFFFFF", "Bullet velocity: 70 \n") ..core.colorize("#FFFFFF", "Bullet knockback: 15 \n") ..core.colorize("#FFFFFF", "Damage gain over 1 sec of flight time: 80 \n") ..core.colorize("#FFFFFF", "Bullet enemy Penetration: 45%\n") ..core.colorize("#FFFFFF", "Bullet node Penetration: 20%\n") ..core.colorize("#FFFFFF", "Ammunition for some guns"), + inventory_image = "rangedweapons_408cheytac.png", + RW_ammo_capabilities = { + ammo_damage = {fleshy=10,knockback=15}, + ammo_critEffc = 0.8, + ammo_crit = 5, + ammo_velocity = 70, + ammo_glass_breaking = 1, + ammo_entity = "rangedweapons:shot_bullet", + ammo_visual = "wielditem", + ammo_texture = "rangedweapons:shot_bullet_visual", + shell_entity = "rangedweapons:empty_shell", + shell_visual = "wielditem", + shell_texture = "rangedweapons:shelldrop", + ammo_mob_penetration = 45, + ammo_node_penetration = 20, + ammo_projectile_size = 0.0025, + ammo_dps = 80, + has_sparks = 1, + ignites_explosives = 1, + }, +}) + +minetest.register_craftitem("rangedweapons:40mm", { + stack_max= 25, + wield_scale = {x=0.8,y=0.8,z=2.4}, + description = "" ..core.colorize("#35cdff",".40mm grenade\n")..core.colorize("#FFFFFF", "Bullet damage: 10 \n") ..core.colorize("#FFFFFF", "Bullet crit efficiency: 1.0 \n") ..core.colorize("#FFFFFF", "Bullet crit chance: 1% \n") ..core.colorize("#FFFFFF", "Bullet velocity: 15 \n") ..core.colorize("#FFFFFF", "Bullet knockback: 10 \n") ..core.colorize("#FFFFFF", "Bullet gravity: 5 \n") ..core.colorize("#FFFFFF", "explodes on impact with a radius of 2\n") ..core.colorize("#FFFFFF", "Ammunition for grenade launchers"), + inventory_image = "rangedweapons_40mm.png", + RW_ammo_capabilities = { + ammo_damage = {fleshy=10,knockback=15}, + ammo_critEffc = 1.0, + ammo_crit = 1, + ammo_velocity = 15, + ammo_glass_breaking = 1, + ammo_entity = "rangedweapons:shot_bullet", + ammo_visual = "sprite", + ammo_texture = "rangedweapons_rocket_fly.png", + shell_entity = "rangedweapons:empty_shell", + shell_visual = "wielditem", + shell_texture = "rangedweapons:shell_grenadedrop", + ammo_projectile_size = 0.15, + has_sparks = 1, + ammo_gravity = 5, + ignites_explosives = 1, + +OnCollision = function(player,bullet,target) + tnt.boom(bullet.object:get_pos(), {radius = 2}) +end, +ammo_particles = { + velocity = {x=1,y=1,z=1}, + acceleration = {x=1,y=1,z=1}, + collisiondetection = true, + lifetime = 1, + texture = "tnt_smoke.png", + minsize = 50, + maxsize = 75, + pos_randomness = 50, + glow = 20, + gravity = 10, + amount = {1,1} +}, +}, +}) + +minetest.register_craftitem("rangedweapons:rocket", { + stack_max= 15, + wield_scale = {x=1.2,y=1.2,z=2.4}, + description = "" ..core.colorize("#35cdff","rocket\n")..core.colorize("#FFFFFF", "Bullet damage: 15 \n") ..core.colorize("#FFFFFF", "Bullet crit efficiency: 1.0 \n") ..core.colorize("#FFFFFF", "Bullet crit chance: 1% \n") ..core.colorize("#FFFFFF", "Bullet velocity: 20 \n") ..core.colorize("#FFFFFF", "Bullet knockback: 20 \n") ..core.colorize("#FFFFFF", "Bullet gravity: 5 \n") ..core.colorize("#FFFFFF", "explodes on impact with a radius of 3\n") ..core.colorize("#FFFFFF", "Ammunition for rocket launchers"), + inventory_image = "rangedweapons_rocket.png", + RW_ammo_capabilities = { + ammo_damage = {fleshy=15,knockback=20}, + ammo_critEffc = 1.0, + ammo_crit = 1, + ammo_velocity = 20, + ammo_glass_breaking = 1, + ammo_entity = "rangedweapons:shot_bullet", + ammo_visual = "sprite", + ammo_texture = "rangedweapons_rocket_fly.png", + ammo_projectile_size = 0.15, + has_sparks = 1, + ignites_explosives = 1, + +OnCollision = function(player,bullet,target) + tnt.boom(bullet.object:get_pos() , {radius = 3}) +end, +ammo_particles = { + velocity = {x=1,y=1,z=1}, + acceleration = {x=1,y=1,z=1}, + collisiondetection = true, + lifetime = 1, + texture = "tnt_smoke.png", + minsize = 50, + maxsize = 75, + pos_randomness = 50, + glow = 20, + gravity = 10, + amount = {1,1} +}, +}, +}) diff --git a/mods/rangedweapons/awp.lua b/mods/rangedweapons/awp.lua new file mode 100644 index 00000000..57540d41 --- /dev/null +++ b/mods/rangedweapons/awp.lua @@ -0,0 +1,102 @@ + + +minetest.register_tool("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:18 + 35/sec of bullet lifetime\n")..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "knockback: 15\n") ..core.colorize("#FFFFFF", "Critical chance: 30%\n") ..core.colorize("#FFFFFF", "Critical efficiency: x3\n") ..core.colorize("#FFFFFF", "Ammunition: 7.62mm round/308.Winchester rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 1.0\n") ..core.colorize("#FFFFFF", "Reload time: 2.0\n") ..core.colorize("#FFFFFF", "Zoom: 12x\n") ..core.colorize("#be0d00", "Right-click to eject empty bullet shell\n") ..core.colorize("#FFFFFF", "Clip size: 10/10\n") ..core.colorize("#FFFFFF", "Enemy penetration:30%\n") ..core.colorize("#FFFFFF", "Block penetration:10%\n") ..core.colorize("#FFFFFF", "Gun type: Rifle\n") ..core.colorize("#FFFFFF", "Bullet velocity: 75"), + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_awp.png", + weapon_zoom = 7.5, + on_use = function(user) + minetest.sound_play("rangedweapons_empty", {user}) + end, +on_secondary_use = function(itemstack, user, pointed_thing) +eject_shell(itemstack,user,"rangedweapons:awp_rld",1.0,"rangedweapons_rifle_reload_a","rangedweapons:empty_shell") +return itemstack +end, +}) + + +minetest.register_tool("rangedweapons:awp_r", { + rw_next_reload = "rangedweapons:awp_rr", + load_sound = "rangedweapons_rifle_clip_in", + range = 0, + wield_scale = {x=1.9,y=1.9,z=1.1}, + description = "", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_awp_noclip.png", +}) +minetest.register_tool("rangedweapons:awp_rr", { + rw_next_reload = "rangedweapons:awp_rrr", + load_sound = "rangedweapons_rifle_reload_a", + range = 0, + wield_scale = {x=1.9,y=1.9,z=1.1}, + description = "", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_awp.png", +}) +minetest.register_tool("rangedweapons:awp_rrr", { + rw_next_reload = "rangedweapons:awp", + load_sound = "rangedweapons_rifle_reload_b", + range = 0, + wield_scale = {x=1.9,y=1.9,z=1.1}, + description = "", + groups = {not_in_creative_inventory = 1}, + inventory_image = "rangedweapons_awp_rld.png", +}) + + +minetest.register_tool("rangedweapons:awp_rld", { + stack_max= 1, + range = 0, + wield_scale = {x=1.9,y=1.9,z=1.1}, + description = "", + loaded_gun = "rangedweapons:awp", + loaded_sound = "rangedweapons_rifle_reload_b", + 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:18 + 35/sec of bullet lifetime\n")..core.colorize("#FFFFFF", "Accuracy: 100%\n") ..core.colorize("#FFFFFF", "knockback: 15\n") ..core.colorize("#FFFFFF", "Critical chance: 30%\n") ..core.colorize("#FFFFFF", "Critical efficiency: x3\n") ..core.colorize("#FFFFFF", "Ammunition: 7.62mm round/308.Winchester rounds\n") ..core.colorize("#FFFFFF", "Rate of fire: 1.0\n") ..core.colorize("#FFFFFF", "Reload time: 2.0\n") ..core.colorize("#FFFFFF", "Zoom: 12x\n") ..core.colorize("#27a600", "The gun is loaded!\n") ..core.colorize("#FFFFFF", "Clip size: 10/10\n") ..core.colorize("#FFFFFF", "Enemy penetration:30%\n") ..core.colorize("#FFFFFF", "Block penetration:10%\n") ..core.colorize("#FFFFFF", "Gun type: Rifle\n") ..core.colorize("#FFFFFF", "Bullet velocity: 75"), + range = 0, + weapon_zoom = 7.5, + wield_scale = {x=1.9,y=1.9,z=1.1}, + inventory_image = "rangedweapons_awp.png", +RW_gun_capabilities = { + gun_damage = {fleshy=18,knockback=15}, + gun_crit = 30, + gun_critEffc = 3.0, + suitable_ammo = {{"rangedweapons:762mm",10},{"rangedweapons:308winchester",10}}, + gun_skill = {"rifle_skill",20}, + gun_magazine = "rangedweapons:rifle_mag", + gun_icon = "rangedweapons_awp_icon.png", + gun_unloaded = "rangedweapons:awp_r", + gun_cooling = "rangedweapons:awp_uld", + gun_velocity = 75, + gun_accuracy = 100, + gun_cooldown = 1.0, + gun_reload = 2.0/4, + gun_projectiles = 1, + has_shell = 0, + gun_durability = 700, + gun_smokeSize = 8, + gun_dps = 35, + gun_mob_penetration = 30, + gun_node_penetration = 10, + gun_unload_sound = "rangedweapons_rifle_clip_out", + gun_sound = "rangedweapons_rifle_b", + }, + on_secondary_use = function(itemstack, user, pointed_thing) +rangedweapons_reload_gun(itemstack, user) +return itemstack +end, + on_use = function(itemstack, user, pointed_thing) +rangedweapons_shoot_gun(itemstack, user) +return itemstack + end, + +}) + diff --git a/mods/rangedweapons/benelli.lua b/mods/rangedweapons/benelli.lua new file mode 100644 index 00000000..d99bf4c8 --- /dev/null +++ b/mods/rangedweapons/benelli.lua @@ -0,0 +1,63 @@ +minetest.register_tool("rangedweapons:benelli_rld", { + stack_max= 1, + range = 0, + wield_scale = {x=1.9,y=1.9,z=1.1}, + description = "", + loaded_gun = "rangedweapons:benelli", + loaded_sound = "rangedweapons_shotgun_reload_b", + 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: 2\n") ..core.colorize("#FFFFFF", "projectiles: 5\n") ..core.colorize("#FFFFFF", "Gun gravity: 4\n") ..core.colorize("#FFFFFF", "Accuracy: 48%\n")..core.colorize("#FFFFFF", "knockback: 6\n") ..core.colorize("#FFFFFF", "Critical chance: 6%\n") ..core.colorize("#FFFFFF", "Critical efficiency: 2.0x\n") ..core.colorize("#FFFFFF", "Ammunition: 12 gauge shells\n") ..core.colorize("#FFFFFF", "Pump delay: 0.6\n")..core.colorize("#FFFFFF", "Clip size: 7\n") ..core.colorize("#27a600", "Gun is ready to fire!\n") ..core.colorize("#fff21c", "Right-click to load in a bullet!\n") ..core.colorize("#FFFFFF", "Gun type: shotgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 26"), + range = 0, + wield_scale = {x=1.9,y=1.9,z=1.1}, + inventory_image = "rangedweapons_benelli.png", +RW_gun_capabilities = { + gun_damage = {fleshy=2,knockback=6}, + gun_crit = 6, + gun_critEffc = 2.0, + suitable_ammo = {{"rangedweapons:shell",7}}, + gun_skill = {"shotgun_skill",20}, + gun_icon = "rangedweapons_benelli_icon.png", + gun_unloaded = "rangedweapons:benelli_rld", + gun_cooling = "rangedweapons:benelli_uld", + gun_velocity = 25, + gun_accuracy = 48, + gun_cooldown = 0.6, + gun_gravity = 4, + gun_reload = 0.25, + gun_projectiles = 5, + has_shell = 0, + gun_durability = 325, + gun_smokeSize = 14, + gun_door_breaking = 1, + gun_sound = "rangedweapons_shotgun_shot", + gun_unload_sound = "rangedweapons_shell_insert", + }, + on_secondary_use = function(itemstack, user, pointed_thing) +rangedweapons_single_load_gun(itemstack, user, "") +return itemstack +end, + on_use = function(itemstack, user, pointed_thing) +rangedweapons_shoot_gun(itemstack, user) +return itemstack + end, +}) + +minetest.register_tool("rangedweapons:benelli_uld", { + stack_max= 1, + wield_scale = {x=1.9,y=1.9,z=1.1}, + range = 0, + description = "" ..core.colorize("#35cdff","benelli m3\n") ..core.colorize("#FFFFFF", "Ranged damage: 2\n") ..core.colorize("#FFFFFF", "projectiles: 5\n") ..core.colorize("#FFFFFF", "Gun gravity: 4\n") ..core.colorize("#FFFFFF", "Accuracy: 48%\n")..core.colorize("#FFFFFF", "knockback: 6\n") ..core.colorize("#FFFFFF", "Critical chance: 6%\n") ..core.colorize("#FFFFFF", "Critical efficiency: 2.0x\n") ..core.colorize("#FFFFFF", "Ammunition: 12 gauge shells\n") ..core.colorize("#FFFFFF", "Pump delay: 0.6\n")..core.colorize("#FFFFFF", "Clip size: 7\n") ..core.colorize("#be0d00", "Right-click, to eject the empty shell!\n") ..core.colorize("#fff21c", "Right-click to load in a bullet!\n") ..core.colorize("#FFFFFF", "Gun type: shotgun\n") ..core.colorize("#FFFFFF", "Bullet velocity: 25"), + inventory_image = "rangedweapons_benelli.png", + groups = {not_in_creative_inventory = 1}, + on_use = function(user) + minetest.sound_play("rangedweapons_empty", {user}) + end, +on_secondary_use = function(itemstack, user, pointed_thing) +eject_shell(itemstack,user,"rangedweapons:benelli_rld",0.6,"rangedweapons_shotgun_reload_a","rangedweapons:empty_shell") +return itemstack +end, +})