diff --git a/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm b/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm index 64e7be0705b6b..21b981191aeb3 100644 --- a/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm +++ b/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm @@ -856,7 +856,7 @@ icon_state = "floor5-old" }, /obj/item/ammo_casing/spent, -/obj/item/gun/ballistic/automatic/plastikov, +/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) @@ -2790,7 +2790,7 @@ 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); + 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") }, diff --git a/code/__DEFINES/projectiles.dm b/code/__DEFINES/projectiles.dm index ed4c66b799c59..28b7b6f3d1be5 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 7c5bc74e07550..905f2e40f47a7 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -348,6 +348,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 @@ -442,12 +447,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 0d122cff0c061..4f7b8804f8a8e 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 a2f55f797bdb5..bc25970e7c364 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 3ebb459ed9319..40837d9ddbc4c 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 b86e2a9938995..a895cbe88e44f 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 6bd355219f950..63e491e2f290d 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 2a93976992216..80df9de47cfbc 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 9c8d8eec10781..90df2a892f984 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 1525f403312c9..eebed61656aa4 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 889d66c18b7f5..4cd031af7ee8b 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 98d92ff716a0d..824d8b7c0a073 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 8c8356a0e51b8..a6cf89e9b910f 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 0000000000000..5d567b7fca6c0 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 0000000000000..9891482865c66 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 0000000000000..89eb9fcc989c4 Binary files /dev/null and b/sound/weapons/gun/smartgun/smartgun_shoot_3.ogg differ