From bc561789c27c97917f73f904997d68d1bae7e086 Mon Sep 17 00:00:00 2001 From: Remie Richards Date: Fri, 11 Dec 2015 01:02:59 +0000 Subject: [PATCH 1/4] Adds a sniper rifle and 3 ammo types to the Nuclear Operative uplink. --- code/datums/uplink_item.dm | 29 ++++ .../projectiles/guns/projectile/sniper.dm | 161 ++++++++++++++++++ icons/mob/actions.dmi | Bin 69587 -> 69781 bytes icons/obj/ammo.dmi | Bin 18578 -> 18844 bytes tgstation.dme | 1 + 5 files changed, 191 insertions(+) create mode 100644 code/modules/projectiles/guns/projectile/sniper.dm diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 561a583bc7c..96bbfb32c56 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -266,6 +266,15 @@ var/list/uplink_items = list() excludefrom = list(/datum/game_mode/nuclear,/datum/game_mode/gang) cost = 12 +/datum/uplink_item/dangerous/sniper + name = "Sniper Rifle" + desc = "Ranged fury, syndicate style. guaranteed to cause shock and awe or your TC back!" + item = /obj/item/weapon/gun/projectile/sniper_rifle/syndicate + cost = 16 + gamemodes = list(/datum/game_mode/nuclear) + surplus = 25 + + // AMMUNITION /datum/uplink_item/ammo @@ -362,6 +371,26 @@ var/list/uplink_items = list() cost = 2 surplus = 0 +/datum/uplink_item/ammo/sniper + name = "Sniper Magazine - .50" + desc = "An additional 6-round .50 magazine for use in the syndicate sniper rifle." + item = /obj/item/ammo_box/magazine/sniper_rounds + cost = 4 //70dmg rounds are no joke + gamemodes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/sniper/soporific + name = "Sniper Magazine - Soporific Rounds" + desc = "A 3-round magazine of soporific ammo designed for use in the syndicate sniper rifle, put your enemies to sleep today!" + item = /obj/item/ammo_box/magazine/sniper_rounds/soporific + cost = 6 + +/datum/uplink_item/ammo/sniper/haemorrhage + name = "Sniper Magazine - Haemorrhage Rounds" + desc = "A 5-round magazine of haemorrhage ammo designed for use in the syndicate sniper rifle, causes heavy bleeding in the target." + item = /obj/item/ammo_box/magazine/sniper_rounds/haemorrhage + + + // STEALTHY WEAPONS /datum/uplink_item/stealthy_weapons diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm new file mode 100644 index 00000000000..31c3e09d8ad --- /dev/null +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -0,0 +1,161 @@ + +/obj/item/weapon/gun/projectile/sniper_rifle + name = "sniper rifle" + desc = "the kind of gun that will leave you crying for mummy before you even realise your leg's missing" + icon_state = "moistnugget" + item_state = "moistnugget" + recoil = 2 + heavy_weapon = 1 + mag_type = /obj/item/ammo_box/magazine/sniper_rounds + fire_delay = 40 + origin_tech = "combat=8" + var/zoomed = FALSE + var/zoom_amt = 7 + var/datum/action/sniper_zoom/azoom + +/obj/item/weapon/gun/projectile/sniper_rifle/syndicate + name = "syndicate sniper rifle" + desc = "syndicate flavoured sniper rifle, it packs quite a punch, a punch to your face" + pin = /obj/item/device/firing_pin/implant/pindicate + origin_tech = "combat=8;syndicate=4" + +/obj/item/weapon/gun/projectile/sniper_rifle/New() + ..() + azoom = new() + azoom.rifle = src + +/obj/item/weapon/gun/projectile/sniper_rifle/dropped(mob/living/user) + azoom.Remove(user) + +/obj/item/weapon/gun/projectile/sniper_rifle/pickup(mob/living/user) + azoom.Grant(user) + +/obj/item/weapon/gun/projectile/sniper_rifle/proc/zoom(mob/living/user) + if(!user || !user.client) + return + + zoomed = !zoomed + if(zoomed) + var/_x = 0 + var/_y = 0 + switch(user.dir) + if(NORTH) + _y = zoom_amt + if(EAST) + _x = zoom_amt + if(SOUTH) + _y = -zoom_amt + if(WEST) + _x = -zoom_amt + + user.client.pixel_x = world.icon_size*_x + user.client.pixel_y = world.icon_size*_y + else + user.client.pixel_x = 0 + user.client.pixel_y = 0 + +/obj/item/weapon/gun/projectile/sniper_rifle/can_shoot() + if(..()) + if(zoomed) + return 1 + return 0 + + + + +/datum/action/sniper_zoom + name = "Zoom Sniper Rifle" + check_flags = AB_CHECK_ALIVE + button_icon_state = "sniper_zoom" + var/obj/item/weapon/gun/projectile/sniper_rifle/rifle = null + +/datum/action/sniper_zoom/Trigger() + rifle.zoom(owner) + + + + +//Normal Boolets +/obj/item/ammo_box/magazine/sniper_rounds + name = "sniper rounds (.50)" + icon_state = ".50" + origin_tech = "combat=6;syndicate=2" + ammo_type = /obj/item/ammo_casing/point50 + max_ammo = 6 + caliber = ".50" + +/obj/item/ammo_casing/point50 + desc = "A .50 bullet casing." + caliber = ".50" + projectile_type = /obj/item/projectile/bullet/sniper + +/obj/item/projectile/bullet/sniper + damage = 70 + stun = 5 + weaken = 5 + var/breakthings = TRUE + +/obj/item/projectile/bullet/sniper/on_hit(atom/target, blocked = 0, hit_zone) + if((blocked != 100) && (!ismob(target) && breakthings)) + target.ex_act(rand(1,2)) + + return ..() + + +//Sleepy ammo +/obj/item/ammo_box/magazine/sniper_rounds/soporific + name = "sniper rounds (Zzzzz)" + desc = "Soporific sniper rounds, designed for happy days and dead quiet nights..." + icon_state = "soporific" + origin_tech = "combat=6;syndicate=3" + ammo_type = /obj/item/ammo_casing/soporific + max_ammo = 3 + caliber = ".50" + +/obj/item/ammo_casing/soporific + desc = "A .50 bullet casing, specialised in sending the target to sleep, instead of hell." + caliber = ".50" + projectile_type = /obj/item/projectile/bullet/sniper/soporific + +/obj/item/projectile/bullet/sniper/soporific + nodamage = 1 + stun = 0 + weaken = 0 + breakthings = FALSE + +/obj/item/projectile/bullet/sniper/soporific/on_hit(atom/target, blocked = 0, hit_zone) + if((blocked != 100) && istype(target, /mob/living)) + var/mob/living/L = target + L.SetSleeping(20) + + return ..() + + + +//hemorrhage ammo +/obj/item/ammo_box/magazine/sniper_rounds/haemorrhage + name = "sniper rounds (Bleed)" + desc = "Haemorrhage sniper rounds, leaves your target in a pool of crimson pain" + icon_state = "haemorrhage" + origin_tech = "combat=7;syndicate=5" + ammo_type = /obj/item/ammo_casing/haemorrhage + max_ammo = 5 + caliber = ".50" + +/obj/item/ammo_casing/haemorrhage + desc = "A .50 bullet casing, specialised in causing massive bloodloss" + caliber = ".50" + projectile_type = /obj/item/projectile/bullet/sniper/haemorrhage + +/obj/item/projectile/bullet/sniper/haemorrhage + damage = 15 + stun = 0 + weaken = 0 + breakthings = FALSE + +/obj/item/projectile/bullet/sniper/haemorrhage/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(100) + + return ..() \ No newline at end of file diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index ac3b0ff7a01d034327727aa71b51969e4b2c2626..cb410366fe5d78c9a1e6c00e7d6514c385d6865d 100644 GIT binary patch delta 10749 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 delta 10547 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 Tck>3Gy2Rk=>gTe~DWM4fduu!K literal 18578 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 eE%QtM^QYc)^?11c0uS)4AqG!ZKbLh*2~7aA Date: Fri, 11 Dec 2015 15:10:09 +0000 Subject: [PATCH 2/4] Reallows Noscopes, Losing the weapon/Being stunned/Dying correctly unzooms you. --- .../projectiles/guns/projectile/sniper.dm | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 31c3e09d8ad..4ecc7799987 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -25,16 +25,24 @@ azoom.rifle = src /obj/item/weapon/gun/projectile/sniper_rifle/dropped(mob/living/user) + zoom(user,FALSE) azoom.Remove(user) /obj/item/weapon/gun/projectile/sniper_rifle/pickup(mob/living/user) azoom.Grant(user) -/obj/item/weapon/gun/projectile/sniper_rifle/proc/zoom(mob/living/user) +/obj/item/weapon/gun/projectile/sniper_rifle/proc/zoom(mob/living/user, forced_zoom) if(!user || !user.client) return - zoomed = !zoomed + switch(forced_zoom) + if(FALSE) + zoomed = FALSE + if(TRUE) + zoomed = TRUE + else + zoomed = !zoomed + if(zoomed) var/_x = 0 var/_y = 0 @@ -54,24 +62,27 @@ user.client.pixel_x = 0 user.client.pixel_y = 0 -/obj/item/weapon/gun/projectile/sniper_rifle/can_shoot() - if(..()) - if(zoomed) - return 1 - return 0 - /datum/action/sniper_zoom name = "Zoom Sniper Rifle" - check_flags = AB_CHECK_ALIVE + check_flags = AB_CHECK_ALIVE|AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_LYING button_icon_state = "sniper_zoom" var/obj/item/weapon/gun/projectile/sniper_rifle/rifle = null /datum/action/sniper_zoom/Trigger() rifle.zoom(owner) +/datum/action/sniper_zoom/IsAvailable() + . = ..() + if(!. && rifle) + rifle.zoom(owner, FALSE) + +/datum/action/sniper_zoom/Remove(mob/living/L) + rifle.zoom(L, FALSE) + ..() + From a49fdc0cc7b3c93fbaa1a32bf0c3768675723188 Mon Sep 17 00:00:00 2001 From: Remie Richards Date: Fri, 11 Dec 2015 15:22:47 +0000 Subject: [PATCH 3/4] Allows the sniper rifle to be suppressed and unsuppressed. --- code/modules/projectiles/guns/projectile/sniper.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 4ecc7799987..d25f2443863 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -9,6 +9,9 @@ mag_type = /obj/item/ammo_box/magazine/sniper_rounds fire_delay = 40 origin_tech = "combat=8" + can_unsuppress = 1 + can_suppress = 1 + w_class = 3 var/zoomed = FALSE var/zoom_amt = 7 var/datum/action/sniper_zoom/azoom From 36d2f54c69c3ab7121690dfeb70e6dfc6845e074 Mon Sep 17 00:00:00 2001 From: Remie Richards Date: Sat, 12 Dec 2015 15:26:17 +0000 Subject: [PATCH 4/4] Zooming is now a /gun level ability, enable-able at gun creation via a "zoomable" var, Zooming can be properly enabled externally by calling the build_zooming() proc on any gun. --- code/modules/projectiles/gun.dm | 82 ++++++++++++++++++- .../projectiles/guns/projectile/sniper.dm | 69 +--------------- 2 files changed, 84 insertions(+), 67 deletions(-) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index d64258b66af..2c5dcaf5023 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -55,11 +55,21 @@ var/flight_x_offset = 0 var/flight_y_offset = 0 + //Zooming + var/zoomable = FALSE //whether the gun generates a Zoom action on creation + var/zoomed = FALSE //Zoom toggle + var/zoom_amt = 3 //Distance in TURFs to move the user's screen forward (the "zoom" effect) + var/datum/action/toggle_scope_zoom/azoom + + /obj/item/weapon/gun/New() ..() if(pin) pin = new pin(src) + build_zooming() + + /obj/item/weapon/gun/CheckParts() var/obj/item/weapon/gun/G = locate(/obj/item/weapon/gun) in contents if(G) @@ -334,13 +344,17 @@ if(F.on) user.AddLuminosity(F.brightness_on) SetLuminosity(0) + if(azoom) + azoom.Grant(user) /obj/item/weapon/gun/dropped(mob/user) if(F) if(F.on) user.AddLuminosity(-F.brightness_on) SetLuminosity(F.brightness_on) - + zoom(user,FALSE) + if(azoom) + azoom.Remove(user) /obj/item/weapon/gun/attack_hand(mob/user) if(unique_reskin && !reskinned && loc == user) @@ -407,3 +421,69 @@ chambered.BB.damage *= 5 process_fire(target, user, 1, params) + + +///////////// +// ZOOMING // +///////////// + +/datum/action/toggle_scope_zoom + name = "Toggle Scope" + check_flags = AB_CHECK_ALIVE|AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_LYING + button_icon_state = "sniper_zoom" + var/obj/item/weapon/gun/gun = null + +/datum/action/toggle_scope_zoom/Trigger() + gun.zoom(owner) + +/datum/action/toggle_scope_zoom/IsAvailable() + . = ..() + if(!. && gun) + gun.zoom(owner, FALSE) + +/datum/action/toggle_scope_zoom/Remove(mob/living/L) + gun.zoom(L, FALSE) + ..() + + + +/obj/item/weapon/gun/proc/zoom(mob/living/user, forced_zoom) + if(!user || !user.client) + return + + switch(forced_zoom) + if(FALSE) + zoomed = FALSE + if(TRUE) + zoomed = TRUE + else + zoomed = !zoomed + + if(zoomed) + var/_x = 0 + var/_y = 0 + switch(user.dir) + if(NORTH) + _y = zoom_amt + if(EAST) + _x = zoom_amt + if(SOUTH) + _y = -zoom_amt + if(WEST) + _x = -zoom_amt + + user.client.pixel_x = world.icon_size*_x + user.client.pixel_y = world.icon_size*_y + else + user.client.pixel_x = 0 + user.client.pixel_y = 0 + + +//Proc, so that gun accessories/scopes/etc. can easily add zooming. +/obj/item/weapon/gun/proc/build_zooming() + if(azoom) + return + + if(zoomable) + azoom = new() + azoom.gun = src \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index d25f2443863..4cfff29784c 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -12,9 +12,9 @@ can_unsuppress = 1 can_suppress = 1 w_class = 3 - var/zoomed = FALSE - var/zoom_amt = 7 - var/datum/action/sniper_zoom/azoom + zoomable = TRUE + zoom_amt = 7 //Long range, enough to see in front of you, but no tiles behind you. + /obj/item/weapon/gun/projectile/sniper_rifle/syndicate name = "syndicate sniper rifle" @@ -22,69 +22,6 @@ pin = /obj/item/device/firing_pin/implant/pindicate origin_tech = "combat=8;syndicate=4" -/obj/item/weapon/gun/projectile/sniper_rifle/New() - ..() - azoom = new() - azoom.rifle = src - -/obj/item/weapon/gun/projectile/sniper_rifle/dropped(mob/living/user) - zoom(user,FALSE) - azoom.Remove(user) - -/obj/item/weapon/gun/projectile/sniper_rifle/pickup(mob/living/user) - azoom.Grant(user) - -/obj/item/weapon/gun/projectile/sniper_rifle/proc/zoom(mob/living/user, forced_zoom) - if(!user || !user.client) - return - - switch(forced_zoom) - if(FALSE) - zoomed = FALSE - if(TRUE) - zoomed = TRUE - else - zoomed = !zoomed - - if(zoomed) - var/_x = 0 - var/_y = 0 - switch(user.dir) - if(NORTH) - _y = zoom_amt - if(EAST) - _x = zoom_amt - if(SOUTH) - _y = -zoom_amt - if(WEST) - _x = -zoom_amt - - user.client.pixel_x = world.icon_size*_x - user.client.pixel_y = world.icon_size*_y - else - user.client.pixel_x = 0 - user.client.pixel_y = 0 - - - - -/datum/action/sniper_zoom - name = "Zoom Sniper Rifle" - check_flags = AB_CHECK_ALIVE|AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_LYING - button_icon_state = "sniper_zoom" - var/obj/item/weapon/gun/projectile/sniper_rifle/rifle = null - -/datum/action/sniper_zoom/Trigger() - rifle.zoom(owner) - -/datum/action/sniper_zoom/IsAvailable() - . = ..() - if(!. && rifle) - rifle.zoom(owner, FALSE) - -/datum/action/sniper_zoom/Remove(mob/living/L) - rifle.zoom(L, FALSE) - ..()