diff --git a/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm b/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm index ebdc07798fd..9336a4a77a0 100644 --- a/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm +++ b/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm @@ -348,6 +348,24 @@ /obj/item/ammo_casing/spent, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/infested_frigate) +"er" = ( +/obj/structure/lattice, +/obj/structure/alien/resin/membrane{ + max_integrity = 1600; + desc = "Resin just thin enough to let light pass through, but it's congealing in the same way as the thicker stuff."; + name = "viscous resin membrane" + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/structure/door_assembly/door_assembly_hatch{ + anchored = 1; + name = "crew quarters"; + desc = "People lived in this place." + }, +/turf/template_noop, +/area/ruin/space/has_grav/infested_frigate) "eE" = ( /mob/living/basic/alien{ faction = list("syndicate","xenomorph") @@ -355,6 +373,20 @@ /obj/structure/cable, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) +"eX" = ( +/obj/structure/table/glass, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/phone, +/obj/item/paper/crumpled/muddy/fluff/elephant_graveyard/rnd_notes{ + default_raw_text = "STERILIZATION ORDERS

Detailed findings:

A biological research lab within the HD-10180 system has suffered from a complete containment failure. The SYN-C Brutus is to deliver a nuclear payload via strike team. Everything inside and outside the facility is to be killed on sight, including any research staff. Nuclear authentication codes have been sent via red phone, as have other detailed orders.

The rest of the documents are maps and mundane information regarding the crew's destination."; + name = "STERILIZATION ORDERS"; + desc = "These are particularly boring for what they entail." + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) "eZ" = ( /obj/item/clothing/mask/facehugger/impregnated, /obj/structure/closet/crate/secure/freezer/pizza, @@ -602,6 +634,23 @@ }, /turf/open/floor/mineral/plastitanium/airless, /area/ruin/space/has_grav/infested_frigate) +"jx" = ( +/obj/effect/decal/cleanable/glass, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) +"jy" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/structure/showcase/machinery/tv{ + icon_state = "computer_broken"; + desc = "It would have been locked anyway."; + name = "syndicate navigation console" + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) "kc" = ( /obj/effect/turf_decal{ dir = 8 @@ -680,10 +729,6 @@ }, /turf/closed/wall/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) -"lp" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/space/has_grav/infested_frigate) "lx" = ( /obj/structure/barricade/security, /obj/effect/decal/cleanable/blood/gibs{ @@ -790,13 +835,6 @@ }, /turf/open/floor/pod/dark, /area/ruin/space/has_grav/infested_frigate) -"no" = ( -/obj/machinery/door/poddoor{ - id = "Brutusexterior" - }, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/space/has_grav/infested_frigate) "nG" = ( /mob/living/basic/alien{ faction = list("syndicate","xenomorph") @@ -897,20 +935,6 @@ }, /turf/template_noop, /area/template_noop) -"ps" = ( -/obj/structure/table/glass, -/obj/item/pen{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/phone, -/obj/item/paper/crumpled/muddy/fluff/elephant_graveyard/rnd_notes{ - default_raw_text = "STERILIZATION ORDERS

Detailed findings:

A biological research lab within the HD-10180 system has suffered from a complete containment failure. The SYN-C Brutus is to deliver a nuclear payload via strike team. Everything inside and outside the facility is to be killed on sight, including any research staff. Nuclear authentication codes have been sent via red phone, as have other detailed orders.

The rest of the documents are maps and mundane information regarding the crew's destination."; - name = "STERILIZATION ORDERS"; - desc = "These are particularly boring for what they entail." - }, -/turf/open/floor/pod/dark, -/area/ruin/space/has_grav/infested_frigate) "qb" = ( /obj/effect/turf_decal{ dir = 8 @@ -930,6 +954,17 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) +"qu" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "floor7-old" + }, +/obj/effect/decal/cleanable/glass, +/obj/machinery/button/door/directional/north{ + name = "prisoner isolation shutter"; + id = "captivity" + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) "qC" = ( /obj/effect/turf_decal/tile/bar{ dir = 1 @@ -1072,25 +1107,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/infested_frigate) -"sy" = ( -/obj/structure/sign/poster/contraband/random/directional/north, -/obj/item/restraints/handcuffs/cable/zipties/used, -/obj/effect/decal/cleanable/blood{ - icon_state = "floor7-old" - }, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/blood/gibs{ - icon_state = "gib1-old" - }, -/obj/machinery/door/window/left/directional/east, -/obj/machinery/door/poddoor/shutters/window/preopen{ - id = "captivity" - }, -/mob/living/carbon/alien/larva{ - faction = list("syndicate","xenomorph") - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/infested_frigate) "sA" = ( /obj/item/clothing/mask/surgical, /obj/structure/cable, @@ -1199,6 +1215,13 @@ }, /turf/open/floor/pod/dark, /area/ruin/space/has_grav/infested_frigate) +"vj" = ( +/obj/machinery/door/poddoor{ + id = "Brutusexterior" + }, +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) "vm" = ( /obj/machinery/door/airlock/external/ruin, /obj/effect/mapping_helpers/airlock/locked, @@ -1565,24 +1588,6 @@ }, /turf/open/floor/pod/dark, /area/ruin/space/has_grav/infested_frigate) -"yL" = ( -/obj/structure/lattice, -/obj/structure/alien/resin/membrane{ - max_integrity = 1600; - desc = "Resin just thin enough to let light pass through, but it's congealing in the same way as the thicker stuff."; - name = "viscous resin membrane" - }, -/obj/item/ammo_casing/spent, -/obj/item/ammo_casing/spent, -/obj/item/ammo_casing/spent, -/obj/item/ammo_casing/spent, -/obj/structure/door_assembly/door_assembly_hatch{ - anchored = 1; - name = "crew quarters"; - desc = "People lived in this place." - }, -/turf/template_noop, -/area/ruin/space/has_grav/infested_frigate) "yP" = ( /obj/item/storage/belt/military, /obj/effect/decal/cleanable/glass{ @@ -1596,6 +1601,10 @@ /obj/effect/decal/cleanable/plastic, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) +"yZ" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) "zg" = ( /obj/effect/turf_decal/tile/bar{ dir = 1 @@ -1790,11 +1799,6 @@ /obj/item/clothing/shoes/combat, /turf/open/floor/pod/dark, /area/ruin/space/has_grav/infested_frigate) -"Cx" = ( -/obj/effect/decal/cleanable/glass, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/space/has_grav/infested_frigate) "CE" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/mineral/plastitanium, @@ -1865,18 +1869,6 @@ /obj/structure/girder/displaced, /turf/template_noop, /area/template_noop) -"ED" = ( -/obj/effect/turf_decal{ - icon_state = "warningline_white" - }, -/obj/structure/showcase/machinery/tv{ - icon_state = "computer_broken"; - desc = "It would have been locked anyway."; - name = "syndicate navigation console" - }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/pod/dark, -/area/ruin/space/has_grav/infested_frigate) "EL" = ( /obj/effect/turf_decal{ icon_state = "warningline_white" @@ -1898,6 +1890,25 @@ }, /turf/open/floor/pod/dark, /area/ruin/space/has_grav/infested_frigate) +"EQ" = ( +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/item/restraints/handcuffs/cable/zipties/used, +/obj/effect/decal/cleanable/blood{ + icon_state = "floor7-old" + }, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib1-old" + }, +/obj/machinery/door/window/left/directional/east, +/obj/machinery/door/poddoor/shutters/window/preopen{ + id = "captivity" + }, +/mob/living/carbon/alien/larva{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) "ER" = ( /obj/structure/cable, /mob/living/basic/alien/sentinel{ @@ -2040,17 +2051,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) -"Hv" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood{ - icon_state = "floor5-old" - }, -/obj/item/ammo_casing/spent, -/obj/item/gun/ballistic/automatic/plastikov, -/obj/effect/mob_spawn/corpse/human/syndicatepilot, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/space/has_grav/infested_frigate) "Hx" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/glass, @@ -2121,6 +2121,23 @@ /obj/machinery/power/smes, /turf/open/floor/plating, /area/ruin/space/has_grav/infested_frigate) +"IO" = ( +/obj/structure/cable, +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "floor6-old" + }, +/obj/item/shard{ + icon_state = "plastitaniumtiny" + }, +/mob/living/basic/alien/queen/large{ + loot = list(/obj/effect/gibspawner/xeno,/obj/item/ammo_box/magazine/smartgun,/obj/effect/mob_spawn/corpse/human/syndicatecommando/soft_suit); + desc = "What you saw in your dreams last night."; + faction = list("syndicate","xenomorph") + }, +/obj/structure/alien/egg/burst, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) "IS" = ( /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, @@ -2156,6 +2173,17 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/pod/dark, /area/ruin/space/has_grav/infested_frigate) +"Jq" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood{ + icon_state = "floor5-old" + }, +/obj/item/ammo_casing/spent, +/obj/item/gun/ballistic/automatic/smartgun, +/obj/effect/mob_spawn/corpse/human/syndicatepilot, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) "Jw" = ( /obj/effect/spawner/random/exotic/antag_gear_weak{ pixel_y = 5 @@ -2339,17 +2367,6 @@ /obj/item/ammo_casing/spent, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) -"LS" = ( -/obj/effect/decal/cleanable/blood{ - icon_state = "floor7-old" - }, -/obj/effect/decal/cleanable/glass, -/obj/machinery/button/door/directional/north{ - name = "prisoner isolation shutter"; - id = "captivity" - }, -/turf/open/floor/pod/dark, -/area/ruin/space/has_grav/infested_frigate) "Ml" = ( /obj/effect/turf_decal/tile/bar{ dir = 1 @@ -2780,23 +2797,6 @@ /obj/item/ammo_casing/spent, /turf/open/floor/pod/dark, /area/ruin/space/has_grav/infested_frigate) -"SM" = ( -/obj/structure/cable, -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/gibs{ - icon_state = "floor6-old" - }, -/obj/item/shard{ - icon_state = "plastitaniumtiny" - }, -/mob/living/basic/alien/queen/large{ - loot = list(/obj/effect/gibspawner/xeno,/obj/item/ammo_box/magazine/plastikov9mm,/obj/effect/mob_spawn/corpse/human/syndicatecommando/soft_suit); - desc = "What you saw in your dreams last night."; - faction = list("syndicate","xenomorph") - }, -/obj/structure/alien/egg/burst, -/turf/open/floor/plating, -/area/ruin/space/has_grav/infested_frigate) "SS" = ( /obj/structure/table_frame, /obj/effect/decal/cleanable/glass, @@ -3371,10 +3371,10 @@ fl fl fl wP -sy +EQ wP hX -SM +IO ME KT LF @@ -3398,7 +3398,7 @@ fl fl fl wP -LS +qu wP Ru df @@ -3461,7 +3461,7 @@ rs AH yt YW -no +vj fl fl fl @@ -3478,7 +3478,7 @@ fl fl fl fl -no +vj yJ wP wP @@ -3488,7 +3488,7 @@ Qg ki Zp di -no +vj fl fl fl @@ -3505,7 +3505,7 @@ fl fl fl fl -no +vj OC OC qE @@ -3515,7 +3515,7 @@ wP Et KA RG -no +vj fl fl fl @@ -3532,7 +3532,7 @@ fl fl fl fl -no +vj xp ab Cm @@ -3542,7 +3542,7 @@ Rw SX xT qC -no +vj fl fl fl @@ -3559,7 +3559,7 @@ fl fl fl fl -no +vj Ez Jx Cm @@ -3569,7 +3569,7 @@ Qg Ml hB xB -no +vj fl fl fl @@ -3722,7 +3722,7 @@ fl Eg fl Qj -yL +er Qm wP NU @@ -3775,7 +3775,7 @@ fl fl fl fl -no +vj EL yP Fg @@ -3785,7 +3785,7 @@ mk Jx lU Rx -no +vj fl fl fl @@ -3802,7 +3802,7 @@ fl fl fl HD -no +vj ug Nu CE @@ -3812,7 +3812,7 @@ Fs Im iy IC -no +vj fl fl fl @@ -3829,7 +3829,7 @@ fl fl fl fl -no +vj YV Er wP @@ -3839,7 +3839,7 @@ LF wP iL nm -no +vj fl fl fl @@ -3861,7 +3861,7 @@ bM Ne wP bE -Hv +Jq ML wP UX @@ -4019,7 +4019,7 @@ fl fl fl fl -no +vj Bw ip BA @@ -4027,7 +4027,7 @@ sZ rz Ai KC -no +vj fl fl fl @@ -4046,7 +4046,7 @@ fl fl fl fl -no +vj HA Cm Td @@ -4054,7 +4054,7 @@ st MH eE AM -no +vj fl fl fl @@ -4073,7 +4073,7 @@ fl fl fl fl -no +vj vM wP wP @@ -4081,7 +4081,7 @@ VV wP wP OK -no +vj fl fl fl @@ -4100,15 +4100,15 @@ fl fl fl fl -no +vj cX wP -ED +jy PV Gt wP OK -no +vj fl fl fl @@ -4127,7 +4127,7 @@ fl fl fl fl -no +vj iS wP Jp @@ -4135,7 +4135,7 @@ xo wO wP oV -no +vj fl fl fl @@ -4154,15 +4154,15 @@ fl fl fl fl -no +vj KK wP -ps +eX aA NX wP oo -no +vj fl fl fl @@ -4183,11 +4183,11 @@ fl fl wP af -lp -lp +yZ +yZ pl -lp -lp +yZ +yZ sE wP fl @@ -4239,7 +4239,7 @@ wP Yd hA My -Cx +jx yG nG UV diff --git a/code/__DEFINES/projectiles.dm b/code/__DEFINES/projectiles.dm index ed4c66b799c..28b7b6f3d1b 100644 --- a/code/__DEFINES/projectiles.dm +++ b/code/__DEFINES/projectiles.dm @@ -14,8 +14,10 @@ #define CALIBER_A7MM "a7mm" /// The caliber used by the [security auto-rifle][/obj/item/gun/ballistic/automatic/wt550]. #define CALIBER_46X30MM "4.6x30mm" -/// The caliber used by the Nanotrasen Saber SMG, PP-95 SMG and Type U3 Uzi. Also used as the default caliber for pistols but only the stechkin APS machine pistol doesn't override it. +/// The caliber used by the Nanotrasen Saber SMG and Type U3 Uzi. Also used as the default caliber for pistols but only the stechkin APS machine pistol doesn't override it. #define CALIBER_9MM "9mm" +/// The caliber used by smart SMG ammunition +#define CALIBER_160SMART ".160 Smart" /// The caliber used as the default for ballistic guns. Only not overridden for the [surplus rifle][/obj/item/gun/ballistic/automatic/surplus]. #define CALIBER_10MM "10mm" /// The caliber used by most revolver variants. diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index ab3dc930aa8..0af5929e557 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -350,6 +350,11 @@ weapon_to_spawn = /obj/item/gun/ballistic/automatic/c20r extra_to_spawn = /obj/item/ammo_box/magazine/smgm45 +/obj/item/storage/toolbox/guncase/smartgun + name = "adielle smartgun case" + weapon_to_spawn = /obj/item/gun/ballistic/automatic/smartgun + extra_to_spawn = /obj/item/ammo_box/magazine/smartgun + /obj/item/storage/toolbox/guncase/clandestine name = "clandestine gun case" weapon_to_spawn = /obj/item/gun/ballistic/automatic/pistol/clandestine @@ -444,12 +449,6 @@ weapon_to_spawn = /obj/effect/spawner/random/sakhno extra_to_spawn = /obj/effect/spawner/random/sakhno/ammo -/obj/item/storage/toolbox/guncase/soviet/plastikov - name = "ancient surplus gun case" - desc = "A gun case. Has the symbol of the Third Soviet Union stamped on the side." - weapon_to_spawn = /obj/item/gun/ballistic/automatic/plastikov - extra_to_spawn = /obj/item/food/rationpack //sorry comrade, cannot get you more ammo, here, have lunch - /obj/item/storage/toolbox/guncase/monkeycase name = "monkey gun case" desc = "Everything a monkey needs to truly go ape-shit. There's a paw-shaped hand scanner lock on the front of the case." diff --git a/code/modules/antagonists/nukeop/outfits.dm b/code/modules/antagonists/nukeop/outfits.dm index 0d122cff0c0..4f7b8804f8a 100644 --- a/code/modules/antagonists/nukeop/outfits.dm +++ b/code/modules/antagonists/nukeop/outfits.dm @@ -102,8 +102,8 @@ name = "Syndicate Operative - Reinforcement" tc = 0 backpack_contents = list( - /obj/item/gun/ballistic/automatic/plastikov = 1, - /obj/item/ammo_box/magazine/plastikov9mm = 2, + /obj/item/gun/ballistic/automatic/smartgun = 1, + /obj/item/ammo_box/magazine/smartgun = 2, ) var/faction = "The Syndicate" diff --git a/code/modules/projectiles/ammunition/ballistic/pistol.dm b/code/modules/projectiles/ammunition/ballistic/pistol.dm index a2f55f797bd..bc25970e7c3 100644 --- a/code/modules/projectiles/ammunition/ballistic/pistol.dm +++ b/code/modules/projectiles/ammunition/ballistic/pistol.dm @@ -26,7 +26,7 @@ desc = "A 10mm reaper bullet casing." projectile_type = /obj/projectile/bullet/c10mm/reaper -// 9mm (Makarov, Stechkin APS, PP-95) +// 9mm (Makarov, Stechkin APS) /obj/item/ammo_casing/c9mm name = "9mm bullet casing" @@ -49,7 +49,6 @@ desc = "A 9mm incendiary bullet casing." projectile_type = /obj/projectile/bullet/incendiary/c9mm - // .50AE (Desert Eagle) /obj/item/ammo_casing/a50ae @@ -57,3 +56,21 @@ desc = "A .50AE bullet casing." caliber = CALIBER_50AE projectile_type = /obj/projectile/bullet/a50ae + +// .160 Smart (Abielle smartgun) + +/obj/item/ammo_casing/c160smart + name = ".160 smart bullet casing" + desc = "A .160 smart bullet with a small charge of booster propellant at the bottom." + icon_state = "smartgun_casing" + caliber = CALIBER_160SMART + projectile_type = /obj/projectile/bullet/c160smart + +/obj/item/ammo_casing/c160smart/Initialize(mapload) + . = ..() + AddElement(/datum/element/caseless) + +/obj/item/ammo_casing/c160smart/ready_proj(atom/target, mob/living/user, quiet, zone_override, atom/fired_from) + . = ..() + if(!isturf(target)) + loaded_projectile.set_homing_target(target) diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index 3ebb459ed93..40837d9ddbc 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -30,18 +30,16 @@ . = ..() icon_state = "[base_icon_state]-[round(ammo_count(), 4)]" -/obj/item/ammo_box/magazine/plastikov9mm - name = "PP-95 magazine (9mm)" - icon_state = "9x19-50" - base_icon_state = "9x19" - ammo_type = /obj/item/ammo_casing/c9mm - caliber = CALIBER_9MM +/obj/item/ammo_box/magazine/smartgun + name = "Abielle magazine (.160 Smart)" + icon_state = "smartgun" + base_icon_state = "smartgun" + ammo_type = /obj/item/ammo_casing/c160smart + multiple_sprites = AMMO_BOX_FULL_EMPTY + multiple_sprite_use_base = TRUE + caliber = CALIBER_160SMART max_ammo = 50 -/obj/item/ammo_box/magazine/plastikov9mm/update_icon_state() - . = ..() - icon_state = "[base_icon_state]-[ammo_count() ? 50 : 0]" - /obj/item/ammo_box/magazine/uzim9mm name = "uzi magazine (9mm)" icon_state = "uzi9mm-32" diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index b86e2a99389..a895cbe88e4 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -86,20 +86,33 @@ /obj/item/gun/ballistic/automatic/wt550/add_bayonet_point() AddComponent(/datum/component/bayonet_attachable, offset_x = 25, offset_y = 12) -/obj/item/gun/ballistic/automatic/plastikov - name = "\improper PP-95 SMG" - desc = "An ancient 9mm submachine gun pattern updated and simplified to lower costs, though perhaps simplified too much." - icon_state = "plastikov" - inhand_icon_state = "plastikov" - accepted_magazine_type = /obj/item/ammo_box/magazine/plastikov9mm - burst_size = 5 - spread = 25 - can_suppress = FALSE +/obj/item/gun/ballistic/automatic/smartgun + name = "\improper Abielle Smart-SMG" + desc = "An old experiment in smart-weapon technology that guides bullets towards the target the gun was aimed at when fired. \ + While the tracking functions worked fine, the gun is prone to insanely wide spread thanks to it's practically non-existant barrel." + icon_state = "smartgun" + inhand_icon_state = "smartgun" + accepted_magazine_type = /obj/item/ammo_box/magazine/smartgun + burst_size = 4 + fire_delay = 1 + spread = 40 + dual_wield_spread = 20 actions_types = list() - projectile_damage_multiplier = 0.35 //It's like 10.5 damage per bullet, it's close enough to 10 shots + bolt_type = BOLT_TYPE_LOCKING + can_suppress = FALSE mag_display = TRUE empty_indicator = TRUE - fire_sound = 'sound/weapons/gun/smg/shot_alt.ogg' + click_on_low_ammo = FALSE + /// List of the possible firing sounds + var/list/firing_sound_list = list( + 'sound/weapons/gun/smartgun/smartgun_shoot_1.ogg', + 'sound/weapons/gun/smartgun/smartgun_shoot_2.ogg', + 'sound/weapons/gun/smartgun/smartgun_shoot_3.ogg', + ) + +/obj/item/gun/ballistic/automatic/smartgun/fire_sounds() + var/picked_fire_sound = pick(firing_sound_list) + playsound(src, picked_fire_sound, fire_sound_volume, vary_fire_sound) /obj/item/gun/ballistic/automatic/mini_uzi name = "\improper Type U3 Uzi" diff --git a/code/modules/projectiles/projectile/bullets/pistol.dm b/code/modules/projectiles/projectile/bullets/pistol.dm index 6bd355219f9..63e491e2f29 100644 --- a/code/modules/projectiles/projectile/bullets/pistol.dm +++ b/code/modules/projectiles/projectile/bullets/pistol.dm @@ -71,3 +71,25 @@ impact_light_intensity = 5 impact_light_range = 1 impact_light_color_override = LIGHT_COLOR_DIM_YELLOW + +// .160 Smart + +/obj/projectile/bullet/c160smart + name = ".160 smart bullet" + icon_state = "smartgun" + damage = 10 + embed_type = /datum/embed_data/bullet_c160smart + speed = 2 + homing_turn_speed = 5 + homing_inaccuracy_min = 4 + homing_inaccuracy_max = 10 + +/datum/embed_data/bullet_c160smart + embed_chance = 10 + fall_chance = 5 + jostle_chance = 3 + ignore_throwspeed_threshold = TRUE + pain_stam_pct = 0.25 + pain_mult = 3 + jostle_pain_mult = 6 + rip_time = 5 diff --git a/code/modules/uplink/uplink_items/nukeops.dm b/code/modules/uplink/uplink_items/nukeops.dm index b20f3bfee17..92083b111f6 100644 --- a/code/modules/uplink/uplink_items/nukeops.dm +++ b/code/modules/uplink/uplink_items/nukeops.dm @@ -373,16 +373,18 @@ //Meme weapons: Literally just weapons used as a joke, shouldn't be particularly expensive. /datum/uplink_item/weapon_kits/surplus_smg - name = "Surplus SMG Case (Flukie)" - desc = "A horribly outdated automatic weapon. Why would you want to use this? Comes with...rations." - item = /obj/item/gun/ballistic/automatic/plastikov + name = "Surplus Smart-SMG (Flukie)" + desc = "An outdated smart-SMG with limited stopping power, however it's bullets will gradually track towards whatever \ + the gun was shot at. This does require you to actually aim at the person you are shooting at before firing, but \ + surely a highly trained operative such as yourself can manage that." + item = /obj/item/gun/ballistic/automatic/smartgun cost = 2 purchasable_from = UPLINK_SERIOUS_OPS /datum/uplink_item/ammo_nuclear/surplus_smg - name = "Surplus SMG Magazine (Surplus)" - desc = "A cylindrical magazine designed for the PP-95 SMG." - item = /obj/item/ammo_box/magazine/plastikov9mm + name = "Surplus Smart-SMG Magazine (Smartgun)" + desc = "A large box magazine made for use in the Abielle smart-SMG." + item = /obj/item/ammo_box/magazine/smartgun cost = 1 purchasable_from = UPLINK_SERIOUS_OPS uplink_item_flags = SYNDIE_TRIPS_CONTRABAND diff --git a/icons/mob/inhands/weapons/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi index 44e111d2515..32a0bbd88f6 100644 Binary files a/icons/mob/inhands/weapons/guns_lefthand.dmi and b/icons/mob/inhands/weapons/guns_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/guns_righthand.dmi b/icons/mob/inhands/weapons/guns_righthand.dmi index 4f5ef0a3857..954081784a8 100644 Binary files a/icons/mob/inhands/weapons/guns_righthand.dmi and b/icons/mob/inhands/weapons/guns_righthand.dmi differ diff --git a/icons/obj/weapons/guns/ammo.dmi b/icons/obj/weapons/guns/ammo.dmi index 889d66c18b7..4cd031af7ee 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 79d1fe41c2e..6b7963919fb 100644 Binary files a/icons/obj/weapons/guns/ballistic.dmi and b/icons/obj/weapons/guns/ballistic.dmi differ diff --git a/icons/obj/weapons/guns/projectiles.dmi b/icons/obj/weapons/guns/projectiles.dmi index 8c8356a0e51..a6cf89e9b91 100644 Binary files a/icons/obj/weapons/guns/projectiles.dmi and b/icons/obj/weapons/guns/projectiles.dmi differ diff --git a/sound/weapons/gun/smartgun/smartgun_shoot_1.ogg b/sound/weapons/gun/smartgun/smartgun_shoot_1.ogg new file mode 100644 index 00000000000..5d567b7fca6 Binary files /dev/null and b/sound/weapons/gun/smartgun/smartgun_shoot_1.ogg differ diff --git a/sound/weapons/gun/smartgun/smartgun_shoot_2.ogg b/sound/weapons/gun/smartgun/smartgun_shoot_2.ogg new file mode 100644 index 00000000000..9891482865c Binary files /dev/null and b/sound/weapons/gun/smartgun/smartgun_shoot_2.ogg differ diff --git a/sound/weapons/gun/smartgun/smartgun_shoot_3.ogg b/sound/weapons/gun/smartgun/smartgun_shoot_3.ogg new file mode 100644 index 00000000000..89eb9fcc989 Binary files /dev/null and b/sound/weapons/gun/smartgun/smartgun_shoot_3.ogg differ