diff --git a/_maps/templates/battlecruiser_starfury.dmm b/_maps/templates/battlecruiser_starfury.dmm index f0434551600..efb8541bafd 100644 --- a/_maps/templates/battlecruiser_starfury.dmm +++ b/_maps/templates/battlecruiser_starfury.dmm @@ -2619,7 +2619,7 @@ /obj/machinery/light/directional/east, /obj/item/storage/belt/military, /obj/item/ammo_box/magazine/sniper_rounds, -/obj/item/gun/ballistic/automatic/sniper_rifle/syndicate, +/obj/item/gun/ballistic/rifle/sniper_rifle/syndicate, /turf/open/floor/pod/light, /area/shuttle/sbc_starfury) "iq" = ( diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 81918765e98..b76720344df 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -604,7 +604,7 @@ new /obj/item/ammo_box/magazine/smgm45(src) new /obj/item/ammo_box/magazine/smgm45(src) new /obj/item/gun/ballistic/automatic/c20r(src) - new /obj/item/suppressor/specialoffer(src) + new /obj/item/suppressor(src) /obj/item/storage/backpack/duffelbag/syndie/bulldogbundle desc = "A large duffel bag containing a Bulldog, some drums, and a pair of thermal imaging glasses." diff --git a/code/game/objects/items/storage/briefcase.dm b/code/game/objects/items/storage/briefcase.dm index e675106287c..299c10df5af 100644 --- a/code/game/objects/items/storage/briefcase.dm +++ b/code/game/objects/items/storage/briefcase.dm @@ -66,9 +66,9 @@ /obj/item/storage/briefcase/sniperbundle/PopulateContents() ..() // in case you need any paperwork done after your rampage - new /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate(src) + new /obj/item/gun/ballistic/rifle/sniper_rifle/syndicate(src) new /obj/item/clothing/neck/tie/red/hitman(src) new /obj/item/clothing/under/syndicate/sniper(src) - new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) - new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) - new /obj/item/suppressor/specialoffer(src) + new /obj/item/ammo_box/magazine/sniper_rounds/disruptor(src) + new /obj/item/ammo_box/magazine/sniper_rounds/disruptor(src) + new /obj/item/suppressor(src) diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 08ad1d4bc81..4e48385e668 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -138,7 +138,7 @@ new /obj/item/storage/box/syndie_kit/emp(src) // 2 tc if(KIT_SNIPER) //This shit is unique so can't really balance it around tc, also no silencer because getting killed without ANY indicator on what killed you sucks - new /obj/item/gun/ballistic/automatic/sniper_rifle(src) // 12 tc + new /obj/item/gun/ballistic/rifle/sniper_rifle(src) // 12 tc new /obj/item/ammo_box/magazine/sniper_rounds/penetrator(src) // 5 tc new /obj/item/clothing/glasses/thermal/syndi(src) // 4 tc new /obj/item/clothing/gloves/latex/nitrile(src) // ~ 1 tc for outfit @@ -570,6 +570,16 @@ new /obj/item/toy/plush/carpplushie(src) new /obj/item/bedsheet/syndie(src) +/// Surplus Ammo Box + +/obj/item/storage/box/syndie_kit/surplus + name = "surplus .50 BMG magazine box" + desc = "A shoddy box full of surplus .50 BMG magazines. Not as strong, but good enough to keep lead in the air." + +/obj/item/storage/box/syndie_kit/surplus/PopulateContents() + for(var/i in 1 to 7) + new /obj/item/ammo_box/magazine/sniper_rounds/surplus(src) + ///Subtype for the sabotage bundle. Contains three C4, two X4 and 6 signalers /obj/item/storage/backpack/duffelbag/syndie/sabotage diff --git a/code/game/objects/structures/mystery_box.dm b/code/game/objects/structures/mystery_box.dm index 817b0f4ba45..1fc38f8b8b2 100644 --- a/code/game/objects/structures/mystery_box.dm +++ b/code/game/objects/structures/mystery_box.dm @@ -47,7 +47,7 @@ GLOBAL_LIST_INIT(mystery_box_guns, list( /obj/item/gun/ballistic/automatic/m90, /obj/item/gun/ballistic/automatic/tommygun, /obj/item/gun/ballistic/automatic/wt550, - /obj/item/gun/ballistic/automatic/sniper_rifle, + /obj/item/gun/ballistic/rifle/sniper_rifle, /obj/item/gun/ballistic/rifle/boltaction/brand_new, )) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 0a98fae16b5..e464d4b16b1 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -59,6 +59,8 @@ var/obj/item/bodypart/affecting = get_bodypart(def_zone) if(affecting && affecting.dismemberable && affecting.get_damage() >= (affecting.max_damage - P.dismemberment)) affecting.dismember(P.damtype) + if(P.catastropic_dismemberment) + apply_damage(P.damage, P.damtype, BODY_ZONE_CHEST, wound_bonus = P.wound_bonus) //stops a projectile blowing off a limb effectively doing no damage. Mostly relevant for sniper rifles. /mob/living/carbon/proc/can_catch_item(skip_throw_mode_check) . = FALSE diff --git a/code/modules/mob_spawn/ghost_roles/mining_roles.dm b/code/modules/mob_spawn/ghost_roles/mining_roles.dm index 49fb6f1d303..f7ae8f35c4f 100644 --- a/code/modules/mob_spawn/ghost_roles/mining_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/mining_roles.dm @@ -299,7 +299,7 @@ ears = /obj/item/radio/headset/syndicate/alt shoes = /obj/item/clothing/shoes/combat r_pocket = /obj/item/gun/ballistic/automatic/pistol - r_hand = /obj/item/gun/ballistic/automatic/sniper_rifle + r_hand = /obj/item/gun/ballistic/rifle/sniper_rifle implants = list(/obj/item/implant/weapons_auth) diff --git a/code/modules/projectiles/ammunition/ballistic/sniper.dm b/code/modules/projectiles/ammunition/ballistic/sniper.dm index 3749520a522..19068ad6358 100644 --- a/code/modules/projectiles/ammunition/ballistic/sniper.dm +++ b/code/modules/projectiles/ammunition/ballistic/sniper.dm @@ -1,25 +1,34 @@ // .50 (Sniper) /obj/item/ammo_casing/p50 - name = ".50 bullet casing" - desc = "A .50 bullet casing." + name = ".50 BMG bullet casing" + desc = "A .50 BMG bullet casing." caliber = CALIBER_50 projectile_type = /obj/projectile/bullet/p50 icon_state = ".50" -/obj/item/ammo_casing/p50/soporific - name = ".50 soporific bullet casing" - desc = "A .50 bullet casing, specialised in sending the target to sleep, instead of hell." - projectile_type = /obj/projectile/bullet/p50/soporific - icon_state = "sleeper" - harmful = FALSE +/obj/item/ammo_casing/p50/surplus + name = ".50 BMG surplus bullet casing" + desc = "A .50 BMG surplus bullet casing." + projectile_type = /obj/projectile/bullet/p50/surplus + +/obj/item/ammo_casing/p50/disruptor + name = ".50 BMG disruptor bullet casing" + desc = "A .50 BMG disruptor bullet casing." + projectile_type = /obj/projectile/bullet/p50/disruptor + icon_state = ".50disruptor" + +/obj/item/ammo_casing/p50/incendiary + name = ".50 BMG incendiary bullet casing" + desc = "A .50 BMG incendiary bullet casing." + projectile_type = /obj/projectile/bullet/p50/incendiary /obj/item/ammo_casing/p50/penetrator - name = ".50 penetrator round bullet casing" - desc = "A .50 caliber penetrator round casing." + name = ".50 BMG penetrator round bullet casing" + desc = "A .50 BMG penetrator round casing." projectile_type = /obj/projectile/bullet/p50/penetrator /obj/item/ammo_casing/p50/marksman - name = ".50 marksman round bullet casing" + name = ".50 BMG marksman round bullet casing" desc = "A .50 caliber marksman round casing." projectile_type = /obj/projectile/bullet/p50/marksman diff --git a/code/modules/projectiles/boxes_magazines/external/pistol.dm b/code/modules/projectiles/boxes_magazines/external/pistol.dm index 072e990256d..72b13bd58f3 100644 --- a/code/modules/projectiles/boxes_magazines/external/pistol.dm +++ b/code/modules/projectiles/boxes_magazines/external/pistol.dm @@ -1,7 +1,7 @@ /obj/item/ammo_box/magazine/m10mm name = "pistol magazine (10mm)" desc = "A gun magazine." - icon_state = "9x19p-full" + icon_state = "9x19p" base_icon_state = "9x19p" ammo_type = /obj/item/ammo_casing/c10mm caliber = CALIBER_10MM @@ -13,21 +13,21 @@ name = "pistol magazine (10mm incendiary)" icon_state = "9x19pI" base_icon_state = "9x19pI" - desc = "A gun magazine. Loaded with rounds which ignite the target." + desc = "A 10mm pistol magazine. Loaded with rounds which ignite the target." ammo_type = /obj/item/ammo_casing/c10mm/fire /obj/item/ammo_box/magazine/m10mm/hp name = "pistol magazine (10mm HP)" icon_state = "9x19pH" base_icon_state = "9x19pH" - desc= "A gun magazine. Loaded with hollow-point rounds, extremely effective against unarmored targets, but nearly useless against protective clothing." + desc= "A 10mm pistol magazine. Loaded with hollow-point rounds, extremely effective against unarmored targets, but nearly useless against protective clothing." ammo_type = /obj/item/ammo_casing/c10mm/hp /obj/item/ammo_box/magazine/m10mm/ap name = "pistol magazine (10mm AP)" icon_state = "9x19pA" base_icon_state = "9x19pA" - desc= "A gun magazine. Loaded with rounds which penetrate armour, but are less effective against normal targets." + desc= "A 10mm pistol magazine. Loaded with rounds which penetrate armour, but are less effective against normal targets." ammo_type = /obj/item/ammo_casing/c10mm/ap /obj/item/ammo_box/magazine/m45 @@ -42,7 +42,7 @@ /obj/item/ammo_box/magazine/m9mm name = "pistol magazine (9mm)" - icon_state = "9x19p-full" + icon_state = "9x19p" base_icon_state = "9x19p" ammo_type = /obj/item/ammo_casing/c9mm caliber = CALIBER_9MM diff --git a/code/modules/projectiles/boxes_magazines/external/sniper.dm b/code/modules/projectiles/boxes_magazines/external/sniper.dm index cb0cdf13da2..444eef6f175 100644 --- a/code/modules/projectiles/boxes_magazines/external/sniper.dm +++ b/code/modules/projectiles/boxes_magazines/external/sniper.dm @@ -1,5 +1,5 @@ /obj/item/ammo_box/magazine/sniper_rounds - name = "sniper rounds (.50)" + name = "anti-materiel sniper rounds (.50 BMG)" icon_state = ".50mag" base_icon_state = ".50mag" ammo_type = /obj/item/ammo_casing/p50 @@ -10,23 +10,33 @@ . = ..() icon_state = "[base_icon_state][ammo_count() ? "-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..." - base_icon_state = "soporific" - ammo_type = /obj/item/ammo_casing/p50/soporific - max_ammo = 3 +/obj/item/ammo_box/magazine/sniper_rounds/surplus + name = "anti-materiel sniper rounds (.50 BMG Surplus)" + icon_state = "surplus" + base_icon_state = "surplus" + ammo_type = /obj/item/ammo_casing/p50/surplus + +/obj/item/ammo_box/magazine/sniper_rounds/disruptor + name = "anti-materiel sniper rounds (.50 BMG Bzzt)" + desc = "Disruptor sniper rounds. A special blend of soporific chemicals \ + and a electromagnetic payload to cause anything to come to a grinding halt." + base_icon_state = "disruptor" + ammo_type = /obj/item/ammo_casing/p50/disruptor + +/obj/item/ammo_box/magazine/sniper_rounds/incendiary + name = "anti-materiel sniper rounds (.50 BMG incendiary)" + desc = "Incediary sniper rounds. Causes a massive combustion at the site of impact." + base_icon_state = "incendiary" + ammo_type = /obj/item/ammo_casing/p50/incendiary /obj/item/ammo_box/magazine/sniper_rounds/penetrator - name = "sniper rounds (penetrator)" + name = "anti-materiel sniper rounds (.50 BMG penetrator)" desc = "An extremely powerful round capable of passing straight through cover and anyone unfortunate enough to be behind it." base_icon_state = "penetrator" ammo_type = /obj/item/ammo_casing/p50/penetrator - max_ammo = 5 /obj/item/ammo_box/magazine/sniper_rounds/marksman - name = "sniper rounds (marksman)" + name = "anti-materiel sniper rounds (.50 BMG marksman)" desc = "An extremely fast sniper round able to pretty much instantly shoot through something." base_icon_state = "marksman" ammo_type = /obj/item/ammo_casing/p50/marksman - max_ammo = 5 diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 8fc839aaba1..a2dfdd516ac 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -701,8 +701,3 @@ GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list( icon = 'icons/obj/weapons/guns/ballistic.dmi' icon_state = "suppressor" w_class = WEIGHT_CLASS_TINY - - -/obj/item/suppressor/specialoffer - name = "cheap suppressor" - desc = "A foreign knock-off suppressor, it feels flimsy, cheap, and brittle. Still fits most weapons." diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 73ca274dff4..503d77bb813 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -316,52 +316,6 @@ return ..() - - -// SNIPER // - -/obj/item/gun/ballistic/automatic/sniper_rifle - name = "sniper rifle" - desc = "A long ranged weapon that does significant damage. No, you can't quickscope." - icon_state = "sniper" - w_class = WEIGHT_CLASS_BULKY - inhand_icon_state = "sniper" - worn_icon_state = null - fire_sound = 'sound/weapons/gun/sniper/shot.ogg' - fire_sound_volume = 90 - load_sound = 'sound/weapons/gun/sniper/mag_insert.ogg' - rack_sound = 'sound/weapons/gun/sniper/rack.ogg' - suppressed_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg' - recoil = 2 - weapon_weight = WEAPON_HEAVY - mag_type = /obj/item/ammo_box/magazine/sniper_rounds - fire_delay = 4 SECONDS - burst_size = 1 - w_class = WEIGHT_CLASS_NORMAL - slot_flags = ITEM_SLOT_BACK - actions_types = list() - mag_display = TRUE - suppressor_x_offset = 3 - suppressor_y_offset = 3 - -/obj/item/gun/ballistic/automatic/sniper_rifle/Initialize(mapload) - . = ..() - AddComponent(/datum/component/scope, range_modifier = 2) - -/obj/item/gun/ballistic/automatic/sniper_rifle/reset_semicd() - . = ..() - if(suppressed) - playsound(src, 'sound/machines/eject.ogg', 25, TRUE, ignore_walls = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0) - else - playsound(src, 'sound/machines/eject.ogg', 50, TRUE) - -/obj/item/gun/ballistic/automatic/sniper_rifle/syndicate - name = "syndicate sniper rifle" - desc = "An illegally modified .50 cal sniper rifle with suppression compatibility. Quickscoping still doesn't work." - can_suppress = TRUE - can_unsuppress = TRUE - pin = /obj/item/firing_pin/implant/pindicate - // Old Semi-Auto Rifle // /obj/item/gun/ballistic/automatic/surplus diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index da1aba9ffb0..75d6c73772a 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -231,3 +231,54 @@ user.put_in_hands(gun) else user.dropItemToGround(src, TRUE) + +// SNIPER // + +/obj/item/gun/ballistic/rifle/sniper_rifle + name = "anti-materiel sniper rifle" + desc = "A boltaction anti-materiel rifle, utilizing .50 BMG cartridges. While technically outdated in modern arms markets, it still works exceptionally well as \ + an anti-personnel rifle. In particular, the employment of modern armored MODsuits utilizing advanced armor plating has given this weapon a new home on the battlefield. \ + It is also able to be suppressed....somehow." + icon_state = "sniper" + weapon_weight = WEAPON_HEAVY + inhand_icon_state = "sniper" + worn_icon_state = null + fire_sound = 'sound/weapons/gun/sniper/shot.ogg' + fire_sound_volume = 90 + load_sound = 'sound/weapons/gun/sniper/mag_insert.ogg' + rack_sound = 'sound/weapons/gun/sniper/rack.ogg' + suppressed_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg' + recoil = 2 + mag_type = /obj/item/ammo_box/magazine/sniper_rounds + internal_magazine = FALSE + w_class = WEIGHT_CLASS_NORMAL + slot_flags = ITEM_SLOT_BACK + mag_display = TRUE + tac_reloads = TRUE + rack_delay = 1 SECONDS + can_suppress = TRUE + can_unsuppress = TRUE + suppressor_x_offset = 3 + suppressor_y_offset = 3 + +/obj/item/gun/ballistic/rifle/sniper_rifle/examine(mob/user) + . = ..() + . += span_warning("It seems to have a warning label: Do NOT, under any circumstances, attempt to 'quickscope' with this rifle.") + +/obj/item/gun/ballistic/rifle/sniper_rifle/Initialize(mapload) + . = ..() + AddComponent(/datum/component/scope, range_modifier = 7) //enough range to at least make extremely good use of the penetrator rounds + +/obj/item/gun/ballistic/rifle/sniper_rifle/reset_semicd() + . = ..() + if(suppressed) + playsound(src, 'sound/machines/eject.ogg', 25, TRUE, ignore_walls = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0) + else + playsound(src, 'sound/machines/eject.ogg', 50, TRUE) + +/obj/item/gun/ballistic/rifle/sniper_rifle/syndicate + desc = "A boltaction anti-materiel rifle, utilizing .50 BMG cartridges. While technically outdated in modern arms markets, it still works exceptionally well as \ + an anti-personnel rifle. In particular, the employment of modern armored MODsuits utilizing advanced armor plating has given this weapon a new home on the battlefield. \ + It is also able to be suppressed....somehow. This one seems to have a little picture of someone in a blood-red MODsuit stenciled on it, pointing at a green floppy disk. \ + Who knows what that might mean." + pin = /obj/item/firing_pin/implant/pindicate diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 6982c9f9cfb..bb02ac8d548 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -176,6 +176,7 @@ var/slur = 0 SECONDS var/dismemberment = 0 //The higher the number, the greater the bonus to dismembering. 0 will not dismember at all. + var/catastropic_dismemberment = FALSE //If TRUE, this projectile deals its damage to the chest if it dismembers a limb. var/impact_effect_type //what type of impact effect to show when hitting something var/log_override = FALSE //is this type spammed enough to not log? (KAs) /// We ignore mobs with these factions. diff --git a/code/modules/projectiles/projectile/bullets/sniper.dm b/code/modules/projectiles/projectile/bullets/sniper.dm index a5acb1f92e1..bc4f69eb946 100644 --- a/code/modules/projectiles/projectile/bullets/sniper.dm +++ b/code/modules/projectiles/projectile/bullets/sniper.dm @@ -1,37 +1,76 @@ -// .50 (Sniper) +// .50 BMG (Sniper) /obj/projectile/bullet/p50 - name =".50 bullet" + name =".50 BMG bullet" speed = 0.4 range = 400 // Enough to travel from one corner of the Z to the opposite corner and then some. damage = 70 paralyze = 100 dismemberment = 50 + catastropic_dismemberment = TRUE armour_penetration = 50 - var/breakthings = TRUE + ///Determines object damage. + var/object_damage = 80 + ///Determines how much additional damage the round does to mechs. + var/mecha_damage = 10 /obj/projectile/bullet/p50/on_hit(atom/target, blocked = 0) - if(isobj(target) && (blocked != 100) && breakthings) - var/obj/O = target - O.take_damage(80, BRUTE, BULLET, FALSE) + if(isobj(target) && (blocked != 100)) + var/obj/thing_to_break = target + var/damage_to_deal = object_damage + if(ismecha(thing_to_break) && mecha_damage) + damage_to_deal += mecha_damage + if(damage_to_deal) + thing_to_break.take_damage(damage_to_deal, BRUTE, BULLET, FALSE) return ..() -/obj/projectile/bullet/p50/soporific - name =".50 soporific bullet" +/obj/projectile/bullet/p50/surplus + name =".50 BMG surplus bullet" armour_penetration = 0 - damage = 0 - dismemberment = 0 paralyze = 0 - breakthings = FALSE + dismemberment = 0 + catastropic_dismemberment = FALSE -/obj/projectile/bullet/p50/soporific/on_hit(atom/target, blocked = FALSE) +/obj/projectile/bullet/p50/disruptor + name =".50 BMG disruptor bullet" + damage_type = STAMINA + paralyze = 0 + dismemberment = 0 + catastropic_dismemberment = FALSE + object_damage = 0 + mecha_damage = 100 + var/emp_radius = 2 + +/obj/projectile/bullet/p50/disruptor/on_hit(atom/target, blocked = FALSE) + . = ..() if((blocked != 100) && isliving(target)) - var/mob/living/L = target - L.Sleeping(400) - return ..() + var/mob/living/living_guy = target + living_guy.Sleeping(40 SECONDS) //Yes, its really 40 seconds of sleep, I hope you had your morning coffee. + if(issilicon(target)) //also especially good against borgs + var/mob/living/silicon/borg_boy = target + borg_boy.apply_damage(damage, BRUTE) + empulse(target, emp_radius, emp_radius) + +/obj/projectile/bullet/p50/incendiary + name =".50 BMG incendiary bullet" + damage_type = BURN + paralyze = 0 + dismemberment = 0 + catastropic_dismemberment = FALSE + object_damage = 30 + mecha_damage = 0 + +/obj/projectile/bullet/p50/incendiary/on_hit(atom/target, blocked = FALSE) + . = ..() + if(iscarbon(target)) + var/mob/living/carbon/poor_burning_dork = target + poor_burning_dork.adjust_fire_stacks(20) + poor_burning_dork.ignite_mob() + for(var/turf/nearby_turf as anything in RANGE_TURFS(2, target)) + new /obj/effect/hotspot(nearby_turf) /obj/projectile/bullet/p50/penetrator - name = "penetrator round" + name = ".50 BMG penetrator round" icon_state = "gauss" damage = 60 range = 50 @@ -39,18 +78,21 @@ projectile_phasing = ~(PASSMOB|PASSVEHICLE) phasing_ignore_direct_target = TRUE dismemberment = 0 //It goes through you cleanly. + catastropic_dismemberment = FALSE paralyze = 0 - breakthings = FALSE + object_damage = 0 /obj/projectile/bullet/p50/penetrator/shuttle //Nukeop Shuttle Variety + name = ".50 BMG aggression dissuasion round" icon_state = "gaussstrong" damage = 25 speed = 0.3 range = 16 /obj/projectile/bullet/p50/marksman - name = ".50 marksman round" + name = ".50 BMG marksman round" damage = 50 + range = 50 paralyze = 0 tracer_type = /obj/effect/projectile/tracer/sniper impact_type = /obj/effect/projectile/impact/sniper diff --git a/code/modules/spells/spell_types/right_and_wrong.dm b/code/modules/spells/spell_types/right_and_wrong.dm index 2758cea178c..c2c6b20edb2 100644 --- a/code/modules/spells/spell_types/right_and_wrong.dm +++ b/code/modules/spells/spell_types/right_and_wrong.dm @@ -47,7 +47,7 @@ GLOBAL_LIST_INIT(summoned_guns, list( /obj/item/gun/ballistic/shotgun/bulldog, /obj/item/gun/ballistic/revolver/grenadelauncher, /obj/item/gun/ballistic/revolver/golden, - /obj/item/gun/ballistic/automatic/sniper_rifle, + /obj/item/gun/ballistic/rifle/sniper_rifle, /obj/item/gun/ballistic/rocketlauncher, /obj/item/gun/medbeam, /obj/item/gun/energy/laser/scatter, diff --git a/code/modules/uplink/uplink_items/nukeops.dm b/code/modules/uplink/uplink_items/nukeops.dm index 6efcc15fc8a..70ca0377e8c 100644 --- a/code/modules/uplink/uplink_items/nukeops.dm +++ b/code/modules/uplink/uplink_items/nukeops.dm @@ -8,7 +8,7 @@ /datum/uplink_item/bundles_tc/c20r name = "C-20r bundle" - desc = "Old Faithful: The classic C-20r, bundled with two magazines and a (surplus) suppressor at discount price." + desc = "Old Faithful: The classic C-20r, bundled with two magazines and a suppressor at discount price." item = /obj/item/storage/backpack/duffelbag/syndie/c20rbundle cost = 14 // normally 16 purchasable_from = UPLINK_NUKE_OPS @@ -31,10 +31,10 @@ /datum/uplink_item/bundles_tc/sniper name = "Sniper bundle" desc = "Elegant and refined: Contains a collapsed sniper rifle in an expensive carrying case, \ - two soporific knockout magazines, a free surplus suppressor, and a sharp-looking tactical turtleneck suit. \ + two .50 BMG disruptor magazines, a free suppressor, and a sharp-looking tactical turtleneck suit. \ We'll throw in a free red tie if you order NOW." item = /obj/item/storage/briefcase/sniperbundle - cost = 20 // normally 26 + cost = 20 // normally 27, the suit and office supplies are free! purchasable_from = UPLINK_NUKE_OPS /datum/uplink_item/bundles_tc/firestarter @@ -144,9 +144,10 @@ purchasable_from = UPLINK_NUKE_OPS /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/gun/ballistic/automatic/sniper_rifle/syndicate + name = "Anti-Materiel Sniper Rifle" + desc = "An outdated, but still extremely powerful anti-material sniper rifle. Fires .50 BMG cartridges from a 6 round magazine. \ + Can be fitted with a suppressor. If anyone asks how that even works, tell them it's Nanotrasen's fault." + item = /obj/item/gun/ballistic/rifle/sniper_rifle/syndicate cost = 16 surplus = 25 purchasable_from = UPLINK_NUKE_OPS @@ -297,32 +298,49 @@ purchasable_from = UPLINK_NUKE_OPS /datum/uplink_item/ammo/sniper - cost = 4 + cost = 3 purchasable_from = UPLINK_NUKE_OPS /datum/uplink_item/ammo/sniper/basic - name = ".50 Magazine" + name = ".50 BMG Magazine" desc = "An additional standard 6-round magazine for use with .50 sniper rifles." item = /obj/item/ammo_box/magazine/sniper_rounds +/datum/uplink_item/ammo/sniper/surplusbox + name = ".50 BMG Surplus Magazine Box" + desc = "A box full of surplus .50 BMG magazines. Not as good as high quality magazines, \ + usually lacking the penetrative power and impact, but good enough to keep the gun firing. \ + Useful for arming a squad." + cost = 7 //1 TC per magazine + item = /obj/item/storage/box/syndie_kit/surplus + /datum/uplink_item/ammo/sniper/penetrator - name = ".50 Penetrator Magazine" - desc = "A 5-round magazine of penetrator ammo designed for use with .50 sniper rifles. \ + name = ".50 BMG Penetrator Magazine" + desc = "A 6-round magazine of penetrator ammo designed for use with .50 sniper rifles. \ Can pierce walls and multiple enemies." item = /obj/item/ammo_box/magazine/sniper_rounds/penetrator - cost = 5 + cost = 4 -/datum/uplink_item/ammo/sniper/soporific - name = ".50 Soporific Magazine" - desc = "A 3-round magazine of soporific ammo designed for use with .50 sniper rifles. Put your enemies to sleep today!" - item = /obj/item/ammo_box/magazine/sniper_rounds/soporific - cost = 6 +/datum/uplink_item/ammo/sniper/incendiary + name = ".50 BMG Incendiary Magazine" + desc = "A 6-round magazine of incendiary ammo. \ + Sets your enemies ablaze, along with everyone else next to them!" + item = /obj/item/ammo_box/magazine/sniper_rounds/incendiary + cost = 4 + +/datum/uplink_item/ammo/sniper/disruptor + name = ".50 BMG Disruptor Magazine" + desc = "A 6-round magazine of disruptor ammo designed for use with .50 sniper rifles. \ + Put your enemies and their alarm clock to sleep today!" + item = /obj/item/ammo_box/magazine/sniper_rounds/disruptor + cost = 4 /datum/uplink_item/ammo/sniper/marksman - name = ".50 Marksman Magazine" - desc = "A 5-round magazine of marksman ammo designed for use with .50 sniper rifles. Blast your enemies with instant shots!" + name = ".50 BMG Marksman Magazine" + desc = "A 6-round magazine of marksman ammo designed for use with .50 sniper rifles. \ + Blast your enemies with instant shots! Just watch out for the rebound..." item = /obj/item/ammo_box/magazine/sniper_rounds/marksman - cost = 5 + cost = 4 /datum/uplink_item/ammo/carbine name = "5.56mm Toploader Magazine" diff --git a/icons/obj/weapons/guns/ammo.dmi b/icons/obj/weapons/guns/ammo.dmi index 90ea778c6a4..926a0cbbe72 100644 Binary files a/icons/obj/weapons/guns/ammo.dmi and b/icons/obj/weapons/guns/ammo.dmi differ diff --git a/icons/obj/weapons/guns/ballistic.dmi b/icons/obj/weapons/guns/ballistic.dmi index 05ec0ffd77a..1d70d9af19d 100644 Binary files a/icons/obj/weapons/guns/ballistic.dmi and b/icons/obj/weapons/guns/ballistic.dmi differ diff --git a/tools/UpdatePaths/Scripts/73781_sniper_automatic_to_rifle.txt b/tools/UpdatePaths/Scripts/73781_sniper_automatic_to_rifle.txt new file mode 100644 index 00000000000..342e6dc367a --- /dev/null +++ b/tools/UpdatePaths/Scripts/73781_sniper_automatic_to_rifle.txt @@ -0,0 +1,3 @@ +#comment This repaths sniper rifles from the automatic subtype to the rifle subtype. + +/obj/item/weapon/automatic/sniper : /obj/item/weapon/rifle/sniper{@OLD}