From cbc9904c4cec5c6fd39cbe8bdf6530c9cc5f38f8 Mon Sep 17 00:00:00 2001 From: MMMiracles Date: Sun, 13 Dec 2015 23:05:46 -0500 Subject: [PATCH] saw balance --- code/datums/uplink_item.dm | 27 ++- .../projectiles/ammunition/ammo_casings.dm | 6 - .../projectiles/ammunition/magazines.dm | 14 -- code/modules/projectiles/gun.dm | 7 +- .../projectiles/guns/projectile/automatic.dm | 60 ------- .../projectiles/guns/projectile/saw.dm | 162 ++++++++++++++++++ .../modules/projectiles/projectile/bullets.dm | 1 - tgstation.dme | 1 + 8 files changed, 192 insertions(+), 86 deletions(-) create mode 100644 code/modules/projectiles/guns/projectile/saw.dm diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 96bbfb32c56..a47f94a8fd6 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -148,14 +148,14 @@ var/list/uplink_items = list() surplus = 50 /datum/uplink_item/dangerous/carbine/unrestricted - item = /obj/item/weapon/gun/projectile/automatic/m90/unrestricted + item = /obj/itemdweapon/gun/projectile/automatic/m90/unrestricted gamemodes = list(/datum/game_mode/gang) /datum/uplink_item/dangerous/machinegun name = "L6 Squad Automatic Weapon" desc = "A fully-loaded Aussec Armoury belt-fed machine gun. This deadly weapon has a massive 50-round magazine of devastating 7.62x51mm ammunition." item = /obj/item/weapon/gun/projectile/automatic/l6_saw - cost = 40 + cost = 23 gamemodes = list(/datum/game_mode/nuclear) surplus = 0 @@ -360,10 +360,30 @@ var/list/uplink_items = list() name = "Box Magazine - 7.62x51mm" desc = "A 50-round magazine of 7.62x51mm ammunition for use in the L6 SAW machinegun. By the time you need to use this, you'll already be on a pile of corpses." item = /obj/item/ammo_box/magazine/m762 - cost = 12 + cost = 6 gamemodes = list(/datum/game_mode/nuclear) surplus = 0 +/datum/uplink_item/ammo/machinegun/bleeding + name = "Box Magazine - Bleeding 7.62x51mm" + desc = "A 50-round magazine of 7.62x51mm ammunition for use in the L6 SAW machinegun equipped with special properties to induce internal bleeding on targets." + item = /obj/item/ammo_box/magazine/m762/bleeding + +/datum/uplink_item/ammo/machinegun/hollow + name = "Box Magazine - Hollow 7.62x51mm" + desc = "A 50-round magazine of 7.62x51mm ammunition for use in the L6 SAW machinegun equipped with hollow-tips to help with the unarmored masses of crew." + item = /obj/item/ammo_box/magazine/m762/hollow + +/datum/uplink_item/ammo/machinegun/ap + name = "Box Magazine - Armor Penetrating 7.62x51mm" + desc = "A 50-round magazine of 7.62x51mm ammunition for use in the L6 SAW machinegun equipped with special properties to puncture even the most durable armor." + item = /obj/item/ammo_box/magazine/m762/ap + +/datum/uplink_item/ammo/machinegun/incen + name = "Box Magazine - Incendiary 7.62x51mm" + desc = "A 50-round magazine of 7.62x51mm ammunition for use in the L6 SAW machinegun, tipped with a special flammable mixture that'll ignite anyone struck by the bullet. Some men just want to watch the world burn." + item = /obj/item/ammo_box/magazine/m762/incen + /datum/uplink_item/ammo/toydarts //This used to only be for nuke ops, but had the cost lowered and made available to traitors because >a box of foam darts is more expensive than four carbine magazines name = "Box of Riot Darts" desc = "A box of 40 Donksoft foam riot darts, for reloading any compatible foam dart gun. Don't forget to share!" @@ -390,7 +410,6 @@ var/list/uplink_items = list() item = /obj/item/ammo_box/magazine/sniper_rounds/haemorrhage - // STEALTHY WEAPONS /datum/uplink_item/stealthy_weapons diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 23f713fac29..258f44f1eb5 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -212,12 +212,6 @@ reagents.add_reagent("coniine", 6) reagents.add_reagent("sodium_thiopental", 6) -/obj/item/ammo_casing/a762 - desc = "A 7.62mm bullet casing." - icon_state = "762-casing" - caliber = "a762" - projectile_type = /obj/item/projectile/bullet - /obj/item/ammo_casing/a556 desc = "A 5.56mm bullet casing." caliber = "a556" diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 5fb78c075aa..6037b1c666e 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -270,20 +270,6 @@ obj/item/ammo_box/magazine/tommygunm45 max_ammo = 30 multiple_sprites = 2 -/obj/item/ammo_box/magazine/m762 - name = "box magazine (7.62mm)" - icon_state = "a762-50" - origin_tech = "combat=2" - ammo_type = /obj/item/ammo_casing/a762 - caliber = "a762" - max_ammo = 50 - -/obj/item/ammo_box/magazine/m762/update_icon() - ..() - icon_state = "a762-[round(ammo_count(),10)]" - - - /obj/item/ammo_box/magazine/m12g name = "shotgun magazine (12g slugs)" icon_state = "m12gb" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 2c5dcaf5023..54b6825217c 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -346,6 +346,8 @@ SetLuminosity(0) if(azoom) azoom.Grant(user) + if(agrip) + agrip.Grant(user) /obj/item/weapon/gun/dropped(mob/user) if(F) @@ -355,6 +357,9 @@ zoom(user,FALSE) if(azoom) azoom.Remove(user) + if(agrip) + agrip.Remove(user) + /obj/item/weapon/gun/attack_hand(mob/user) if(unique_reskin && !reskinned && loc == user) @@ -486,4 +491,4 @@ if(zoomable) azoom = new() - azoom.gun = src \ No newline at end of file + azoom.gun = src diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 804e7d151ea..c0fc74d0a7f 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -135,66 +135,6 @@ mag_type = /obj/item/ammo_box/magazine/uzim9mm burst_size = 2 -/obj/item/weapon/gun/projectile/automatic/l6_saw - name = "\improper L6 SAW" - desc = "A heavily modified 7.62 light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the receiver below the designation." - icon_state = "l6closed100" - item_state = "l6closedmag" - w_class = 5 - slot_flags = 0 - origin_tech = "combat=5;materials=1;syndicate=2" - mag_type = /obj/item/ammo_box/magazine/m762 - fire_sound = 'sound/weapons/Gunshot_smg.ogg' - var/cover_open = 0 - can_suppress = 0 - burst_size = 5 - fire_delay = 3 - pin = /obj/item/device/firing_pin/implant/pindicate - -/obj/item/weapon/gun/projectile/automatic/l6_saw/unrestricted - pin = /obj/item/device/firing_pin - - -/obj/item/weapon/gun/projectile/automatic/l6_saw/attack_self(mob/user) - cover_open = !cover_open - user << "You [cover_open ? "open" : "close"] [src]'s cover." - update_icon() - - -/obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon() - icon_state = "l6[cover_open ? "open" : "closed"][magazine ? Ceiling(get_ammo(0)/12.5)*25 : "-empty"]" - - -/obj/item/weapon/gun/projectile/automatic/l6_saw/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) //what I tried to do here is just add a check to see if the cover is open or not and add an icon_state change because I can't figure out how c-20rs do it with overlays - if(cover_open) - user << "[src]'s cover is open! Close it before firing!" - else - ..() - update_icon() - - -/obj/item/weapon/gun/projectile/automatic/l6_saw/attack_hand(mob/user) - if(loc != user) - ..() - return //let them pick it up - if(!cover_open || (cover_open && !magazine)) - ..() - else if(cover_open && magazine) - //drop the mag - magazine.update_icon() - magazine.loc = get_turf(src.loc) - user.put_in_hands(magazine) - magazine = null - update_icon() - user << "You remove the magazine from [src]." - - -/obj/item/weapon/gun/projectile/automatic/l6_saw/attackby(obj/item/A, mob/user, params) - if(!cover_open) - user << "[src]'s cover is closed! You can't insert a new mag." - return - ..() - /obj/item/weapon/gun/projectile/automatic/m90 name = "\improper M-90gl Carbine" desc = "A three-round burst 5.56 toploading carbine, designated 'M-90gl'. Has an attached underbarrel grenade launcher which can be toggled on and off." diff --git a/code/modules/projectiles/guns/projectile/saw.dm b/code/modules/projectiles/guns/projectile/saw.dm new file mode 100644 index 00000000000..7d54685f070 --- /dev/null +++ b/code/modules/projectiles/guns/projectile/saw.dm @@ -0,0 +1,162 @@ +/obj/item/weapon/gun/projectile/automatic/l6_saw + name = "\improper L6 SAW" + desc = "A heavily modified 7.62 light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the receiver below the designation." + icon_state = "l6closed100" + item_state = "l6closedmag" + w_class = 5 + slot_flags = 0 + origin_tech = "combat=5;materials=1;syndicate=2" + mag_type = /obj/item/ammo_box/magazine/m762 + heavy_weapon = 1 + fire_sound = 'sound/weapons/Gunshot_smg.ogg' + var/cover_open = 0 + can_suppress = 0 + burst_size = 3 + fire_delay = 1 + pin = /obj/item/device/firing_pin/implant/pindicate + +/obj/item/weapon/gun/projectile/automatic/l6_saw/unrestricted + pin = /obj/item/device/firing_pin + + +/obj/item/weapon/gun/projectile/automatic/l6_saw/attack_self(mob/user) + cover_open = !cover_open + user << "You [cover_open ? "open" : "close"] [src]'s cover." + update_icon() + + +/obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon() + icon_state = "l6[cover_open ? "open" : "closed"][magazine ? Ceiling(get_ammo(0)/12.5)*25 : "-empty"]" + + +/obj/item/weapon/gun/projectile/automatic/l6_saw/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) //what I tried to do here is just add a check to see if the cover is open or not and add an icon_state change because I can't figure out how c-20rs do it with overlays + if(cover_open) + user << "[src]'s cover is open! Close it before firing!" + else + ..() + update_icon() + + +/obj/item/weapon/gun/projectile/automatic/l6_saw/attack_hand(mob/user) + if(loc != user) + ..() + return //let them pick it up + if(!cover_open || (cover_open && !magazine)) + ..() + else if(cover_open && magazine) + //drop the mag + magazine.update_icon() + magazine.loc = get_turf(src.loc) + user.put_in_hands(magazine) + magazine = null + update_icon() + user << "You remove the magazine from [src]." + + +/obj/item/weapon/gun/projectile/automatic/l6_saw/attackby(obj/item/A, mob/user, params) + if(!cover_open) + user << "[src]'s cover is closed! You can't insert a new mag." + return + ..() + + +//ammo// + + +/obj/item/projectile/bullet/saw + damage = 35 + armour_penetration = 5 + +/obj/item/projectile/bullet/saw/bleeding + damage = 15 + armour_penetration = 0 + +/obj/item/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = 0, hit_zone) + if((blocked != 100) && istype(target, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = target + H.drip(25) + +/obj/item/projectile/bullet/saw/hollow + damage = 45 + armour_penetration = 0 + +/obj/item/projectile/bullet/saw/ap + damage = 30 + armour_penetration = 35 + +/obj/item/projectile/bullet/saw/incen + damage = 5 + armour_penetration = 0 + +/obj/item/projectile/bullet/saw/incen/on_hit(atom/target, blocked = 0) + . = ..() + if(iscarbon(target)) + var/mob/living/carbon/M = target + M.adjust_fire_stacks(1) + M.IgniteMob() + + +//magazines// + + +/obj/item/ammo_box/magazine/m762 + name = "box magazine (7.62mm)" + icon_state = "a762-50" + origin_tech = "combat=2" + ammo_type = /obj/item/ammo_casing/a762 + caliber = "a762" + max_ammo = 50 + +/obj/item/ammo_box/magazine/m762/bleeding + name = "box magazine (Bleeding 7.62mm)" + origin_tech = "combat=3" + ammo_type = /obj/item/ammo_casing/a762/bleeding + +/obj/item/ammo_box/magazine/m762/hollow + name = "box magazine (Hollow-Point 7.62mm)" + origin_tech = "combat=3" + ammo_type = /obj/item/ammo_casing/a762/hollow + +/obj/item/ammo_box/magazine/m762/ap + name = "box magazine (Armor Penetrating 7.62mm)" + origin_tech = "combat=4" + ammo_type = /obj/item/ammo_casing/a762/ap + +/obj/item/ammo_box/magazine/m762/incen + name = "box magazine (Incendiary 7.62mm)" + origin_tech = "combat=4" + ammo_type = /obj/item/ammo_casing/a762/incen + +/obj/item/ammo_box/magazine/m762/update_icon() + ..() + icon_state = "a762-[round(ammo_count(),10)]" + + +//casings// + + +/obj/item/ammo_casing/a762 + desc = "A 7.62mm bullet casing." + icon_state = "762-casing" + caliber = "a762" + projectile_type = /obj/item/projectile/bullet/saw + +/obj/item/ammo_casing/a762/bleeding + desc = "A 7.62mm bullet casing with specialized inner-casing, that when it makes contact with a target, release tiny shrapnel to induce internal bleeding." + icon_state = "762-casing" + caliber = "a762" + projectile_type = /obj/item/projectile/bullet/saw/bleeding + +/obj/item/ammo_casing/a762/hollow + desc = "A 7.62mm bullet casing designed to cause more damage to unarmored targets." + projectile_type = /obj/item/projectile/bullet/saw/hollow + +/obj/item/ammo_casing/a762/ap + desc = "A 7.62mm bullet casing designed with a hardened-tipped core to help penetrate armored targets." + projectile_type = /obj/item/projectile/bullet/saw/ap + +/obj/item/ammo_casing/a762/incen + desc = "A 7.62mm bullet casing designed with a chemical-filled capsule on the tip that when bursted, reacts with the atmosphere to produce a fireball, engulfing the target in flames. " + projectile_type = /obj/item/projectile/bullet/saw/incen + + diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index fda0ec76a94..9a28155154b 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -6,7 +6,6 @@ nodamage = 0 flag = "bullet" - /obj/item/projectile/bullet/weakbullet //beanbag, heavy stamina damage damage = 5 stamina = 80 diff --git a/tgstation.dme b/tgstation.dme index 8c72aa916b8..0eb6c9ae083 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1477,6 +1477,7 @@ #include "code\modules\projectiles\guns\projectile\launchers.dm" #include "code\modules\projectiles\guns\projectile\pistol.dm" #include "code\modules\projectiles\guns\projectile\revolver.dm" +#include "code\modules\projectiles\guns\projectile\saw.dm" #include "code\modules\projectiles\guns\projectile\shotgun.dm" #include "code\modules\projectiles\guns\projectile\sniper.dm" #include "code\modules\projectiles\guns\projectile\toy.dm"