From 2fc01ad8be958492a38b3200023b8aa0c4bad9f5 Mon Sep 17 00:00:00 2001 From: Skrem_7 <98909416+Skrem7@users.noreply.github.com> Date: Sat, 16 Sep 2023 21:08:09 -0500 Subject: [PATCH 01/13] Skrem's Quick Ballistic Glanceover (#2354) ## About The Pull Request If maintainers want me to shorten the changelog, I can, I tend to start there so I know what to talk about up here. What started as a PR meant to buff up rubber rounds ended up turning into a general passover I gave to much of the syntax and presentation of ballistics. PR doesn't actually change that much function-wise, but it changes a lot of lines due to a lot of changed pathing to better establish consistency within ballistic code as well as overviewing a lot of descriptions, names, and inherit moments. Functionally, less-lethals and sniper rounds have been changed the most by this PR. To a lesser extent, .38 special and shotgun rounds have been tweaked. Finally, the PR stamps out a missing sprite bug with the WT-550 magazines, buffs up the surplus rifle (yeah, that old thing), tinkers with some projectile speeds, makes match rounds slightly better, and goes over A LOT of descriptions. I apologize for the massive wall of text that's to follow. Will take a look at energy weapons when I feel like it (might kill disablers, I don't like mapping though). ## Why It's Good For The Game ### Slug and Pellet Changes The pellet changes are actually just systemizing what was supposed to be intentional design according to code comments, it just hadn't reached every single pellet-based shotgun projectile. The improvised shell buff is to make it not a potential complete whiff because RNG mechanics are generally bad and not fun to play with. ### Less-Lethal Changes Several implementations of less-lethal (rubber) ammunition on shiptest are strictly worse than their standard alternatives. While this isn't a PvP server, it feels very not-fun meta-wise to POTENTIALLY arm for SOME insubordination and still fire what may as well be a round that bleeds someone out (as they'll cause bleeding anyway). Increasing the stamina damage on each of these makes it so they actually have a vague trade-off (maybe stamina damage can do something like slow simplemobs in the future, I don't know, I'd love to do it but simplemob code makes me screech). To make them not directly better in PvP and not the staple of taking down the Super Scary Syndicate Shocktrooper Guy, they've had their negative AP doubled. Not as good against combatants, but still perfectly adept, if not better at general riot control against civilians. Makes sense and puts them in their niche a little better. ### .38 Changes The .38 special round relatively has more "power" and "velocity" compared to the 9mm round, though it does not quite reach the levels that .45 automatic or 10mm does in the IRL server. Furthermore, .38 special was specifically designed not to over-penetrate targets so as to minimize the chance of collateral damage in police work. These are the ultimate justifications behind giving it the worst AP out of all the pistol calibers (-30, instead of -20) while still raising its damage to 25. This should make the Winchester a better staple for taking out weaker enemies such as legions or unarmored hermits, but it'll perform worse against goliaths, frontiersmen, and the like. All-in-all, a more "early-game" caliber, if you will, which is kinda what it's always been. ### Projectile Speed and Match Changes Match rounds don't really exist as far as I've seen. That being said, they're meant to be of higher quality, so their getting slightly higher AP and speed makes sense, even if they're mostly just a meme round. The speed increase of DMR/sniper rounds is primarily meant to differentiate them better from AR rounds beyond having 20 more AP. Assault rifles so far have pretty much dominated with better magazine size, fire rate, and the exact same force as the DMR calibers, just doing less damage against armored targets (doesn't matter too much when you can just vomit rounds). I'd like to buff up the DMR damage even more (sniper is fine), but I'd rather get some feedback on changing them to 35 baseline before doing so. The speed decrease on shotguns is meant to cement them as CQC weapons. Slugs are heavy. Shotguns are meant for close range. It's not much, but it's thematically a good way to keep them in their lane, not that they're even that problematic, hence only the slight change. ### Sniper Rifle Knockdown Change Having a big-ass bullet that does 70 damage with 50 AP hit you is already a middle finger. Making it potentially knock off an arm or a leg is another middle finger. Being hardstunned for ten seconds after is the icing on the cake. Changed it to a knockdown because we hate ranged tasers. ### Surplus Rifle Fire Rate Buff This thing is a joke. I haven't even seen it on the server, but I'd rather make it vaguely competitive considering 10mm isn't super deadly and only otherwise exists on the stechkin or the one Inteq SMG that you never see (Colossus-only). It's still clunky and terrible, but it should be less comedic and more of a potential option if you have NOTHING else (will never happen). ### Boarder Magazine Change Top-loading magazine fits into a standard assault rifle? No. Doesn't make sense. Someone should probably just kill this gun, it's stupid and looks stupid last I checked. ### WT-550 Magazine Fix Don't think I've seen anyone use this weapon, I've only printed out their magazines to dump AP rounds into my NT-SVG carbine. Noticed they were invisible then. Someone increased their capacity to 30 without a care for how its update_icon works. Not cool. Anyway, fixes are good. Moving on. ### Syntax, Description, Spelling, and Overall Presentation Changes Something very important when maintaining code is generally keeping consistency in how things are not only presented, but how they're stored as well. While I'd love to do EVEN more in the method of refactoring to better align how so much of gun code works, this was something I wanted to keep as a one-day project, so I mostly tinkered with pathing, inherits, and groupings. In the avenue of spelling and description changes, that's just 1) Cleaning up errors that PR authors and maintainers missed and 2) Making things more concise and just... better. Some of the SolGov descriptions were a real headache to look at, and not because of the frequent spelling and syntax errors. Whoever misspelled and caused an entire series of items to be /obj/item/gun/ballistic/automatic/assualt may wish to avoid any crows for the next three months. Perfectly willing to adjust or reel back some of my descriptions if someone can offer something better than what I've written out if there's some soul they REALLY want to keep. ## Changelog :cl: tweak: The NT 'Boarder' ARG now loads standard P-16 magazines, rather than the M-90gl toploaders. balance: .38 special does 25 damage up from 20. AP has been reduced to -30 from -20. balance: Standardizes pellet projectiles to lose 10% damage of both types per tile across the board. Improvised pellets no longer have a hardcapped 1-8 tile range. balance: Less-lethal rounds now do 50% more stamina than the force of their lethal counterparts, with 25% the normal force and double the negative AP. If the round had positive or zero AP, it was subtracted by 20. balance: Shotgun slugs do 40 damage, down from 60, but have zero AP, rather than -10. FRAG-12 and meteor slugs have had their damage adjusted to reflect their relative force. balance: Surplus rifle fire_delay has been cut to 1 second from 3. balance: .50 BMG knocks down instead of hardstunning. balance: Any DMR, match, or sniper round now travels slightly faster than other bullets. Shotgun slugs and pellets now travel slightly slower than other bullets. balance: Match rounds have had their AP slightly increased. fix: Fixed WT-550 magazines not displaying properly. spellcheck: Went over (almost) every single ballistic description, including the guns themselves, magazines, ballistic casings, and speed loaders/stripper clips to not only have better consistency and readability, but also be more clear on the general effectiveness of each caliber. spellcheck: Assualt is gone. code: Repaths/renames most ballistic ammo pathing to maintain consistency or take advantage of inherits, when possible. /:cl: --- .../BeachRuins/beach_treasure_cove.dmm | 2 +- .../icemoon_surface_corporate_rejects.dmm | 2 +- _maps/deprecated/Ships/minutemen_carina.dmm | 12 +- _maps/map_files/generic/CentCom.dmm | 2 +- .../shuttles/shiptest/independent_beluga.dmm | 2 +- .../shiptest/independent_halftrack.dmm | 40 ++--- .../shiptest/independent_litieguai.dmm | 6 +- .../shuttles/shiptest/independent_rigger.dmm | 4 +- .../shiptest/independent_tranquility.dmm | 8 +- _maps/shuttles/shiptest/inteq_hound.dmm | 2 +- .../shuttles/shiptest/minutemen_asclepius.dmm | 4 +- _maps/shuttles/shiptest/minutemen_corvus.dmm | 10 +- _maps/shuttles/shiptest/minutemen_vela.dmm | 14 +- code/modules/cargo/packs/ammo.dm | 4 +- code/modules/cargo/packs/gun.dm | 8 +- code/modules/clothing/suits/armor.dm | 2 +- .../jobs/job_types/security_officer.dm | 2 +- code/modules/jobs/job_types/warden.dm | 2 +- .../simple_animal/hostile/frontiersman.dm | 8 +- .../projectiles/ammunition/ballistic/lmg.dm | 22 +-- .../ammunition/ballistic/pistol.dm | 44 ++--- .../ammunition/ballistic/revolver.dm | 20 +-- .../projectiles/ammunition/ballistic/rifle.dm | 30 ++-- .../ammunition/ballistic/shotgun.dm | 28 ++-- .../projectiles/ammunition/ballistic/smg.dm | 30 ++-- .../ammunition/ballistic/sniper.dm | 14 +- .../projectiles/boxes_magazines/ammo_boxes.dm | 156 ++++++++++-------- .../boxes_magazines/external/gauss.dm | 7 +- .../boxes_magazines/external/grenade.dm | 1 + .../boxes_magazines/external/lmg.dm | 15 +- .../boxes_magazines/external/pistol.dm | 71 ++++---- .../boxes_magazines/external/rechargable.dm | 2 +- .../boxes_magazines/external/rifle.dm | 53 +++--- .../boxes_magazines/external/smg.dm | 66 ++++---- .../boxes_magazines/external/sniper.dm | 13 +- .../boxes_magazines/internal/revolver.dm | 2 +- .../boxes_magazines/internal/rifle.dm | 4 +- .../projectiles/guns/ballistic/assault.dm | 53 +++--- .../projectiles/guns/ballistic/automatic.dm | 14 +- .../projectiles/guns/ballistic/gauss.dm | 26 +-- .../modules/projectiles/guns/ballistic/hmg.dm | 10 +- .../projectiles/guns/ballistic/launchers.dm | 8 +- .../projectiles/guns/ballistic/pistol.dm | 33 ++-- .../projectiles/guns/ballistic/revolver.dm | 14 +- .../projectiles/guns/ballistic/rifle.dm | 12 +- .../projectiles/guns/ballistic/shotgun.dm | 8 +- .../modules/projectiles/guns/ballistic/smg.dm | 11 +- .../projectiles/projectile/bullets/gauss.dm | 9 +- .../projectiles/projectile/bullets/lmg.dm | 13 +- .../projectiles/projectile/bullets/pistol.dm | 47 +++--- .../projectile/bullets/revolver.dm | 32 ++-- .../projectiles/projectile/bullets/rifle.dm | 20 ++- .../projectiles/projectile/bullets/shotgun.dm | 76 ++++----- .../projectiles/projectile/bullets/smg.dm | 21 ++- .../projectiles/projectile/bullets/sniper.dm | 17 +- .../research/designs/weapon_designs.dm | 4 +- .../spells/spell_types/rightandwrong.dm | 2 +- code/modules/uplink/uplink_items.dm | 8 +- code/modules/vending/liberation.dm | 2 +- code/modules/vending/security.dm | 2 +- icons/obj/ammo.dmi | Bin 29066 -> 29066 bytes 61 files changed, 587 insertions(+), 567 deletions(-) diff --git a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm index 08967d4aa4d5..ca4dc1c33263 100644 --- a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm @@ -393,7 +393,7 @@ pixel_x = 9; pixel_y = -1 }, -/obj/item/gun/ballistic/automatic/assualt/p16/minutemen{ +/obj/item/gun/ballistic/automatic/assault/p16/minutemen{ pixel_y = 7; pixel_x = -9 }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm index 677647192c0d..5b85b39404d3 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm @@ -1703,7 +1703,7 @@ "Md" = ( /obj/structure/rack, /obj/item/ammo_box/magazine/smgm9mm/ap, -/obj/item/ammo_box/magazine/smgm9mm/fire, +/obj/item/ammo_box/magazine/smgm9mm/inc, /obj/machinery/light/small/directional/east, /turf/open/floor/vault, /area/ruin/unpowered/corprejectvault) diff --git a/_maps/deprecated/Ships/minutemen_carina.dmm b/_maps/deprecated/Ships/minutemen_carina.dmm index 00b2bbfc33ba..986dc5a907b2 100644 --- a/_maps/deprecated/Ships/minutemen_carina.dmm +++ b/_maps/deprecated/Ships/minutemen_carina.dmm @@ -2065,12 +2065,12 @@ pixel_x = -1; pixel_y = 14 }, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/corner/opaque/red{ dir = 1 diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 86538c6fc45d..e2b1ff97158c 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -8951,7 +8951,7 @@ "hra" = ( /obj/structure/table/reinforced, /obj/item/storage/lockbox/loyalty, -/obj/item/gun/ballistic/automatic/assualt/ar, +/obj/item/gun/ballistic/automatic/assault/ar, /obj/machinery/light/directional/north, /obj/effect/turf_decal/industrial/warning, /turf/open/floor/plasteel, diff --git a/_maps/shuttles/shiptest/independent_beluga.dmm b/_maps/shuttles/shiptest/independent_beluga.dmm index 471140ec16fa..16a771d5be54 100644 --- a/_maps/shuttles/shiptest/independent_beluga.dmm +++ b/_maps/shuttles/shiptest/independent_beluga.dmm @@ -1169,7 +1169,7 @@ req_access_txt = "1" }, /obj/machinery/light/directional/north, -/obj/item/ammo_box/magazine/co9mm/rubbershot{ +/obj/item/ammo_box/magazine/co9mm/rubber{ pixel_x = 9; pixel_y = 4 }, diff --git a/_maps/shuttles/shiptest/independent_halftrack.dmm b/_maps/shuttles/shiptest/independent_halftrack.dmm index 01dce81860b9..f82d26ffd66d 100644 --- a/_maps/shuttles/shiptest/independent_halftrack.dmm +++ b/_maps/shuttles/shiptest/independent_halftrack.dmm @@ -371,28 +371,28 @@ /obj/item/gun/ballistic/automatic/smg/vector{ spawnwithmagazine = 0 }, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, +/obj/item/ammo_box/magazine/smgm9mm/rubber, +/obj/item/ammo_box/magazine/smgm9mm/rubber, /obj/item/gun/ballistic/automatic/pistol/commander/no_mag, /obj/item/gun/ballistic/automatic/pistol/commander/no_mag, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/structure/closet/secure_closet/wall{ @@ -432,11 +432,11 @@ /obj/item/ammo_box/magazine/co9mm, /obj/item/ammo_box/magazine/co9mm, /obj/item/ammo_box/magazine/co9mm, -/obj/item/ammo_box/magazine/co9mm/rubbershot, -/obj/item/ammo_box/magazine/co9mm/rubbershot, -/obj/item/ammo_box/magazine/co9mm/rubbershot, -/obj/item/ammo_box/magazine/co9mm/rubbershot, -/obj/item/ammo_box/magazine/co9mm/rubbershot, +/obj/item/ammo_box/magazine/co9mm/rubber, +/obj/item/ammo_box/magazine/co9mm/rubber, +/obj/item/ammo_box/magazine/co9mm/rubber, +/obj/item/ammo_box/magazine/co9mm/rubber, +/obj/item/ammo_box/magazine/co9mm/rubber, /obj/effect/turf_decal/box/red, /turf/open/floor/plasteel/dark, /area/ship/security) @@ -1022,20 +1022,20 @@ /obj/item/gun/ballistic/automatic/smg/vector{ spawnwithmagazine = 0 }, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, +/obj/item/ammo_box/magazine/smgm9mm/rubber, +/obj/item/ammo_box/magazine/smgm9mm/rubber, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/gun/ballistic/automatic/pistol/commander/no_mag, /obj/item/gun/ballistic/automatic/pistol/commander/no_mag, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ @@ -1051,7 +1051,7 @@ req_access_txt = "5" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/machinery/light/directional/north, @@ -1502,8 +1502,8 @@ /obj/structure/closet/secure_closet/security, /obj/item/gun/ballistic/automatic/pistol/deagle, /obj/item/gun/ballistic/automatic/pistol/deagle, -/obj/item/gun/ballistic/automatic/assualt/ak47, -/obj/item/gun/ballistic/automatic/assualt/ak47, +/obj/item/gun/ballistic/automatic/assault/ak47, +/obj/item/gun/ballistic/automatic/assault/ak47, /obj/item/ammo_box/magazine/ak47, /obj/item/ammo_box/magazine/ak47, /obj/item/ammo_box/magazine/ak47, diff --git a/_maps/shuttles/shiptest/independent_litieguai.dmm b/_maps/shuttles/shiptest/independent_litieguai.dmm index 65710c834f80..16fb276dc808 100644 --- a/_maps/shuttles/shiptest/independent_litieguai.dmm +++ b/_maps/shuttles/shiptest/independent_litieguai.dmm @@ -2248,17 +2248,17 @@ /area/ship/crew) "UX" = ( /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/gun/ballistic/automatic/pistol/commander/no_mag, /obj/item/gun/ballistic/automatic/pistol/commander/no_mag, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ diff --git a/_maps/shuttles/shiptest/independent_rigger.dmm b/_maps/shuttles/shiptest/independent_rigger.dmm index fb969897dce3..bcf0af7954a0 100644 --- a/_maps/shuttles/shiptest/independent_rigger.dmm +++ b/_maps/shuttles/shiptest/independent_rigger.dmm @@ -4144,8 +4144,8 @@ req_access_txt = "1" }, /obj/item/ammo_box/c38_box, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, /obj/item/ammo_box/magazine/m45, /turf/open/floor/plasteel/dark, /area/ship/security) diff --git a/_maps/shuttles/shiptest/independent_tranquility.dmm b/_maps/shuttles/shiptest/independent_tranquility.dmm index a43c627176e4..e612c7fe57e9 100644 --- a/_maps/shuttles/shiptest/independent_tranquility.dmm +++ b/_maps/shuttles/shiptest/independent_tranquility.dmm @@ -5481,7 +5481,7 @@ /area/ship/engineering/engine) "Rk" = ( /obj/structure/table, -/obj/item/ammo_box/magazine/m45/rubbershot{ +/obj/item/ammo_box/magazine/m45/rubber{ pixel_x = 7; pixel_y = -2 }, @@ -5644,15 +5644,15 @@ /area/ship/hallway/starboard) "Sg" = ( /obj/structure/table, -/obj/item/ammo_casing/c45/rubbershot{ +/obj/item/ammo_casing/c45/rubber{ pixel_x = 6; pixel_y = 7 }, -/obj/item/ammo_casing/c45/rubbershot{ +/obj/item/ammo_casing/c45/rubber{ pixel_x = 4; pixel_y = 5 }, -/obj/item/ammo_casing/c45/rubbershot{ +/obj/item/ammo_casing/c45/rubber{ pixel_x = 8; pixel_y = 3 }, diff --git a/_maps/shuttles/shiptest/inteq_hound.dmm b/_maps/shuttles/shiptest/inteq_hound.dmm index e937caddf2bd..2fc73b689d88 100644 --- a/_maps/shuttles/shiptest/inteq_hound.dmm +++ b/_maps/shuttles/shiptest/inteq_hound.dmm @@ -586,7 +586,7 @@ /obj/item/ammo_box/magazine/ak47{ pixel_x = 7 }, -/obj/item/gun/ballistic/automatic/assualt/ak47/inteq{ +/obj/item/gun/ballistic/automatic/assault/ak47/inteq{ pixel_x = -5 }, /obj/structure/closet/secure_closet/wall{ diff --git a/_maps/shuttles/shiptest/minutemen_asclepius.dmm b/_maps/shuttles/shiptest/minutemen_asclepius.dmm index ed665fcd4fad..b2b8bf8786f2 100644 --- a/_maps/shuttles/shiptest/minutemen_asclepius.dmm +++ b/_maps/shuttles/shiptest/minutemen_asclepius.dmm @@ -4069,8 +4069,8 @@ /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch, /obj/item/storage/belt/security, /obj/item/gun/ballistic/automatic/pistol/m1911, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot{ +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber{ pixel_x = 3 }, /obj/structure/railing{ diff --git a/_maps/shuttles/shiptest/minutemen_corvus.dmm b/_maps/shuttles/shiptest/minutemen_corvus.dmm index 907c9dc222e3..a8ede4ce713f 100644 --- a/_maps/shuttles/shiptest/minutemen_corvus.dmm +++ b/_maps/shuttles/shiptest/minutemen_corvus.dmm @@ -2327,18 +2327,18 @@ /obj/item/ammo_box/magazine/m45{ pixel_x = 5 }, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, /obj/effect/turf_decal/corner/opaque/red/border{ dir = 1 }, -/obj/item/ammo_box/magazine/m45/rubbershot, +/obj/item/ammo_box/magazine/m45/rubber, /obj/item/ammo_box/magazine/smgm9mm{ pixel_x = 2; pixel_y = 1 }, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot{ +/obj/item/ammo_box/magazine/smgm9mm/rubber{ pixel_x = -5; pixel_y = -2 }, diff --git a/_maps/shuttles/shiptest/minutemen_vela.dmm b/_maps/shuttles/shiptest/minutemen_vela.dmm index 1bbb3680a44b..033d34381725 100644 --- a/_maps/shuttles/shiptest/minutemen_vela.dmm +++ b/_maps/shuttles/shiptest/minutemen_vela.dmm @@ -28,9 +28,9 @@ /obj/item/ammo_box/magazine/m45, /obj/item/ammo_box/magazine/m45, /obj/item/ammo_box/magazine/m45, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, +/obj/item/ammo_box/magazine/smgm9mm/rubber, +/obj/item/ammo_box/magazine/smgm9mm/rubber, +/obj/item/ammo_box/magazine/smgm9mm/rubber, /obj/item/ammo_box/c9mm/rubbershot, /obj/structure/cable{ icon_state = "0-6" @@ -3056,8 +3056,8 @@ /obj/item/clothing/head/helmet/bulletproof/minutemen, /obj/item/storage/belt/security/full, /obj/item/restraints/handcuffs, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, /obj/effect/turf_decal/industrial/hatch/yellow, /obj/structure/extinguisher_cabinet/directional/east, /obj/item/clothing/suit/armor/vest/marine, @@ -6266,8 +6266,8 @@ /obj/item/clothing/head/helmet/bulletproof/minutemen, /obj/item/storage/belt/security/full, /obj/item/restraints/handcuffs, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, /obj/effect/turf_decal/industrial/hatch/yellow, /obj/structure/sign/poster/official/focus{ pixel_y = 32 diff --git a/code/modules/cargo/packs/ammo.dm b/code/modules/cargo/packs/ammo.dm index 56ff80d77018..9bb96a14be5c 100644 --- a/code/modules/cargo/packs/ammo.dm +++ b/code/modules/cargo/packs/ammo.dm @@ -122,8 +122,8 @@ name = "WT-550 Auto Rifle Exotic Ammo Crate" desc = "Contains one magazine of armor-piercing and one magazine of incendiary ammunition for the WT-550 Auto Rifle. Sadly, our manufacturer discontinued the uranium-tipped bullets." cost = 2500 - contains = list(/obj/item/ammo_box/magazine/wt550m9/wtap, - /obj/item/ammo_box/magazine/wt550m9/wtic) + contains = list(/obj/item/ammo_box/magazine/wt550m9/ap, + /obj/item/ammo_box/magazine/wt550m9/inc) /* Rifle ammo diff --git a/code/modules/cargo/packs/gun.dm b/code/modules/cargo/packs/gun.dm index 249535824738..b91fe38e0390 100644 --- a/code/modules/cargo/packs/gun.dm +++ b/code/modules/cargo/packs/gun.dm @@ -130,16 +130,16 @@ name = "P16 Assault Rifle Crate" desc = "Contains two high-powered, automatic rifles chambered in 5.56mm." cost = 8000 - contains = list(/obj/item/gun/ballistic/automatic/assualt/p16, - /obj/item/gun/ballistic/automatic/assualt/p16) + contains = list(/obj/item/gun/ballistic/automatic/assault/p16, + /obj/item/gun/ballistic/automatic/assault/p16) crate_name = "auto rifle crate" /datum/supply_pack/gun/ak name = "SVG-67 Rifle Crate" desc = "Contains two high-powered, automatic rifles chambered in 7.62x39mm." cost = 6000 - contains = list(/obj/item/gun/ballistic/automatic/assualt/ak47, - /obj/item/gun/ballistic/automatic/assualt/ak47) + contains = list(/obj/item/gun/ballistic/automatic/assault/ak47, + /obj/item/gun/ballistic/automatic/assault/ak47) crate_name = "auto rifle crate" /* diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 23b489b6a3c3..fbe1eceb1f65 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -427,7 +427,7 @@ /obj/item/clothing/suit/armor/vest/bulletproof/solgov/Initialize() . = ..() - allowed |= list(/obj/item/gun/ballistic/automatic/assualt/swiss_cheese, /obj/item/tank) + allowed |= list(/obj/item/gun/ballistic/automatic/assault/swiss_cheese, /obj/item/tank) /obj/item/clothing/suit/armor/vest/hop name = "head of personnel's parade jacket" diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index d847e015cde6..8207bdb85bbe 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -165,7 +165,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S /datum/outfit/job/security/minutemen/armed name = "Minuteman (Colonial Minutemen) (Armed)" - suit_store = /obj/item/gun/ballistic/automatic/assualt/p16/minutemen + suit_store = /obj/item/gun/ballistic/automatic/assault/p16/minutemen belt = /obj/item/storage/belt/military/minutemen/loaded /datum/outfit/job/security/minutemen/mechpilot diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index 08aeaab16e8d..a59b68a49892 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -77,7 +77,7 @@ /datum/outfit/job/warden/minutemen/armed name = "Field Commander (Colonial Minutemen) (Armed)" - suit_store = /obj/item/gun/ballistic/automatic/assualt/p16/minutemen + suit_store = /obj/item/gun/ballistic/automatic/assault/p16/minutemen belt = /obj/item/storage/belt/military/minutemen/loaded backpack_contents = list(/obj/item/melee/classic_baton=1, /obj/item/gun/ballistic/automatic/pistol/commander=1, /obj/item/restraints/handcuffs=1, /obj/item/gun/energy/e_gun/advtaser=1) diff --git a/code/modules/mob/living/simple_animal/hostile/frontiersman.dm b/code/modules/mob/living/simple_animal/hostile/frontiersman.dm index af3e742a08d7..c8e6a1c8d2b4 100644 --- a/code/modules/mob/living/simple_animal/hostile/frontiersman.dm +++ b/code/modules/mob/living/simple_animal/hostile/frontiersman.dm @@ -39,7 +39,7 @@ retreat_distance = 5 minimum_distance = 5 projectilesound = 'sound/weapons/gun/revolver/shot.ogg' - casingtype = /obj/item/ammo_casing/n762 + casingtype = /obj/item/ammo_casing/n762_38 /mob/living/simple_animal/hostile/frontier/ranged/mosin @@ -47,7 +47,7 @@ icon_living = "frontiersmanrangedrifle" loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged, /obj/item/gun/ballistic/rifle/boltaction) - casingtype = /obj/item/ammo_casing/a762 + casingtype = /obj/item/ammo_casing/a762_54 projectilesound = 'sound/weapons/gun/rifle/mosin.ogg' /mob/living/simple_animal/hostile/frontier/ranged/trooper @@ -68,7 +68,7 @@ rapid_fire_delay = 3 casingtype = /obj/item/ammo_casing/a762_39 loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper, - /obj/item/gun/ballistic/automatic/assualt/ak47) + /obj/item/gun/ballistic/automatic/assault/ak47) /mob/living/simple_animal/hostile/frontier/ranged/trooper/rifle icon_state = "frontiersmanrangedmosin" @@ -76,7 +76,7 @@ loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper, /obj/item/gun/ballistic/rifle/boltaction) - casingtype = /obj/item/ammo_casing/a762 + casingtype = /obj/item/ammo_casing/a762_54 projectilesound = 'sound/weapons/gun/rifle/mosin.ogg' /mob/living/simple_animal/hostile/frontier/ranged/trooper/heavy diff --git a/code/modules/projectiles/ammunition/ballistic/lmg.dm b/code/modules/projectiles/ammunition/ballistic/lmg.dm index 5c722e9e1455..90030e7b0944 100644 --- a/code/modules/projectiles/ammunition/ballistic/lmg.dm +++ b/code/modules/projectiles/ammunition/ballistic/lmg.dm @@ -1,4 +1,4 @@ -// 7.12x82mm (SAW) +// 7.12x82mm (L6 SAW) /obj/item/ammo_casing/mm712x82 name = "7.12x82mm bullet casing" @@ -9,24 +9,24 @@ /obj/item/ammo_casing/mm712x82/ap name = "7.12x82mm armor-piercing bullet casing" - desc = "A 7.12x82mm bullet casing with a tungsten core to enhance armor penetration." - projectile_type = /obj/projectile/bullet/mm712x82_ap + desc = "A 7.12x82mm armor-piercing bullet casing." + projectile_type = /obj/projectile/bullet/mm712x82/ap bullet_skin = "ap" -/obj/item/ammo_casing/mm712x82/hollow - name = "7.12x82mm hollow-point bullet casing" - desc = "A 7.12x82mm bullet casing designed to fragment on impact, improving damage against soft targets." - projectile_type = /obj/projectile/bullet/mm712x82_hp +/obj/item/ammo_casing/mm712x82/hp + name = "7.12x82mm hollow point bullet casing" + desc = "A 7.12x82mm hollow point bullet casing." + projectile_type = /obj/projectile/bullet/mm712x82/hp bullet_skin = "hollow" -/obj/item/ammo_casing/mm712x82/incen +/obj/item/ammo_casing/mm712x82/inc name = "7.12x82mm incendiary bullet casing" - desc = "A 7.12x82mm bullet casing with an incendiary payload." + desc = "A 7.12x82mm incendiary bullet casing." projectile_type = /obj/projectile/bullet/incendiary/mm712x82 bullet_skin = "incen" /obj/item/ammo_casing/mm712x82/match name = "7.12x82mm match bullet casing" - desc = "A 7.12x82mm bullet casing of exceptionally high grade. A skilled marksman could pull off deadly richochet shots with this." - projectile_type = /obj/projectile/bullet/mm712x82_match + desc = "A 7.12x82mm match bullet casing." + projectile_type = /obj/projectile/bullet/mm712x82/match bullet_skin = "rubber" diff --git a/code/modules/projectiles/ammunition/ballistic/pistol.dm b/code/modules/projectiles/ammunition/ballistic/pistol.dm index 99340d2ebdc1..15abfdb02e10 100644 --- a/code/modules/projectiles/ammunition/ballistic/pistol.dm +++ b/code/modules/projectiles/ammunition/ballistic/pistol.dm @@ -11,31 +11,31 @@ name = "10mm surplus bullet casing" desc = "A 10mm surplus bullet casing." bullet_skin = "surplus" - projectile_type = /obj/projectile/bullet/c10mm_surplus + projectile_type = /obj/projectile/bullet/c10mm/surplus /obj/item/ammo_casing/c10mm/ap name = "10mm armor-piercing bullet casing" desc = "A 10mm armor-piercing bullet casing." bullet_skin = "ap" - projectile_type = /obj/projectile/bullet/c10mm_ap + projectile_type = /obj/projectile/bullet/c10mm/ap /obj/item/ammo_casing/c10mm/hp name = "10mm hollow point bullet casing" desc = "A 10mm hollow point bullet casing." - projectile_type = /obj/projectile/bullet/c10mm_hp + projectile_type = /obj/projectile/bullet/c10mm/hp bullet_skin = "hollow" -/obj/item/ammo_casing/c10mm/fire +/obj/item/ammo_casing/c10mm/inc name = "10mm incendiary bullet casing" desc = "A 10mm incendiary bullet casing." bullet_skin = "incen" projectile_type = /obj/projectile/bullet/incendiary/c10mm -/obj/item/ammo_casing/c10mm/rubbershot +/obj/item/ammo_casing/c10mm/rubber name = "10mm rubber bullet casing" desc = "A 10mm rubber bullet casing." bullet_skin = "rubber" - projectile_type = /obj/projectile/bullet/c10mm/rubbershot + projectile_type = /obj/projectile/bullet/c10mm/rubber // 9mm (Commander + SABR) @@ -50,19 +50,19 @@ name = "9mm surplus bullet casing" desc = "A 9mm surplus bullet casing." bullet_skin = "surplus" - projectile_type = /obj/projectile/bullet/c9mm_surplus + projectile_type = /obj/projectile/bullet/c9mm/surplus /obj/item/ammo_casing/c9mm/ap name = "9mm armor-piercing bullet casing" desc = "A 9mm armor-piercing bullet casing." bullet_skin = "ap" - projectile_type =/obj/projectile/bullet/c9mm_ap + projectile_type =/obj/projectile/bullet/c9mm/ap /obj/item/ammo_casing/c9mm/hp name = "9mm hollow point bullet casing" desc = "A 9mm hollow point bullet casing." bullet_skin = "hollow" - projectile_type = /obj/projectile/bullet/c9mm_hp + projectile_type = /obj/projectile/bullet/c9mm/hp /obj/item/ammo_casing/c9mm/inc name = "9mm incendiary bullet casing" @@ -70,11 +70,11 @@ bullet_skin = "incen" projectile_type = /obj/projectile/bullet/incendiary/c9mm -/obj/item/ammo_casing/c9mm/rubbershot - name = "9mm rubbershot bullet casing" - desc = "A 9mm rubbershot bullet casing." +/obj/item/ammo_casing/c9mm/rubber + name = "9mm rubber bullet casing" + desc = "A 9mm rubber bullet casing." bullet_skin = "rubber" - projectile_type = /obj/projectile/bullet/c9mm/rubbershot + projectile_type = /obj/projectile/bullet/c9mm/rubber // .45 (M1911 + C20r) @@ -89,33 +89,33 @@ name = ".45 surplus bullet casing" desc = "A .45 surplus bullet casing." bullet_skin = "surplus" - projectile_type = /obj/projectile/bullet/c45_surplus + projectile_type = /obj/projectile/bullet/c45/surplus /obj/item/ammo_casing/c45/ap name = ".45 armor-piercing bullet casing" desc = "A .45 armor-piercing bullet casing." bullet_skin = "ap" - projectile_type =/obj/projectile/bullet/c45_ap + projectile_type =/obj/projectile/bullet/c45/ap /obj/item/ammo_casing/c45/hp name = ".45 hollow point bullet casing" desc = "A .45 hollow point bullet casing." bullet_skin = "hollow" - projectile_type = /obj/projectile/bullet/c45_hp + projectile_type = /obj/projectile/bullet/c45/hp -/obj/item/ammo_casing/c45/fire +/obj/item/ammo_casing/c45/inc name = ".45 incendiary bullet casing" desc = "A .45 incendiary bullet casing." bullet_skin = "incen" projectile_type = /obj/projectile/bullet/incendiary/c45 -/obj/item/ammo_casing/c45/rubbershot - name = ".45 rubbershot bullet casing" - desc = "A .45 rubbershot bullet casing." +/obj/item/ammo_casing/c45/rubber + name = ".45 rubber bullet casing" + desc = "A .45 rubber bullet casing." bullet_skin = "rubber" - projectile_type = /obj/projectile/bullet/c45/rubbershot + projectile_type = /obj/projectile/bullet/c45/rubber -// .50AE (Desert Eagle) +// .50 AE (Desert Eagle) /obj/item/ammo_casing/a50AE name = ".50 AE bullet casing" diff --git a/code/modules/projectiles/ammunition/ballistic/revolver.dm b/code/modules/projectiles/ammunition/ballistic/revolver.dm index bec8e1e3a502..47ad1b7aba84 100644 --- a/code/modules/projectiles/ammunition/ballistic/revolver.dm +++ b/code/modules/projectiles/ammunition/ballistic/revolver.dm @@ -1,4 +1,4 @@ -// .357 (Syndie Revolver) +// .357 (Syndicate Revolver) /obj/item/ammo_casing/a357 name = ".357 bullet casing" @@ -8,7 +8,7 @@ /obj/item/ammo_casing/a357/match name = ".357 match bullet casing" - desc = "A .357 bullet casing, manufactured to exceedingly high standards." + desc = "A .357 match bullet casing." caliber = ".357" projectile_type = /obj/projectile/bullet/a357/match @@ -27,7 +27,7 @@ /obj/item/ammo_casing/a4570/match name = ".45-70 match bullet casing" - desc = "A .45-70 bullet casing, manufactured to exceedingly high standards." + desc = "A .45-70 match bullet casing." bullet_skin = "rubber" projectile_type = /obj/projectile/bullet/a4570/match @@ -39,23 +39,23 @@ /obj/item/ammo_casing/a4570/explosive name = ".45-70 explosive bullet casing" - desc = "A .45-70 bullet casing, loaded with a tiny explosive charge." + desc = "A .45-70 explosive bullet casing." projectile_type = /obj/projectile/bullet/a4570/explosive // 7.62x38mmR (Nagant Revolver) -/obj/item/ammo_casing/n762 +/obj/item/ammo_casing/n762_38 name = "7.62x38mmR bullet casing" desc = "A 7.62x38mmR bullet casing." caliber = "7.62x38mmR" projectile_type = /obj/projectile/bullet/n762 -// .38 (Detective's Gun) +// .38 Special (Colt Detective Special & Winchester) /obj/item/ammo_casing/c38 - name = ".38 bullet casing" - desc = "A .38 bullet casing." + name = ".38 special bullet casing" + desc = "A .38 special bullet casing." caliber = ".38" projectile_type = /obj/projectile/bullet/c38 @@ -67,13 +67,13 @@ /obj/item/ammo_casing/c38/match name = ".38 match bullet casing" - desc = "A .38 bullet casing, manufactured to exceedingly high standards." + desc = "A .38 match bullet casing." bullet_skin = "rubber" projectile_type = /obj/projectile/bullet/c38/match /obj/item/ammo_casing/c38/match/bouncy name = ".38 rubber bullet casing" - desc = "A .38 rubber bullet casing, manufactured to exceedingly high standards." + desc = "A .38 rubber bullet casing." bullet_skin = "rubber" projectile_type = /obj/projectile/bullet/c38/match/bouncy diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm index b91c901dd47b..ff6c42284055 100644 --- a/code/modules/projectiles/ammunition/ballistic/rifle.dm +++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm @@ -1,17 +1,17 @@ -// 7.62 (Nagant Rifle) +// 7.62x54mmR (Illestren Hunting Rifle) -/obj/item/ammo_casing/a762 +/obj/item/ammo_casing/a762_54 name = "7.62x54mmR bullet casing" desc = "A 7.62x54mmR bullet casing." icon_state = "rifle-brass" caliber = "7.62x54mmR" - projectile_type = /obj/projectile/bullet/a762 + projectile_type = /obj/projectile/bullet/a762_54 // 8x58mm Caseless (SSG-669C) /obj/item/ammo_casing/caseless/a858 name = "8x58mm caseless round" - desc = "a 8x58mm caseless round." + desc = "A 8x58mm caseless round." icon_state = "caseless" caliber = "a858" projectile_type = /obj/projectile/bullet/a858 @@ -25,14 +25,16 @@ caliber = "a300" projectile_type = /obj/projectile/bullet/a300 -// 5.56mm (M-90gl Carbine & P-16) +// 5.56x39mm (M-90gl Carbine & P-16) -/obj/item/ammo_casing/a556 - name = "5.56mm bullet casing" - desc = "A 5.56mm bullet casing." +/obj/item/ammo_casing/a556_39 + name = "5.56x39mm bullet casing" + desc = "A 5.56x39mm bullet casing." icon_state = "rifle-brass" caliber = "5.56x45mm" - projectile_type = /obj/projectile/bullet/a556 + projectile_type = /obj/projectile/bullet/a556_45 + +// 5.45x39mm (AKS-74U) /obj/item/ammo_casing/a545_39 name = "5.45x39mm bullet casing" @@ -45,12 +47,14 @@ /obj/item/ammo_casing/a545_39/recycled name = "recycled 5.45x39mm bullet casing" - desc = "A recycled 5.45x39mm bullet casing. Likely has been spent and reloaded dozens of times." + desc = "A recycled 5.45x39mm bullet casing." bullet_skin = "surplus" caliber = "5.45x39mm" variance = 3.5 projectile_type = /obj/projectile/bullet/a545_39 +// 7.62x39mm (SVG-67 & SkM-24) + /obj/item/ammo_casing/a762_39 name = "7.62x39mm bullet casing" desc = "A 7.62x39mm bullet casing." @@ -59,6 +63,8 @@ variance = 2 projectile_type = /obj/projectile/bullet/a762_39 +// .300 Blackout (Polymer Survivor Rifle) + /obj/item/ammo_casing/aac_300blk name = ".300 BLK bullet casing" desc = "A .300 Blackout bullet casing." @@ -68,10 +74,12 @@ /obj/item/ammo_casing/aac_300blk/recycled name = "recycled .300 BLK bullet casing" - desc = "A .300 Blackout bullet casing. It looks like it has been re-necked and reloaded several times." + desc = "A recycled .300 Blackout bullet casing." caliber = ".300 BLK" projectile_type = /obj/projectile/bullet/aac_300blk +//.308 Winchester (M514 EBR & CM-GAL-S) + /obj/item/ammo_casing/win308 name = ".308 Winchester bullet casing" desc = "A .308 Winchester bullet casing." diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index bae27ebeace2..9f74727086e5 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -2,12 +2,12 @@ /obj/item/ammo_casing/shotgun name = "shotgun slug" - desc = "A 12 gauge lead slug." + desc = "A 12-gauge lead slug." icon = 'icons/obj/ammo_shotshells.dmi' icon_state = "slug" caliber = "12ga" custom_materials = list(/datum/material/iron=4000) - projectile_type = /obj/projectile/bullet/shotgun_slug + projectile_type = /obj/projectile/bullet/slug /obj/item/ammo_casing/shotgun/update_icon_state() icon_state = "[initial(icon_state)][BB ? "" : "-spent"]" @@ -15,9 +15,9 @@ /obj/item/ammo_casing/shotgun/buckshot name = "buckshot shell" - desc = "A 12 gauge buckshot shell." + desc = "A 12-gauge buckshot shell." icon_state = "buckshot" - projectile_type = /obj/projectile/bullet/pellet/shotgun_buckshot + projectile_type = /obj/projectile/bullet/pellet/buckshot pellets = 8 variance = 25 @@ -26,13 +26,13 @@ desc = "A weak beanbag slug for riot control." icon_state = "beanbag" custom_materials = list(/datum/material/iron=250) - projectile_type = /obj/projectile/bullet/shotgun_beanbag + projectile_type = /obj/projectile/bullet/slug/beanbag /obj/item/ammo_casing/shotgun/rubbershot name = "rubber shot" desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance." icon_state = "rubber" - projectile_type = /obj/projectile/bullet/pellet/shotgun_rubbershot + projectile_type = /obj/projectile/bullet/pellet/rubbershot pellets = 8 variance = 25 custom_materials = list(/datum/material/iron=4000) @@ -47,16 +47,16 @@ name = "improvised shell" desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards." icon_state = "improvised" - projectile_type = /obj/projectile/bullet/pellet/shotgun_improvised + projectile_type = /obj/projectile/bullet/pellet/improvised custom_materials = list(/datum/material/iron=250) pellets = 10 variance = 25 /obj/item/ammo_casing/shotgun/incapacitate name = "custom incapacitating shot" - desc = "A shotgun casing filled with... something. used to incapacitate targets." + desc = "A shotgun casing filled with... something. Used to incapacitate targets." icon_state = "bounty" - projectile_type = /obj/projectile/bullet/pellet/shotgun_incapacitate + projectile_type = /obj/projectile/bullet/pellet/rubbershot/incapacitate pellets = 12//double the pellets, but half the stun power of each, which makes this best for just dumping right in someone's face. variance = 25 custom_materials = list(/datum/material/iron=4000) @@ -65,12 +65,12 @@ name = "taser slug" desc = "A stunning taser slug." icon_state = "taser" - projectile_type = /obj/projectile/bullet/shotgun_stunslug + projectile_type = /obj/projectile/bullet/slug/stun custom_materials = list(/datum/material/iron=250) /obj/item/ammo_casing/shotgun/dart name = "shotgun dart" - desc = "A dart for use in shotguns. Can be injected with up to 30 units of any chemical." + desc = "A dart for use in shotguns. Can be injected with up to thirty units of any chemical." icon_state = "dart" projectile_type = /obj/projectile/bullet/dart var/reagent_amount = 30 @@ -115,13 +115,13 @@ name = "meteorslug shell" desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired." icon_state = "meteor" - projectile_type = /obj/projectile/bullet/shotgun_meteorslug + projectile_type = /obj/projectile/bullet/slug/meteor /obj/item/ammo_casing/shotgun/frag12 name = "FRAG-12 slug" desc = "A high explosive breaching round for a 12 gauge shotgun." icon_state = "frag12" - projectile_type = /obj/projectile/bullet/shotgun_frag12 + projectile_type = /obj/projectile/bullet/slug/frag12 /obj/item/ammo_casing/shotgun/ion name = "ion shell" @@ -152,7 +152,7 @@ name = "two-bore shell" desc = "A massive fucking two-bore shell." caliber = "twobore" - projectile_type = /obj/projectile/bullet/pellet/shotgun_buckshot/twobore + projectile_type = /obj/projectile/bullet/pellet/buckshot/twobore pellets = 6 variance = 20 transform = matrix(2, 0, 0, 0, 2, 0) diff --git a/code/modules/projectiles/ammunition/ballistic/smg.dm b/code/modules/projectiles/ammunition/ballistic/smg.dm index d58a1464f529..37218201902e 100644 --- a/code/modules/projectiles/ammunition/ballistic/smg.dm +++ b/code/modules/projectiles/ammunition/ballistic/smg.dm @@ -1,4 +1,4 @@ -// 4.6x30mm (Autorifles) +// 4.6x30mm (WT-550 Automatic Rifle & NT-SVG) /obj/item/ammo_casing/c46x30mm name = "4.6x30mm bullet casing" @@ -11,7 +11,7 @@ name = "4.6x30mm armor-piercing bullet casing" desc = "A 4.6x30mm armor-piercing bullet casing." bullet_skin = "ap" - projectile_type = /obj/projectile/bullet/c46x30mm_ap + projectile_type = /obj/projectile/bullet/c46x30mm/ap /obj/item/ammo_casing/c46x30mm/inc name = "4.6x30mm incendiary bullet casing" @@ -19,6 +19,8 @@ bullet_skin = "incen" projectile_type = /obj/projectile/bullet/incendiary/c46x30mm +// 4.73x33mm caseless (Solar) + /obj/item/ammo_casing/caseless/c47x33mm name = "4.73x33mm caseless round" desc = "A 4.73x33mm caseless round." @@ -26,9 +28,11 @@ caliber = "4.73x33mm caseless" projectile_type = /obj/projectile/bullet/c47x33mm +// 5.56mm HITP caseless (Pistole C) + /obj/item/ammo_casing/caseless/c556mm - name = "5.56mm caseless round" - desc = "A 5.56mm caseless round." + name = "5.56mm HITP caseless round" + desc = "A 5.56mm HITP caseless round." icon_state = "caseless" caliber = "5.56mm caseless" projectile_type = /obj/projectile/bullet/c556mm @@ -36,19 +40,19 @@ /obj/item/ammo_casing/caseless/c556mm/surplus name = "5.56mm HITP caseless surplus round" desc = "A 5.56mm HITP caseless surplus round." - projectile_type = /obj/projectile/bullet/c556mm_surplus + projectile_type = /obj/projectile/bullet/c556mm/surplus /obj/item/ammo_casing/caseless/c556mm/ap - name = "5.56mm HITP caseless armor piercing round" - desc = "A 5.56mm HITP caseless armor piercing round." - projectile_type = /obj/projectile/bullet/c556mm_ap + name = "5.56mm HITP caseless armor-piercing round" + desc = "A 5.56mm HITP caseless armor-piercing round." + projectile_type = /obj/projectile/bullet/c556mm/ap /obj/item/ammo_casing/caseless/c556mm/hp - name = "5.56mm HITP caseless hollow-point round" - desc = "A 5.56mm HITP caseless hollow-point round." - projectile_type = /obj/projectile/bullet/c556mm_hp + name = "5.56mm HITP caseless hollow point round" + desc = "A 5.56mm HITP caseless hollow point round." + projectile_type = /obj/projectile/bullet/c556mm/hp /obj/item/ammo_casing/caseless/c556mm/rubbershot - name = "5.56mm HITP rubber round" + name = "5.56mm HITP caseless rubber round" desc = "A 5.56mm HITP caseless rubber round." - projectile_type = /obj/projectile/bullet/c556mm/rubbershot + projectile_type = /obj/projectile/bullet/c556mm/rubber diff --git a/code/modules/projectiles/ammunition/ballistic/sniper.dm b/code/modules/projectiles/ammunition/ballistic/sniper.dm index 4762e05a5cac..af7369204e6d 100644 --- a/code/modules/projectiles/ammunition/ballistic/sniper.dm +++ b/code/modules/projectiles/ammunition/ballistic/sniper.dm @@ -1,21 +1,21 @@ -// .50 (Sniper) +// .50 BMG (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." icon_state = "big-steel" caliber = ".50 BMG" projectile_type = /obj/projectile/bullet/p50 /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." + name = ".50 BMG soporific bullet casing" + desc = "A .50 BMG soporific bullet casing." bullet_skin = "rubber" projectile_type = /obj/projectile/bullet/p50/soporific harmful = FALSE /obj/item/ammo_casing/p50/penetrator - name = ".50 penetrator round bullet casing" - desc = "A .50 caliber penetrator round casing." + name = ".50 BMG penetrator bullet casing" + desc = "A .50 BMG penetrator bullet casing." bullet_skin = "ap" projectile_type = /obj/projectile/bullet/p50/penetrator diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm index 253e9262e595..0336744ec748 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -1,6 +1,8 @@ +// .357 Speed Loaders (Syndicate Revolver) + /obj/item/ammo_box/a357 name = "speed loader (.357)" - desc = "Designed to quickly reload revolvers." + desc = "A 7-round speed loader for quickly reloading .357 revolvers. These rounds do good damage with average performance against armor." icon_state = "357" ammo_type = /obj/item/ammo_casing/a357 max_ammo = 7 @@ -11,17 +13,19 @@ /obj/item/ammo_box/a357/match name = "speed loader (.357 match)" - desc = "Designed to quickly reload revolvers. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with." + desc = "A 7-round speed loader for quickly reloading .357 revolvers. These match rounds travel faster, perform better against armor, and can ricochet off targets." ammo_type = /obj/item/ammo_casing/a357/match /obj/item/ammo_box/a357/hp name = "speed loader (.357 hollow point)" - desc = "Designed to quickly reload revolvers. Loaded with expanding rounds that cause massive tissue damage at the cost of armor penetration." + desc = "A 7-round speed loader for quickly reloading .357 revolvers. These hollow point rounds do incredible damage against soft targets, but are nearly ineffective against armored ones." ammo_type = /obj/item/ammo_casing/a357/hp +// .45-70 Ammo Holders (Hunting Revolver) + /obj/item/ammo_box/a4570 name = "ammo holder (.45-70)" - desc = "Designed to help reload large revolvers." + desc = "A 6-round ammo holder for .45-70 revolvers. These rounds do significant damage with average performance against armor." icon_state = "4570" ammo_type = /obj/item/ammo_casing/a4570 max_ammo = 6 @@ -32,33 +36,37 @@ /obj/item/ammo_box/a4570/match name = "ammo holder (.45-70 match)" - desc = "Designed to help reload large revolvers. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with." + desc = "A 6-round ammo holder for .45-70 revolvers. These match rounds travel faster, perform better against armor, and can ricochet off targets." ammo_type = /obj/item/ammo_casing/a4570/match /obj/item/ammo_box/a4570/hp name = "ammo holder (.45-70 hollow point)" - desc = "Designed to help reload large revolvers. Loaded with expanding rounds that cause massive tissue damage at the cost of armor penetration." + desc = "A 6-round ammo holder for .45-70 revolvers. These hollow point rounds do legendary damage against soft targets, but are nearly ineffective against armored ones." ammo_type = /obj/item/ammo_casing/a357/hp /obj/item/ammo_box/a4570/explosive name = "ammo holder (.45-70 explosive)" - desc = "Designed to help reload large revolvers. These rounds contain a small explosive charge that detonates on impact, creating large wounds and potentially removing limbs." + desc = "A 6-round ammo holder for .45-70 revolvers. These explosive rounds contain a small explosive charge that detonates on impact, creating large wounds and potentially removing limbs." ammo_type = /obj/item/ammo_casing/a4570/explosive +// 7.62x38mmR Ammo Holders (Nagant Revolver) + /obj/item/ammo_box/n762_clip name = "ammo holder (7.62x38mmR)" - desc = "Designed to help reload Nagant revolvers." + desc = "A 7-round ammo holder for the Nagant revolver. These rounds do good damage, but struggle against armor." icon_state = "n762" - ammo_type = /obj/item/ammo_casing/n762 + ammo_type = /obj/item/ammo_casing/n762_38 max_ammo = 7 multiple_sprites = AMMO_BOX_PER_BULLET item_flags = NO_MAT_REDEMPTION w_class = WEIGHT_CLASS_TINY instant_load = TRUE +// .38 special Speed Loaders (Colt Detective Special) + /obj/item/ammo_box/c38 - name = "speed loader (.38)" - desc = "Designed to quickly reload revolvers." + name = "speed loader (.38 special)" + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These rounds do moderate damage, but plink against armor." icon_state = "38" ammo_type = /obj/item/ammo_casing/c38 max_ammo = 6 @@ -69,63 +77,111 @@ /obj/item/ammo_box/c38/trac name = "speed loader (.38 TRAC)" - desc = "Designed to quickly reload revolvers. TRAC bullets embed a tracking implant within the target's body." + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These TRAC rounds do pitiful damage, but embed a tracking device in targets hit." ammo_type = /obj/item/ammo_casing/c38/trac /obj/item/ammo_box/c38/match name = "speed loader (.38 match)" - desc = "Designed to quickly reload revolvers. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with." + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These match rounds travel faster, perform better against armor, and can ricochet off targets." ammo_type = /obj/item/ammo_casing/c38/match /obj/item/ammo_box/c38/match/bouncy name = "speed loader (.38 rubber)" - desc = "Designed to quickly reload revolvers. These rounds are incredibly bouncy and MOSTLY nonlethal, making them great to show off trickshots with." + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These rounds are incredibly bouncy and MOSTLY nonlethal, making them great to show off trickshots with." ammo_type = /obj/item/ammo_casing/c38/match/bouncy /obj/item/ammo_box/c38/dumdum name = "speed loader (.38 dum-dum)" - desc = "Designed to quickly reload revolvers. Dum-dum bullets shatter on impact and shred the target's innards, likely getting caught inside." + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These dum-dum bullets shatter on impact and embed in the target's innards. However, they're nearly ineffective against armor and do okay damage." ammo_type = /obj/item/ammo_casing/c38/dumdum /obj/item/ammo_box/c38/hotshot name = "speed loader (.38 hot shot)" - desc = "Designed to quickly reload revolvers. Hot shot bullets contain an incendiary payload." + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These hot shot bullets contain an incendiary payload that set targets alight." ammo_type = /obj/item/ammo_casing/c38/hotshot /obj/item/ammo_box/c38/iceblox name = "speed loader (.38 iceblox)" - desc = "Designed to quickly reload revolvers. Iceblox bullets contain a cryogenic payload." + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These iceblox bullets contain a cryogenic payload that chills targets." ammo_type = /obj/item/ammo_casing/c38/iceblox +// 7.62x54mmR Stripper Clip (Illestren Hunting Rifle) + +/obj/item/ammo_box/a762 + name = "stripper clip (7.62x54mmR)" + desc = "A 5-round stripper clip for the Illestren Hunting Rifle. These rounds do good damage with significant armor penetration." + icon_state = "762" + ammo_type = /obj/item/ammo_casing/a762_54 + max_ammo = 5 + multiple_sprites = AMMO_BOX_PER_BULLET + w_class = WEIGHT_CLASS_TINY + instant_load = TRUE + +// 8x58mm Stripper Clip (SSG-669C) + +/obj/item/ammo_box/a858 + name = "stripper clip (8x58mm)" + desc = "A 5-round stripper clip for the SSG-669C rifle. These rounds do good damage with significant armor penetration." + icon_state = "762" + ammo_type = /obj/item/ammo_casing/caseless/a858 + max_ammo = 5 + multiple_sprites = AMMO_BOX_PER_BULLET + +// .300 Blackout Stripper Clip (Polymer Survivor Rifle) + +/obj/item/ammo_box/aac_300blk_stripper + name = "stripper clip (.300 BLK)" + desc = "A 5-round stripper clip for makeshift bolt-action rifles. These rounds do good damage with good armor penetration." + icon_state = "762" + ammo_type = /obj/item/ammo_casing/aac_300blk + caliber = ".300 BLK" + max_ammo = 5 + multiple_sprites = AMMO_BOX_PER_BULLET + w_class = WEIGHT_CLASS_TINY + instant_load = TRUE + +// Ferromagnetic Pellet Speed Loader (Claris) + +/obj/item/ammo_box/amagpellet_claris + name = "\improper Claris speed loader (ferromagnetic pellet)" + desc = "A 22-round speed loader for quickly reloading the Claris rifle. Ferromagnetic pellets do okay damage with significant armor penetration." + icon_state = "claris-sl" + ammo_type = /obj/item/ammo_casing/caseless/gauss + max_ammo = 22 + multiple_sprites = AMMO_BOX_FULL_EMPTY + item_flags = NO_MAT_REDEMPTION + +// Ammo Boxes + /obj/item/ammo_box/c38_box name = "ammo box (.38)" - desc = "A box of standard .38 ammo." + desc = "A box of standard .38 special ammo." icon_state = "38box" ammo_type = /obj/item/ammo_casing/c38 max_ammo = 50 /obj/item/ammo_box/a12g - name = "ammo box (12ga buckshot)" - desc = "A box of 12 gauge buckshot shells, devastating at close range." + name = "ammo box (12g buckshot)" + desc = "A box of 12-gauge buckshot shells, devastating at close range." icon_state = "12gbox-buckshot" ammo_type = /obj/item/ammo_casing/shotgun/buckshot max_ammo = 25 /obj/item/ammo_box/a12g/slug - name = "ammo box (12ga slug)" - desc = "A box of 12 gauge slugs, for improved accuracy and penetration." + name = "ammo box (12g slug)" + desc = "A box of 12-gauge slugs, for improved accuracy and penetration." icon_state = "12gbox-slug" ammo_type = /obj/item/ammo_casing/shotgun /obj/item/ammo_box/a12g/beanbag - name = "ammo box (12ga beanbag)" - desc = "A box of 12 gauge beanbag shells, for incapacitating targets." + name = "ammo box (12g beanbag)" + desc = "A box of 12-gauge beanbag shells, for incapacitating targets." icon_state = "12gbox-beanbag" ammo_type = /obj/item/ammo_casing/shotgun/beanbag /obj/item/ammo_box/a12g/rubbershot - name = "ammo box (12ga rubbershot)" - desc = "A box of 12 gauge rubbershot shells, designed for riot control." + name = "ammo box (12g rubbershot)" + desc = "A box of 12-gauge rubbershot shells, designed for riot control." icon_state = "12gbox-rubbershot" ammo_type = /obj/item/ammo_casing/shotgun/rubbershot @@ -146,7 +202,7 @@ name = "ammo box (9mm rubbershot)" desc = "A box of 9mm rubbershot ammo, designed to disable targets without causing serious damage." icon_state = "9mmbox-rubbershot" - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot + ammo_type = /obj/item/ammo_casing/c9mm/rubber /obj/item/ammo_box/c9mm/ap name = "ammo box (9mm armor-piercing)" @@ -183,7 +239,7 @@ name = "ammo box (10mm rubbershot)" desc = "A box of 10mm rubbershot ammo, designed to disable targets without causing serious damage." icon_state = "10mmbox-rubbershot" - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot + ammo_type = /obj/item/ammo_casing/c9mm/rubber /obj/item/ammo_box/c10mm/ap name = "ammo box (10mm armor-piercing)" @@ -201,7 +257,7 @@ name = "ammo box (10mm incendiary)" desc = "A box of 10mm incendiary ammo, designed to ignite targets at the cost of initial damage." icon_state = "10mmbox-incendiary" - ammo_type = /obj/item/ammo_casing/c10mm/fire + ammo_type = /obj/item/ammo_casing/c10mm/inc /obj/item/ammo_box/c45 name = "ammo box (.45)" @@ -220,7 +276,7 @@ name = "ammo box (.45 rubbershot)" desc = "A box of .45 rubbershot ammo, designed to disable targets without causing serious damage." icon_state = "45box-rubbershot" - ammo_type = /obj/item/ammo_casing/c45/rubbershot + ammo_type = /obj/item/ammo_casing/c45/rubber /obj/item/ammo_box/c45/ap name = "ammo box (.45 armor-piercing)" @@ -238,7 +294,7 @@ name = "ammo box (.45 incendiary)" desc = "A box of .45 incendiary ammo, designed to ignite targets at the cost of initial damage." icon_state = "45box-incendiary" - ammo_type = /obj/item/ammo_casing/c45/fire + ammo_type = /obj/item/ammo_casing/c45/inc /obj/item/ammo_box/c556mmHITP name = "ammo box (5.56mm HITP caseless)" @@ -279,29 +335,11 @@ multiple_sprites = AMMO_BOX_PER_BULLET w_class = WEIGHT_CLASS_NORMAL -/obj/item/ammo_box/a762 - name = "stripper clip (7.62x54mmR)" - desc = "A stripper clip of rimmed rifle cartridges." - icon_state = "762" - ammo_type = /obj/item/ammo_casing/a762 - max_ammo = 5 - multiple_sprites = AMMO_BOX_PER_BULLET - w_class = WEIGHT_CLASS_TINY - instant_load = TRUE - -/obj/item/ammo_box/a858 - name = "stripper clip (8x58mm)" - desc = "A rifle-cartrige stripper clip for the SSG-669C." - icon_state = "762" - ammo_type = /obj/item/ammo_casing/caseless/a858 - max_ammo = 5 - multiple_sprites = AMMO_BOX_PER_BULLET - /obj/item/ammo_box/n762 name = "ammo box (7.62x38mmR)" icon_state = "n762box" desc = "A box of unusual revolver ammunition with the bullet seated below the mouth of the cartridge." - ammo_type = /obj/item/ammo_casing/n762 + ammo_type = /obj/item/ammo_casing/n762_38 max_ammo = 28 /obj/item/ammo_box/a762_39 @@ -328,21 +366,3 @@ icon_state = "foambox_riot" ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot custom_materials = list(/datum/material/iron = 50000) - -/obj/item/ammo_box/magazine/zip_ammo_9mm - name = "budget pistol magazine(9mm)" - desc = "A cheaply-made, poorly-designed pistol magazine that can only hold 4 rounds." - icon_state = "ZipAmmo9mm" - ammo_type = /obj/item/ammo_casing/c9mm/surplus - caliber = "9mm" - max_ammo = 4 - custom_materials = list(/datum/material/iron = 20000) - -/obj/item/ammo_box/amagpellet_claris - name = "claris speed loader (ferromagnetic pellet)" - desc = "Designed to quickly reload the claris." - icon_state = "claris-sl" - ammo_type = /obj/item/ammo_casing/caseless/gauss - max_ammo = 22 - multiple_sprites = AMMO_BOX_FULL_EMPTY - item_flags = NO_MAT_REDEMPTION diff --git a/code/modules/projectiles/boxes_magazines/external/gauss.dm b/code/modules/projectiles/boxes_magazines/external/gauss.dm index 1d5800e75bbd..ca497d6560cb 100644 --- a/code/modules/projectiles/boxes_magazines/external/gauss.dm +++ b/code/modules/projectiles/boxes_magazines/external/gauss.dm @@ -1,5 +1,6 @@ /obj/item/ammo_box/magazine/gauss name = "gauss magazine (ferromagnetic pellets)" + desc = "A 24-round magazine for the prototype gauss rifle. Ferromagnetic pellets do okay damage with significant armor penetration." icon_state = "mediummagmag" ammo_type = /obj/item/ammo_casing/caseless/gauss caliber = "pellet" @@ -7,7 +8,8 @@ multiple_sprites = AMMO_BOX_FULL_EMPTY /obj/item/ammo_box/magazine/modelh - name = "model-h magazine (ferromagnetic slugs)" + name = "Model H magazine (ferromagnetic slugs)" + desc = "A 10-round magazine for the Model H pistol. Ferromagnetic slugs are slow, but do incredible damage with significant armor penetration." icon_state = "smallmagmag" ammo_type = /obj/item/ammo_casing/caseless/gauss/slug caliber = "slug" @@ -15,7 +17,8 @@ multiple_sprites = AMMO_BOX_FULL_EMPTY /obj/item/ammo_box/magazine/gar - name = "gar tube magazine (ferromagnetic lances)" + name = "GAR tube magazine (ferromagnetic lances)" + desc = "A 32-round magazined for the GAR assault rifle. Ferromagnetic lances do good damage with significant armor penetration." icon_state = "gar-mag" ammo_type = /obj/item/ammo_casing/caseless/gauss/lance caliber = "lance" diff --git a/code/modules/projectiles/boxes_magazines/external/grenade.dm b/code/modules/projectiles/boxes_magazines/external/grenade.dm index 315ed8a259a5..8c3ee5743b58 100644 --- a/code/modules/projectiles/boxes_magazines/external/grenade.dm +++ b/code/modules/projectiles/boxes_magazines/external/grenade.dm @@ -1,5 +1,6 @@ /obj/item/ammo_box/magazine/m75 name = "specialized magazine (.75)" + desc = "An 8-round specialized magazine for the gyrojet pistol. .75 rounds explode on impact." icon_state = "75" ammo_type = /obj/item/ammo_casing/caseless/a75 caliber = "75" diff --git a/code/modules/projectiles/boxes_magazines/external/lmg.dm b/code/modules/projectiles/boxes_magazines/external/lmg.dm index f49c58aeb8e9..192a9f723857 100644 --- a/code/modules/projectiles/boxes_magazines/external/lmg.dm +++ b/code/modules/projectiles/boxes_magazines/external/lmg.dm @@ -1,5 +1,6 @@ /obj/item/ammo_box/magazine/mm712x82 name = "box magazine (7.12x82mm)" + desc = "A 50-round box magazine for the L6 SAW machine gun. These rounds do moderate damage with significant armor penetration." icon_state = "a762-50" base_icon_state = "a762" ammo_type = /obj/item/ammo_casing/mm712x82 @@ -9,18 +10,22 @@ /obj/item/ammo_box/magazine/mm712x82/hollow name = "box magazine (7.12x82mm HP)" - ammo_type = /obj/item/ammo_casing/mm712x82/hollow + desc = "A 50-round box magazine for the L6 SAW machine gun. These hollow point rounds do incredible damage against soft targets, but struggle against armored ones." + ammo_type = /obj/item/ammo_casing/mm712x82/hp /obj/item/ammo_box/magazine/mm712x82/ap name = "box magazine (7.12x82mm AP)" + desc = "A 50-round box magazine for the L6 SAW machine gun. These armor-piercing rounds are nearly perfect at piercing protective equipment." ammo_type = /obj/item/ammo_casing/mm712x82/ap -/obj/item/ammo_box/magazine/mm712x82/incen - name = "box magazine (7.12x82mm Incendiary)" - ammo_type = /obj/item/ammo_casing/mm712x82/incen +/obj/item/ammo_box/magazine/mm712x82/inc + name = "box magazine (7.12x82mm incendiary)" + desc = "A 50-round box magazine for the L6 SAW machine gun. These incendiary rounds deal mediocre damage, but leave flaming trails which set targets ablaze." + ammo_type = /obj/item/ammo_casing/mm712x82/inc /obj/item/ammo_box/magazine/mm712x82/match - name = "box magazine (7.12x82mm Match)" + name = "box magazine (7.12x82mm match)" + desc = "A 50-round box magazine for the L6 SAW machine gun. These match rounds travel quicker with incredible armor penetration. Can also ricochet off targets." ammo_type = /obj/item/ammo_casing/mm712x82/match /obj/item/ammo_box/magazine/mm712x82/update_icon_state() diff --git a/code/modules/projectiles/boxes_magazines/external/pistol.dm b/code/modules/projectiles/boxes_magazines/external/pistol.dm index 44dc2b3d24d7..ca4702b641d7 100644 --- a/code/modules/projectiles/boxes_magazines/external/pistol.dm +++ b/code/modules/projectiles/boxes_magazines/external/pistol.dm @@ -1,64 +1,64 @@ /obj/item/ammo_box/magazine/m10mm name = "pistol magazine (10mm)" - desc = "A single-stack handgun magazine designed to chamber 10mm." + desc = "An 8-round single-stack magazine for the stechkin pistol. These rounds do moderate damage, but struggle against armor." icon_state = "9x19p" ammo_type = /obj/item/ammo_casing/c10mm caliber = "10mm" max_ammo = 8 multiple_sprites = AMMO_BOX_FULL_EMPTY -/obj/item/ammo_box/magazine/m10mm/fire +/obj/item/ammo_box/magazine/m10mm/inc name = "pistol magazine (10mm incendiary)" + desc = "An 8-round single-stack magazine for the stechkin pistol. These incendiary rounds deal mediocre damage, but leave flaming trails which set targets ablaze." icon_state = "9x19pI" - desc = "A single-stack handgun magazine designed to chamber 10mm. Loaded with rounds which ignite the target." - ammo_type = /obj/item/ammo_casing/c10mm/fire + ammo_type = /obj/item/ammo_casing/c10mm/inc /obj/item/ammo_box/magazine/m10mm/hp name = "pistol magazine (10mm HP)" + desc = "An 8-round single-stack magazine for the stechkin pistol. These hollow point rounds do incredible damage against soft targets, but are nearly ineffective against armored ones." icon_state = "9x19pH" - desc= "A single-stack handgun magazine designed to chamber 10mm. Loaded with rounds which deal more damage, but are completely ineffective against armor." ammo_type = /obj/item/ammo_casing/c10mm/hp /obj/item/ammo_box/magazine/m10mm/ap name = "pistol magazine (10mm AP)" + desc = "An 8-round single-stack magazine for the stechkin pistol. These armor-piercing rounds are okay at piercing protective equipment, but lose some stopping power." icon_state = "9x19pA" - desc= "A single-stack handgun magazine designed to chamber 10mm. 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/m10mm/rubbershot - name = "pistol magazine (10mm rubbershot)" +/obj/item/ammo_box/magazine/m10mm/rubber + name = "pistol magazine (10mm rubber)" + desc = "An 8-round handgun magazine for the stechkin pistol. These rubber rounds trade lethality for a heavy impact which can incapacitate targets. Performs even worse against armor." icon_state = "9x19pR" - desc = "A single-stack handgun magazine designed to chamber 10mm. Loaded with less-lethal rubber rounds which disable targets without causing serious damage." - ammo_type = /obj/item/ammo_casing/c10mm/rubbershot + ammo_type = /obj/item/ammo_casing/c10mm/rubber /obj/item/ammo_box/magazine/m45 name = "pistol magazine (.45)" - desc = "A single stack M1911 reproduction magazine, faithfully designed to chamber .45." + desc = "An 8-round single-stack magazine for the M1911 pistol. These rounds do moderate damage, but struggle against armor." icon_state = "45-8" base_icon_state = "45" ammo_type = /obj/item/ammo_casing/c45 caliber = ".45" max_ammo = 8 -/obj/item/ammo_box/magazine/m45/fire +/obj/item/ammo_box/magazine/m45/inc name = "pistol magazine (.45 incendiary)" - desc = "A single stack M1911 reproduction magazine, faithfully designed to chamber .45. Loaded with rounds which ignite the target." - ammo_type = /obj/item/ammo_casing/c45/fire + desc = "An 8-round single-stack magazine for the M1911 pistol. These incendiary rounds deal mediocre damage, but leave flaming trails which set targets ablaze." + ammo_type = /obj/item/ammo_casing/c45/inc /obj/item/ammo_box/magazine/m45/hp name = "pistol magazine (.45 HP)" - desc= "A single stack M1911 reproduction magazine, faithfully designed to chamber .45. Loaded with rounds which deal more damage, but are completely ineffective against armor." + desc= "An 8-round single-stack magazine for the M1911 pistol. These hollow point rounds do incredible damage against soft targets, but are nearly ineffective against armored ones." ammo_type = /obj/item/ammo_casing/c45/hp /obj/item/ammo_box/magazine/m45/ap name = "pistol magazine (.45 AP)" - desc= "A single stack M1911 reproduction magazine, faithfully designed to chamber .45. Loaded with rounds which penetrate armour, but are less effective against normal targets." + desc= "An 8-round single-stack magazine for the M1911 pistol. These armor-piercing rounds are okay at piercing protective equipment, but lose some stopping power." ammo_type = /obj/item/ammo_casing/c45/ap -/obj/item/ammo_box/magazine/m45/rubbershot - name = "pistol magazine (.45 rubbershot)" - desc = "A single stack M1911 reproduction magazine, faithfully designed to chamber .45. Loaded with less-lethal rubber rounds which disable targets without causing serious damage." - ammo_type = /obj/item/ammo_casing/c45/rubbershot +/obj/item/ammo_box/magazine/m45/rubber + name = "pistol magazine (.45 rubber)" + desc = "An 8-round single-stack magazine for the M1911 pistol. These rubber rounds trade lethality for a heavy impact which can incapacitate targets. Performs even worse against armor." + ammo_type = /obj/item/ammo_casing/c45/rubber /obj/item/ammo_box/magazine/m45/update_icon_state() . = ..() @@ -66,32 +66,32 @@ /obj/item/ammo_box/magazine/co9mm name = "pistol magazine (9mm)" - desc = "A double-stack pistol magazine designed to chamber 9mm." + desc = "A 10-round double-stack magazine for standard-issue 9mm pistols. These rounds do okay damage, but struggle against armor." icon_state = "co9mm-8" base_icon_state = "co9mm" ammo_type = /obj/item/ammo_casing/c9mm caliber = "9mm" max_ammo = 10 -/obj/item/ammo_box/magazine/co9mm/fire +/obj/item/ammo_box/magazine/co9mm/inc name = "pistol magazine (9mm incendiary)" - desc = "A double-stack pistol magazine designed to chamber 9mm. Loaded with rounds which ignite the target." + desc = "A 10-round double-stack magazine for standard-issue 9mm pistols. These incendiary rounds deal pitiful damage, but leave flaming trails which set targets ablaze." ammo_type = /obj/item/ammo_casing/c9mm/inc /obj/item/ammo_box/magazine/co9mm/hp name = "pistol magazine (9mm HP)" - desc= "A double-stack pistol magazine designed to chamber 9mm. Loaded with rounds which deal more damage, but are completely ineffective against armor." + desc= "A 10-round double-stack magazine for standard-issue 9mm pistols. These hollow point rounds do significant damage against soft targets, but are nearly ineffective against armored ones." ammo_type = /obj/item/ammo_casing/c9mm/hp /obj/item/ammo_box/magazine/co9mm/ap name = "pistol magazine (9mm AP)" - desc= "A double-stack pistol magazine designed to chamber 9mm. Loaded with rounds which penetrate armour, but are less effective against normal targets." + desc= "A 10-round double-stack magazine for standard-issue 9mm pistols. These armor-piercing rounds are okay at piercing protective equipment, but lose some stopping power." ammo_type = /obj/item/ammo_casing/c9mm/ap -/obj/item/ammo_box/magazine/co9mm/rubbershot - name = "pistol magazine (9mm rubbershot)" - desc = "A double-stack pistol magazine designed to chamber 9mm. Loaded with less-lethal rubber rounds which disable targets without causing serious damage." - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot +/obj/item/ammo_box/magazine/co9mm/rubber + name = "pistol magazine (9mm rubber)" + desc = "A 10-round double-stack magazine for standard-issue 9mm pistols. These rubber rounds trade lethality for a heavy impact which can incapacitate targets. Performs even worse against armor." + ammo_type = /obj/item/ammo_casing/c9mm/rubber /obj/item/ammo_box/magazine/co9mm/update_icon_state() . = ..() @@ -99,7 +99,7 @@ /obj/item/ammo_box/magazine/pistolm9mm name = "large pistol magazine (9mm)" - desc = "An extended double stack pistol magazine, designed to chamber 9mm." + desc = "A long, 15-round double-stack magazine designed for the stechkin APS pistol. These rounds do okay damage, but struggle against armor." icon_state = "9x19p-8" base_icon_state = "9x19p" ammo_type = /obj/item/ammo_casing/c9mm @@ -112,7 +112,7 @@ /obj/item/ammo_box/magazine/m50 name = "handgun magazine (.50 AE)" - desc = "An oversized handgun magazine designed to chamber .50 AE." + desc = "An oversized, 7-round handgun magazine for the Desert Eagle handgun. These rounds do significant damage with average performance against armor." icon_state = "50ae" ammo_type = /obj/item/ammo_casing/a50AE caliber = ".50 AE" @@ -127,3 +127,12 @@ caliber = ".38" max_ammo = 3 w_class = WEIGHT_CLASS_TINY + +/obj/item/ammo_box/magazine/zip_ammo_9mm + name = "budget pistol magazine (9mm)" + desc = "A cheaply-made, 4-round surplus magazine that fits standard-issue 9mm pistols. These rounds do okay damage, but struggle against armor." + icon_state = "ZipAmmo9mm" + ammo_type = /obj/item/ammo_casing/c9mm/surplus + caliber = "9mm" + max_ammo = 4 + custom_materials = list(/datum/material/iron = 20000) diff --git a/code/modules/projectiles/boxes_magazines/external/rechargable.dm b/code/modules/projectiles/boxes_magazines/external/rechargable.dm index 5a4af7929cff..f5cb7e7ee9a2 100644 --- a/code/modules/projectiles/boxes_magazines/external/rechargable.dm +++ b/code/modules/projectiles/boxes_magazines/external/rechargable.dm @@ -1,6 +1,6 @@ /obj/item/ammo_box/magazine/recharge name = "power pack" - desc = "A rechargeable, detachable battery that serves as a magazine for laser rifles." + desc = "A detachable, rechargeable battery for the laser rifle. Grants 20 shots at full charge." icon_state = "oldrifle-20" base_icon_state = "oldrifle" ammo_type = /obj/item/ammo_casing/caseless/laser diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm index 1e184405effa..86fef186652b 100644 --- a/code/modules/projectiles/boxes_magazines/external/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm @@ -1,6 +1,6 @@ /obj/item/ammo_box/magazine/m10mm/rifle name = "rifle magazine (10mm)" - desc = "A well-worn magazine fitted for surplus rifles, designed to chamber 10mm." + desc = "A well-worn, 10-round magazine for the surplus rifle. These rounds do moderate damage, but struggle against armor." icon_state = "75-8" base_icon_state = "75" ammo_type = /obj/item/ammo_casing/c10mm @@ -13,16 +13,16 @@ /obj/item/ammo_box/magazine/m556 name = "toploader magazine (5.56x45mm)" - desc = "An advanced top-loading assault rifle magazine, designed to chamber 5.56x45mm." + desc = "An advanced, 30-round toploading magazine for the M-90gl Carbine. These rounds do moderate damage with good armor penetration." icon_state = "5.56m" - ammo_type = /obj/item/ammo_casing/a556 + ammo_type = /obj/item/ammo_casing/a556_39 caliber = "5.56x45mm" max_ammo = 30 multiple_sprites = AMMO_BOX_FULL_EMPTY /obj/item/ammo_box/magazine/rifle47x33mm - name = "\improper SolGov AR magazine (4.73x33mm caseless)" - desc = "A rather large magazine designed to chamber 4.73x33mm caseless." + name = "\improper Solarian LMG magazine (4.73x33mm caseless)" + desc = "A large, 50-round magazine for the Solar machine gun. These rounds do moderate damage with good armor penetration." icon_state = "47x33mm-50" base_icon_state = "47x33mm" ammo_type = /obj/item/ammo_casing/caseless/c47x33mm @@ -35,8 +35,8 @@ icon_state = "[base_icon_state]-[round(ammo_count(),5)]" /obj/item/ammo_box/magazine/aks74u - name = "\improper assault rifle Magazine (5.45x39mm)" - desc = "A slightly curved assault rifle magazine designed to chamber 5.45x39mm." + name = "assault rifle magazine (5.45x39mm)" + desc = "A slightly-curved, 30-round magazine for the AKS-74U. These rounds do moderate damage with good armor penetration." icon_state = "ak47_mag" ammo_type = /obj/item/ammo_casing/a545_39 caliber = "5.45x39mm" @@ -47,8 +47,8 @@ icon_state = "ak47_mag-[!!ammo_count()]" /obj/item/ammo_box/magazine/aknt - name = "\improper subcaliber assault rifle magazine (4.6x30mm))" - desc = "A cheap polymer assault rifle magazine designed to chamber 4.6x30mm." + name = "subcaliber assault rifle magazine (4.6x30mm)" + desc = "A cheap, 30-round polymer magazine for the NT-SVG. These rounds do okay damage with average performance against armor." icon_state = "ak47_mag" ammo_type = /obj/item/ammo_casing/c46x30mm caliber = "4.6x30mm" @@ -59,8 +59,8 @@ icon_state = "ak47_mag-[!!ammo_count()]" /obj/item/ammo_box/magazine/ak47 - name = "\improper assault rifle magazine (7.62x39mm)" - desc = "A sharply curved assault rifle magazine, designed to chamber 7.62x39mm." + name = "assault rifle magazine (7.62x39mm)" + desc = "A sharply-curved, 20-round magazine for 7.62x39mm assault rifles. These rounds do good damage with good armor penetration." icon_state = "ak47_mag" ammo_type = /obj/item/ammo_casing/a762_39 caliber = "7.62x39mm" @@ -71,8 +71,8 @@ icon_state = "ak47_mag-[!!ammo_count()]" /obj/item/ammo_box/magazine/ebr - name = "\improper battle rifle magazine (.308 Winchester)" - desc = "A small steel battle rifle magazine designed to chamber .308 Winchester." + name = "battle rifle magazine (.308 Winchester)" + desc = "A small, 10-round steel magazine for the M514 EBR. These rounds do good damage with significant armor penetration." icon_state = "ebr_mag" ammo_type = /obj/item/ammo_casing/win308 caliber = ".308 Winchester" @@ -83,7 +83,8 @@ icon_state = "ebr_mag-[!!ammo_count()]" /obj/item/ammo_box/magazine/gal - name = "\improper CM-GAL Magazine (.308)" + name = "\improper GAL Magazine (.308 Winchester)" + desc = "A standard 10-round magazine for GAL platform DMRs. These rounds do good damage with significant armor penetration." icon_state = "ebr_mag" ammo_type = /obj/item/ammo_casing/win308 caliber = ".308 Winchester" @@ -94,10 +95,10 @@ icon_state = "galmag-[!!ammo_count()]" /obj/item/ammo_box/magazine/p16 - name = "\improper assault rifle magazine (5.56x45mm)" - desc = "A simple assault rifle magazine designed to chamber 5.56x45mm." + name = "assault rifle magazine (5.56x45mm)" + desc = "A simple, 30-round magazine for 5.56x45mm assault rifles. These rounds do moderate damage with good armor penetration." icon_state = "p16_mag" - ammo_type = /obj/item/ammo_casing/a556 + ammo_type = /obj/item/ammo_casing/a556_39 caliber = "5.56x45mm" max_ammo = 30 @@ -106,23 +107,13 @@ icon_state = "p16_mag-[!!ammo_count()]" /obj/item/ammo_box/magazine/swiss - name = "\improper Swiss Cheese Magazine (5.56mm)" + name = "\improper Swiss Cheese Magazine (5.56x45mm)" + desc = "A deft, 30-round magazine for the Swiss Cheese assault rifle. These rounds do moderate damage with good armor penetration." icon_state = "swissmag" - ammo_type = /obj/item/ammo_casing/a556 - caliber = "a556" + ammo_type = /obj/item/ammo_casing/a556_39 + caliber = "5.56x45mm" max_ammo = 30 /obj/item/ammo_box/magazine/swiss/update_icon_state() . = ..() icon_state = "swissmag-[!!ammo_count()]" - -/obj/item/ammo_box/aac_300blk_stripper - name = "stripper clip (.300 BLK)" - desc = "A stripper clip fitted for .300 Blackout." - icon_state = "762" - ammo_type = /obj/item/ammo_casing/aac_300blk - caliber = ".300 BLK" - max_ammo = 5 - multiple_sprites = AMMO_BOX_PER_BULLET - w_class = WEIGHT_CLASS_TINY - instant_load = TRUE diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index 9bf2073fa443..587718e5caad 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -1,7 +1,7 @@ /obj/item/ammo_box/magazine/wt550m9 name = "wt550 magazine (4.6x30mm)" - desc = "A compact top-loading PDW magazine, designed to chamber 4.6x30mm." - icon_state = "46x30mmt-20" + desc = "A compact, 30-round top-loading magazine for the WT-550 Automatic Rifle. These rounds do okay damage with average performance against armor." + icon_state = "46x30mmt-30" base_icon_state = "46x30mmt" ammo_type = /obj/item/ammo_casing/c46x30mm caliber = "4.6x30mm" @@ -9,30 +9,25 @@ /obj/item/ammo_box/magazine/wt550m9/update_icon_state() . = ..() - icon_state = "[base_icon_state]-[round(ammo_count(), 4)]" + icon_state = "[base_icon_state]-[round(ammo_count(), 6)]" -/obj/item/ammo_box/magazine/wt550m9/wtap - name = "wt550 magazine (Armour Piercing 4.6x30mm)" - icon_state = "46x30mmtA-20" +/obj/item/ammo_box/magazine/wt550m9/ap + name = "wt550 magazine (4.6x30mm AP)" + desc = "A compact, 30-round top-loading magazine for the WT-550 Automatic Rifle. These armor-piercing rounds are great at piercing protective equipment, but lose some stopping power." + icon_state = "46x30mmtA-30" base_icon_state = "46x30mmtA" ammo_type = /obj/item/ammo_casing/c46x30mm/ap -/obj/item/ammo_box/magazine/wt550m9/wtap/update_icon_state() - . = ..() - icon_state = "[base_icon_state]-[round(ammo_count(), 4)]" - -/obj/item/ammo_box/magazine/wt550m9/wtic - name = "wt550 magazine (Incendiary 4.6x30mm)" - icon_state = "46x30mmtI-20" +/obj/item/ammo_box/magazine/wt550m9/inc + name = "wt550 magazine (4.6x30mm incendiary)" + desc = "A compact, 30-round top-loading magazine for the WT-550 Automatic Rifle. These incendiary rounds deal pitiful damage, but leave flaming trails which set targets ablaze." + icon_state = "46x30mmtI-30" + base_icon_state = "46x30mmtI" ammo_type = /obj/item/ammo_casing/c46x30mm/inc -/obj/item/ammo_box/magazine/wt550m9/wtic/update_icon_state() - . = ..() - icon_state = "[base_icon_state]-[round(ammo_count(),4)]" - /obj/item/ammo_box/magazine/uzim9mm name = "long SMG magazine (9mm)" - desc = "A long submachine gun magazine, designed to chamber 9mm." + desc = "A thin, 32-round magazine for the Uzi SMG. These rounds do okay damage, but struggle against armor." icon_state = "uzi9mm-32" base_icon_state = "uzi9mm" ammo_type = /obj/item/ammo_casing/c9mm @@ -45,7 +40,7 @@ /obj/item/ammo_box/magazine/smgm9mm name = "SMG magazine (9mm)" - desc = "A submachine gun magazine, designed to chamber 9mm." + desc = "A 30-round magazine for 9mm submachine guns. These rounds do okay damage, but struggle against armor." icon_state = "smg9mm-42" base_icon_state = "smg9mm" ammo_type = /obj/item/ammo_casing/c9mm @@ -57,19 +52,23 @@ icon_state = "[base_icon_state]-[ammo_count() ? 42 : 0]" /obj/item/ammo_box/magazine/smgm9mm/ap - name = "SMG magazine (Armour Piercing 9mm)" + name = "SMG magazine (9mm AP)" + desc = "A 30-round magazine for 9mm submachine guns. These armor-piercing rounds are okay at piercing protective equipment, but lose some stopping power." ammo_type = /obj/item/ammo_casing/c9mm/ap -/obj/item/ammo_box/magazine/smgm9mm/fire - name = "SMG Magazine (Incendiary 9mm)" +/obj/item/ammo_box/magazine/smgm9mm/inc + name = "SMG Magazine (9mm incendiary)" + desc = "A 30-round magazine for 9mm submachine guns. These incendiary rounds deal pitiful damage, but leave flaming trails which set targets ablaze." ammo_type = /obj/item/ammo_casing/c9mm/inc -/obj/item/ammo_box/magazine/smgm9mm/rubbershot - name = "SMG Magazine (Rubbershot 9mm)" - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot +/obj/item/ammo_box/magazine/smgm9mm/rubber + name = "SMG Magazine (9mm rubber)" + desc = "A 30-round magazine for 9mm submachine guns. These rubber rounds trade lethality for a heavy impact which can incapacitate targets. Performs even worse against armor." + ammo_type = /obj/item/ammo_casing/c9mm/rubber /obj/item/ammo_box/magazine/smgm10mm name = "SMG magazine (10mm)" + desc = "A 24-round magazine for the SkM-44(k). These rounds do moderate damage, but struggle against armor." icon_state = "smg10mm-24" base_icon_state = "smg10mm" ammo_type = /obj/item/ammo_casing/c10mm @@ -80,13 +79,14 @@ . = ..() icon_state = "[base_icon_state]-[ammo_count() == 1 ? 1 : round(ammo_count(),3)]" -/obj/item/ammo_box/magazine/smgm10mm/rubbershot - name = "SMG magazine (Rubbershot 10mm)" - ammo_type = /obj/item/ammo_casing/c10mm/rubbershot +/obj/item/ammo_box/magazine/smgm10mm/rubber + name = "SMG magazine (10mm rubber)" + desc = "A 24-round magazine for the SkM-44(k). These rubber rounds trade lethality for a heavy impact which can incapacitate targets. Performs even worse against armor." + ammo_type = /obj/item/ammo_casing/c10mm/rubber /obj/item/ammo_box/magazine/smgm45 name = "SMG magazine (.45)" - desc = "A bullpup submachine gun magazine, designed to chamber .45." + desc = "A 24-round magazine for .45 submachine guns. These rounds do moderate damage, but struggle against armor." icon_state = "c20r45-24" base_icon_state = "c20r45" ammo_type = /obj/item/ammo_casing/c45 @@ -99,7 +99,7 @@ /obj/item/ammo_box/magazine/smgm45/drum name = "drum magazine (.45)" - desc = "A bulky drum magazine for submachine guns, designed to chamber .45." + desc = "A bulky, 50-round drum magazine for .45 submachine guns. These rounds do moderate damage, but struggle against armor." icon_state = "drum45" max_ammo = 50 w_class = WEIGHT_CLASS_NORMAL @@ -110,7 +110,7 @@ /obj/item/ammo_box/magazine/pistol556mm name = "handgun magazine (5.56mm HITP caseless)" - desc = "A double-stack handgun magazine designed to chamber 5.56mm HITP caseless." + desc = "A 12-round, double-stack magazine for the Pistole C pistol. These rounds do okay damage with average performance against armor." icon_state = "5.56mmHITP-12" //ok i did it base_icon_state = "5.56mmHITP" ammo_type = /obj/item/ammo_casing/caseless/c556mm @@ -122,8 +122,8 @@ icon_state = "[base_icon_state]-[round(ammo_count(),2)]" /obj/item/ammo_box/magazine/tec9 - name = "machine pistol magazine(9mm AP)" - desc = "A very high capacity machine pistol magazine, designed to chamber 9mm." + name = "machine pistol magazine (9mm AP)" + desc = "A sizable 20-round magazine for the TEC-9 machine pistol. These armor-piercing rounds are okay at piercing protective equipment, but lose some stopping power.." icon_state = "tec_mag" ammo_type = /obj/item/ammo_casing/c9mm/ap caliber = "9mm" diff --git a/code/modules/projectiles/boxes_magazines/external/sniper.dm b/code/modules/projectiles/boxes_magazines/external/sniper.dm index 348ff6436a1c..25894102905f 100644 --- a/code/modules/projectiles/boxes_magazines/external/sniper.dm +++ b/code/modules/projectiles/boxes_magazines/external/sniper.dm @@ -1,8 +1,8 @@ /obj/item/ammo_box/magazine/sniper_rounds - name = "anti-materiel rifle magazine (.50)" + name = "anti-material rifle magazine (.50 BMG)" + desc = "A large, heavy 6-round box magazine designed for the sniper rifle. These rounds deal absurd damage, able to delimb targets, knock them on their feet, and bypass most protective equipment." icon_state = ".50mag" base_icon_state = ".50mag" - desc = "A large, heavy box magazine designed to chamber massive .50 BMG rounds." ammo_type = /obj/item/ammo_casing/p50 max_ammo = 6 caliber = ".50 BMG" @@ -13,14 +13,15 @@ icon_state = "[base_icon_state][ammo_count() ? "-ammo" : ""]" /obj/item/ammo_box/magazine/sniper_rounds/soporific - name = "anti-materiel rifle magazine (Zzzzz)" - desc = "A lower-capacity anti-materiel rifle magazine designed for specialized, soporific .50 BMG rounds." + name = "anti-material rifle magazine (.50 BMG soporific)" + desc = "A large, heavy 3-round box magazine designed for the sniper rifle. These soporific rounds are completely non-lethal, but render targets asleep for a little under a minute." icon_state = "soporific" ammo_type = /obj/item/ammo_casing/p50/soporific max_ammo = 3 /obj/item/ammo_box/magazine/sniper_rounds/penetrator - name = "anti-materiel rifle magazine (penetrator)" - desc = "A box magazine loaded with armor-piercing .50 BMG rounds powerful enough to punch through multiple targets and structures." + name = "anti-material rifle magazine (.50 BMG penetrator)" + desc = "A large, heavy 5-round box magazine designed for the sniper rifle. These penetrator rounds deal incredible damage and will penetrate most structures, though they don't knock down or delimb targets." + icon_state = "haemorrhage" ammo_type = /obj/item/ammo_casing/p50/penetrator max_ammo = 5 diff --git a/code/modules/projectiles/boxes_magazines/internal/revolver.dm b/code/modules/projectiles/boxes_magazines/internal/revolver.dm index 737a77cc2dc7..13b007e229e0 100644 --- a/code/modules/projectiles/boxes_magazines/internal/revolver.dm +++ b/code/modules/projectiles/boxes_magazines/internal/revolver.dm @@ -7,7 +7,7 @@ /obj/item/ammo_box/magazine/internal/cylinder/rev762 name = "\improper Nagant revolver cylinder" - ammo_type = /obj/item/ammo_casing/n762 + ammo_type = /obj/item/ammo_casing/n762_38 caliber = "7.62x38mmR" max_ammo = 7 instant_load = FALSE diff --git a/code/modules/projectiles/boxes_magazines/internal/rifle.dm b/code/modules/projectiles/boxes_magazines/internal/rifle.dm index 1b9bf492eca8..b85b223c254b 100644 --- a/code/modules/projectiles/boxes_magazines/internal/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/internal/rifle.dm @@ -1,14 +1,14 @@ /obj/item/ammo_box/magazine/internal/boltaction name = "bolt action rifle internal magazine" desc = "Oh god, this shouldn't be here" - ammo_type = /obj/item/ammo_casing/a762 + ammo_type = /obj/item/ammo_casing/a762_54 caliber = "7.62x54mmR" max_ammo = 5 instant_load = TRUE /obj/item/ammo_box/magazine/internal/boltaction/enchanted max_ammo = 1 - ammo_type = /obj/item/ammo_casing/a762 + ammo_type = /obj/item/ammo_casing/a762_54 /obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage ammo_type = /obj/item/ammo_casing/magic/arcane_barrage diff --git a/code/modules/projectiles/guns/ballistic/assault.dm b/code/modules/projectiles/guns/ballistic/assault.dm index fff17d1b8e07..7ec610bbc33c 100644 --- a/code/modules/projectiles/guns/ballistic/assault.dm +++ b/code/modules/projectiles/guns/ballistic/assault.dm @@ -1,10 +1,10 @@ -/obj/item/gun/ballistic/automatic/assualt +/obj/item/gun/ballistic/automatic/assault burst_size = 1 actions_types = list() -/obj/item/gun/ballistic/automatic/assualt/ak47 +/obj/item/gun/ballistic/automatic/assault/ak47 name = "\improper SVG-67" - desc = "A frontier-built assault rifle descended from a pattern of unknown provenance. Its low cost and ease of maintenance make it a popular choice among a wide variety of outlaws." + desc = "A Frontier-built assault rifle descended from a pattern of unknown provenance. Its low cost, ease of maintenance, and powerful 7.62x39mm cartridge make it a popular choice among a wide variety of outlaws." icon = 'icons/obj/guns/48x32guns.dmi' fire_sound = 'sound/weapons/gun/rifle/ak47.ogg' icon_state = "ak47" @@ -15,20 +15,17 @@ slot_flags = ITEM_SLOT_BACK mag_type = /obj/item/ammo_box/magazine/ak47 -/obj/item/gun/ballistic/automatic/assualt/ak47/ComponentInitialize() +/obj/item/gun/ballistic/automatic/assault/ak47/ComponentInitialize() . = ..() AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) -/obj/item/gun/ballistic/automatic/assualt/ak47/nt +/obj/item/gun/ballistic/automatic/assault/ak47/nt name = "\improper NT-SVG" - desc = "An even cheaper version of the already-cheap SVG-67, rechambered for the lightweight 4.6x30mm PDW cartridge. The flimsy folding stock and light construction make for a highly portable rifle lacking in accuracy and stopping power." + desc = "An even cheaper version of the SVG-67, rechambered for the lightweight 4.6x30mm PDW cartridge. The flimsy folding stock and light construction make for a highly-portable rifle that lacks accuracy and power." icon = 'icons/obj/guns/48x32guns.dmi' fire_sound = 'sound/weapons/gun/rifle/shot.ogg' icon_state = "ak47_nt" item_state = "ak47_nt" - mag_display = TRUE - weapon_weight = WEAPON_MEDIUM - w_class = WEIGHT_CLASS_BULKY mag_type = /obj/item/ammo_box/magazine/aknt var/folded = FALSE var/unfolded_spread = 2 @@ -36,7 +33,7 @@ var/folded_spread = 20 var/folded_item_state = "ak47_nt_stockless" -/obj/item/gun/ballistic/automatic/assualt/ak47/nt/CtrlClick(mob/user) +/obj/item/gun/ballistic/automatic/assault/ak47/nt/CtrlClick(mob/user) . = ..() if((!ishuman(user) || user.stat)) return @@ -47,7 +44,7 @@ user.update_inv_hands() user.update_inv_s_store() -/obj/item/gun/ballistic/automatic/assualt/ak47/nt/proc/fold(mob/user) +/obj/item/gun/ballistic/automatic/assault/ak47/nt/proc/fold(mob/user) if(folded) to_chat(user, "You unfold the stock on the [src].") spread = unfolded_spread @@ -63,7 +60,7 @@ playsound(src.loc, 'sound/weapons/empty.ogg', 100, 1) update_appearance() -/obj/item/gun/ballistic/automatic/assualt/ak47/nt/update_overlays() +/obj/item/gun/ballistic/automatic/assault/ak47/nt/update_overlays() . = ..() var/mutable_appearance/stock if(!folded) @@ -72,58 +69,54 @@ stock = mutable_appearance(icon, null) . += stock -/obj/item/gun/ballistic/automatic/assualt/ak47/inteq +/obj/item/gun/ballistic/automatic/assault/ak47/inteq name = "\improper SkM-24" - desc = "An obsolete assault rifle seized from some frontier armory and extensively modified to IRMG standards. Chambered in 7.62x39mm." + desc = "An antique assault rifle seized from Frontiersmen armories then extensively modified to IRMG standards. Chambered in 7.62x39mm." icon = 'icons/obj/guns/48x32guns.dmi' fire_sound = 'sound/weapons/gun/rifle/akm.ogg' icon_state = "akm" item_state = "akm" - lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' mob_overlay_icon = 'icons/mob/clothing/back.dmi' - mag_display = TRUE -/obj/item/gun/ballistic/automatic/assualt/p16 +/obj/item/gun/ballistic/automatic/assault/p16 name = "\improper P-16" - desc = "A Night of Fire-era assault rifle pattern from Sol, chambered in 5.56mm. Rediscovered by the Colonial Minutemen and now frequently reproduced. A favorite of professional mercenaries and well-heeled pirates." + desc = "An assault rifle pattern from Sol, existing before the Night of Fire. A favorite of professional mercenaries and well-heeled pirates. Chambered in 5.56mm." icon = 'icons/obj/guns/48x32guns.dmi' fire_sound = 'sound/weapons/gun/rifle/m16.ogg' icon_state = "p16" item_state = "p16" mag_display = TRUE - weapon_weight = WEAPON_MEDIUM w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK mag_type = /obj/item/ammo_box/magazine/p16 -/obj/item/gun/ballistic/automatic/assualt/p16/ComponentInitialize() +/obj/item/gun/ballistic/automatic/assault/p16/ComponentInitialize() . = ..() AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) -/obj/item/gun/ballistic/automatic/assualt/p16/minutemen +/obj/item/gun/ballistic/automatic/assault/p16/minutemen name = "\improper CM-16" - desc = "An extensive modification of the P-16, now the standard-issue rifle of the Colonial Minutemen. Chambered in 5.56mm." + desc = "The standard-issue rifle of the Colonial Minutemen and an extensively modified reproduction of the P-16. Chambered in 5.56mm." icon_state = "cm16" item_state = "cm16" -/obj/item/gun/ballistic/automatic/assualt/ar +/obj/item/gun/ballistic/automatic/assault/ar name = "\improper NT-ARG 'Boarder'" desc = "A burst-fire 5.56mm carbine occasionally found in the hands of Nanotrasen marines." fire_sound = 'sound/weapons/gun/rifle/shot_alt2.ogg' icon_state = "arg" item_state = "arg" slot_flags = 0 - mag_type = /obj/item/ammo_box/magazine/m556 + mag_type = /obj/item/ammo_box/magazine/p16 can_suppress = FALSE burst_size = 3 fire_delay = 1 -/obj/item/gun/ballistic/automatic/assualt/ar/ComponentInitialize() +/obj/item/gun/ballistic/automatic/assault/ar/ComponentInitialize() . = ..() AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) -/obj/item/gun/ballistic/automatic/assualt/swiss_cheese +/obj/item/gun/ballistic/automatic/assault/swiss_cheese name = "\improper Swiss Cheese" desc = "An ancient longarm famous for its boxy, modular design. The DMA on this unit is, sadly, broken. Uses 5.56mm ammunition for Matter mode." icon = 'icons/obj/guns/48x32guns.dmi' @@ -141,18 +134,18 @@ mag_type = /obj/item/ammo_box/magazine/swiss actions_types = list(/datum/action/item_action/toggle_firemode) -/obj/item/gun/ballistic/automatic/assualt/swiss_cheese/ComponentInitialize() +/obj/item/gun/ballistic/automatic/assault/swiss_cheese/ComponentInitialize() . = ..() AddComponent(/datum/component/automatic_fire, 0.65 SECONDS) -/obj/item/gun/ballistic/automatic/assualt/swiss_cheese/afterattack(atom/target, mob/living/user, flag, params) +/obj/item/gun/ballistic/automatic/assault/swiss_cheese/afterattack(atom/target, mob/living/user, flag, params) if(select == 2) to_chat(user, "You hear a strange sound from the DMA unit. It doesn't appear to be operational.") return else return ..() -/obj/item/gun/ballistic/automatic/assualt/swiss_cheese/burst_select() +/obj/item/gun/ballistic/automatic/assault/swiss_cheese/burst_select() var/mob/living/carbon/human/user = usr switch(select) if(1) diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 20066b6a7abf..b159376b547b 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -49,7 +49,7 @@ /obj/item/gun/ballistic/automatic/sniper_rifle name = "sniper rifle" - desc = "An anti-materiel rifle chambered in .50 BMG, partnered with an effective optics package that grants it much greater range than most rifles. Its prodigious bulk requires both hands and some time to aim." + desc = "An anti-material rifle chambered in .50 BMG with a scope mounted on it. Its prodigious bulk requires both hands to use." icon_state = "sniper" item_state = "sniper" fire_sound = 'sound/weapons/gun/sniper/shot.ogg' @@ -73,7 +73,7 @@ /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate name = "syndicate sniper rifle" - desc = "A heavily modified .50 caliber anti-materiel rifle capable of accepting a suppressor. Its prodigious bulk requires both hands and some time to aim." + desc = "A heavily-modified .50 BMG anti-material rifle utilized by Syndicate agents. Requires both hands to fire." can_suppress = TRUE can_unsuppress = TRUE pin = /obj/item/firing_pin/implant/pindicate @@ -81,13 +81,13 @@ // Old Semi-Auto Rifle // /obj/item/gun/ballistic/automatic/surplus - name = "Surplus Rifle" - desc = "One of countless cheap, obsolete rifles found throughout the frontier, chambered in 10mm. While bulky and easily defeated by even mild armor, they are effective deterrents against wildlife and are still powerful enough to put up some fight against pirates and other boarders." + name = "surplus rifle" + desc = "One of countless cheap, obsolete rifles found throughout the Frontier. Its lack of lethality renders it mostly a deterrent. Chambered in 10mm." icon_state = "surplus" item_state = "moistnugget" weapon_weight = WEAPON_HEAVY mag_type = /obj/item/ammo_box/magazine/m10mm/rifle - fire_delay = 30 + fire_delay = 10 burst_size = 1 can_unsuppress = TRUE can_suppress = TRUE @@ -113,7 +113,7 @@ /obj/item/gun/ballistic/automatic/ebr name = "\improper M514 EBR" - desc = "A reliable, high-powered battle rifle often found in the hands of Syndicate personnel and remnants, chambered in .308 Winchester. It's known for rather high stopping power and mild armor-piercing capabilities." + desc = "A reliable, high-powered battle rifle often found in the hands of Syndicate personnel and remnants, chambered in .308 Winchester. Effective against personnel and armor alike." icon = 'icons/obj/guns/48x32guns.dmi' lefthand_file = 'icons/mob/inhands/weapons/64x_guns_left.dmi' righthand_file = 'icons/mob/inhands/weapons/64x_guns_right.dmi' @@ -130,7 +130,7 @@ /obj/item/gun/ballistic/automatic/gal name = "\improper CM-GAL-S" - desc = "The standard issue DMR of the CMM. Dates back to the Xenofauna War, this particular model is in a carbine configuration and as such shorter than the standard model. Chambered in .308." + desc = "The standard issue DMR of the CMM. Dates back to the Xenofauna War, this particular model is in a carbine configuration, and, as such, is shorter than the standard model. Chambered in .308." icon = 'icons/obj/guns/48x32guns.dmi' fire_sound = 'sound/weapons/gun/rifle/shot.ogg' icon_state = "gal" diff --git a/code/modules/projectiles/guns/ballistic/gauss.dm b/code/modules/projectiles/guns/ballistic/gauss.dm index cb21b5d1a867..993c616f885f 100644 --- a/code/modules/projectiles/guns/ballistic/gauss.dm +++ b/code/modules/projectiles/guns/ballistic/gauss.dm @@ -1,12 +1,11 @@ /obj/item/gun/ballistic/automatic/powered/gauss name = "prototype gauss rifle" - desc = "A NT experimental rifle with an high capacity. Useful for putting down crowds. Chambered in ferromagnetic pellets." + desc = "An experimental Nanotrasen rifle with a high capacity. Useful for putting down crowds. Chambered in ferromagnetic pellets." icon_state = "gauss" item_state = "arg" slot_flags = 0 mag_type = /obj/item/ammo_box/magazine/gauss fire_sound = 'sound/weapons/gun/gauss/magrifle.ogg' - load_sound = 'sound/weapons/gun/gauss/rifle_reload.ogg' can_suppress = FALSE burst_size = 1 @@ -16,69 +15,54 @@ empty_indicator = TRUE weapon_weight = WEAPON_MEDIUM w_class = WEIGHT_CLASS_BULKY - charge_sections = 4 ammo_x_offset = 2 /obj/item/gun/ballistic/automatic/powered/gauss/modelh name = "Model H" - desc = "Standard issue pistol of the Solarian confederation. Its unique ability to fire slugs instead of pellets make it effective in taking down unarmored targets, but can be useless against armored ones. This also makes it drain battery very fast, be careful. Chambered in ferromagnetic slugs." + desc = "Standard-issue pistol of the Solarian Confederation. Fires slow ferromagnetic slugs at a high energy cost, though they rend flesh with ease." mag_type = /obj/item/ammo_box/magazine/modelh - icon_state = "model-h" item_state = "model-h" fire_sound = 'sound/weapons/gun/gauss/modelh.ogg' load_sound = 'sound/weapons/gun/gauss/pistol_reload.ogg' - cell_type = /obj/item/stock_parts/cell/gun/solgov - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL fire_delay = 0 //pistol - mag_display = FALSE empty_indicator = FALSE - /obj/item/gun/ballistic/automatic/powered/gauss/claris name = "Claris" - desc = "A antiquated solarian rifle. Just as the founding Solarians intended. Chambered in ferromagnetic pellets." + desc = "An antiquated Solarian rifle. Chambered in ferromagnetic pellets, just as the founding Solarians intended." mag_type = /obj/item/ammo_box/magazine/internal/claris - icon = 'icons/obj/guns/48x32guns.dmi' icon_state = "claris" item_state = "claris" fire_sound = 'sound/weapons/gun/gauss/claris.ogg' load_sound = 'sound/weapons/gun/gauss/sniper_reload.ogg' - cell_type = /obj/item/stock_parts/cell/gun/solgov fire_delay = 2 - bolt_type = BOLT_TYPE_NO_BOLT internal_magazine = TRUE casing_ejector = FALSE - mag_display = FALSE empty_indicator = FALSE /obj/item/gun/ballistic/automatic/powered/gauss/gar - name = "Solar 'GAR' Assualt Rifle" - desc = "A unusally modern, for the solar confederation, assualt rifle. Fires ferromagnetic lances at alarming speeds in every sense of the word. Chambered in ferromagnetic lances." + name = "Solar 'GAR' Assault Rifle" + desc = "A Solarian assault rifle, unusually modern for its producers. Launches ferromagnetic lances at alarming speeds." mag_type = /obj/item/ammo_box/magazine/gar - icon = 'icons/obj/guns/48x32guns.dmi' icon_state = "gar" item_state = "gar" fire_sound = 'sound/weapons/gun/gauss/gar.ogg' load_sound = 'sound/weapons/gun/gauss/rifle_reload.ogg' - cell_type = /obj/item/stock_parts/cell/gun/solgov - burst_size = 2 fire_delay = 2 actions_types = list() - empty_indicator = FALSE /obj/item/gun/ballistic/automatic/powered/gauss/gar/ComponentInitialize() diff --git a/code/modules/projectiles/guns/ballistic/hmg.dm b/code/modules/projectiles/guns/ballistic/hmg.dm index b94e679d4783..dfe8a52cde19 100644 --- a/code/modules/projectiles/guns/ballistic/hmg.dm +++ b/code/modules/projectiles/guns/ballistic/hmg.dm @@ -7,12 +7,11 @@ slowdown = 1 drag_slowdown = 1.5 - // L6 SAW // /obj/item/gun/ballistic/automatic/hmg/l6_saw name = "\improper L6 SAW" - desc = "A heavy machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 490 FS' engraved on the receiver below the designation. Chambered in 7.12x82mm." + desc = "An HMG designated 'L6 SAW'. Has 'Aussec Armoury - 490 FS' engraved on the receiver below the designation. Chambered in 7.12x82mm." icon_state = "l6" item_state = "l6closedmag" base_icon_state = "l6" @@ -38,19 +37,16 @@ if(cover_open && magazine) . += "It seems like you could use an empty hand to remove the magazine." - /obj/item/gun/ballistic/automatic/hmg/l6_saw/AltClick(mob/user) cover_open = !cover_open to_chat(user, "You [cover_open ? "open" : "close"] [src]'s cover.") playsound(user, 'sound/weapons/gun/l6/l6_door.ogg', 60, TRUE) update_appearance() - /obj/item/gun/ballistic/automatic/hmg/l6_saw/update_overlays() . = ..() . += "l6_door_[cover_open ? "open" : "closed"]" - /obj/item/gun/ballistic/automatic/hmg/l6_saw/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) if(cover_open) to_chat(user, "[src]'s cover is open! Close it before firing!") @@ -75,9 +71,9 @@ return ..() -/obj/item/gun/ballistic/automatic/hmg/solar +/obj/item/gun/ballistic/automatic/hmg/solar //This thing fires a 5.56 equivalent, that's an LMG, not an HMG, get out name = "\improper Solar" - desc = "The TerraGov HMG-169, designed in 169 FS, nicknamed 'Solar.' A inscription reads: 'PROPERTY OF TERRAGOV', with 'TERRAGOV' poorly scribbled out, and replaced by 'SOLAR ARMORIES.' Chambered in 4.73×33mm caseless ammunition." + desc = "A TerraGov LMG-169 designed in 169 FS, nicknamed 'Solar.' A inscription reads: 'PROPERTY OF TERRAGOV', with 'TERRAGOV' poorly scribbled out, and replaced by 'SOLAR ARMORIES'. Chambered in 4.73×33mm caseless ammunition." icon_state = "solar" fire_sound = 'sound/weapons/gun/l6/shot.ogg' item_state = "arg" diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm index ccd54cf5dfec..18030833e6cd 100644 --- a/code/modules/projectiles/guns/ballistic/launchers.dm +++ b/code/modules/projectiles/guns/ballistic/launchers.dm @@ -34,7 +34,7 @@ /obj/item/gun/ballistic/automatic/gyropistol name = "gyrojet pistol" - desc = "A prototype pistol designed to fire self propelled rockets." + desc = "A prototype pistol designed to fire self-propelled rockets." icon_state = "gyropistol" fire_sound = 'sound/weapons/gun/general/grenade_launch.ogg' mag_type = /obj/item/ammo_box/magazine/m75 @@ -45,7 +45,7 @@ /obj/item/gun/ballistic/rocketlauncher name = "\improper PML-9" - desc = "A reusable rocket propelled grenade launcher. The words \"NT this way\" and an arrow have been written near the barrel." + desc = "A reusable rocket-propelled grenade launcher. The words \"NT this way\" and an arrow have been written near the barrel." icon_state = "rocketlauncher" item_state = "rocketlauncher" mag_type = /obj/item/ammo_box/magazine/internal/rocketlauncher @@ -75,9 +75,7 @@ /obj/item/gun/ballistic/rocketlauncher/solgov name = "Panzerfaust XII" - desc = "The standard recoiless rifle of the Solarian Confederation. Legend goes that every couple of decades, the bureaucracy changes a small part of the rifle, then bumps up the number. Chambered in rockets." - + desc = "The standard recoiless rifle of the Solarian Confederation. Barely varies from previous models." icon = 'icons/obj/guns/48x32guns.dmi' icon_state = "panzerfaust" item_state = "panzerfaust" - diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index 3b0c0742a657..d03b3992b741 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -1,6 +1,6 @@ /obj/item/gun/ballistic/automatic/pistol name = "stechkin pistol" - desc = "A small, easily concealable 10mm handgun, bearing Scarborough Arms stamps. Has a threaded barrel for suppressors." + desc = "A small, easily concealable 10mm handgun that bears Scarborough Arms stamps. Has a threaded barrel for suppressors." icon_state = "pistol" w_class = WEIGHT_CLASS_SMALL mag_type = /obj/item/ammo_box/magazine/m10mm @@ -36,7 +36,7 @@ /obj/item/gun/ballistic/automatic/pistol/m1911 name = "\improper M1911" - desc = "A classic .45 handgun with a small magazine capacity. An engraving on the slide marks it as a product of Hunter's Pride." + desc = "A classic .45 handgun. An engraving on the slide marks it as a product of Hunter's Pride." icon_state = "m1911" w_class = WEIGHT_CLASS_NORMAL mag_type = /obj/item/ammo_box/magazine/m45 @@ -63,18 +63,18 @@ bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg' /obj/item/gun/ballistic/automatic/pistol/deagle/gold - desc = "A gold plated Desert Eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo." + desc = "A gold-plated Desert Eagle folded over a million times by superior Martian gunsmiths. Uses .50 AE ammo." icon_state = "deagleg" item_state = "deagleg" /obj/item/gun/ballistic/automatic/pistol/deagle/camo - desc = "A Deagle brand Deagle for operators operating operationally. Uses .50 AE ammo." + desc = "A Deagle-brand Deagle for operators operating operationally. Uses .50 AE ammo." //I hate this joke with a passion icon_state = "deaglecamo" item_state = "deagleg" /obj/item/gun/ballistic/automatic/pistol/APS name = "stechkin APS pistol" - desc = "A relative of the more common 10mm Stechkin, converted into a burst-fire machine pistol. Uses 9mm ammo." + desc = "A burst-fire machine pistol based on the stechkin model. Utilizes specialized 9mm magazines." icon_state = "aps" w_class = WEIGHT_CLASS_SMALL mag_type = /obj/item/ammo_box/magazine/pistolm9mm @@ -101,7 +101,7 @@ /obj/item/gun/ballistic/automatic/pistol/commander name = "\improper Commander" - desc = "A classic handgun in a tasteful black and stainless steel color scheme, with an enamel Nanotrasen logo set into the grips. Chambered in 9mm." + desc = "A classic handgun in a tasteful black and stainless steel color scheme. An enamel Nanotrasen logo is set into the grips. Chambered in 9mm." icon_state = "commander" w_class = WEIGHT_CLASS_NORMAL mag_type = /obj/item/ammo_box/magazine/co9mm @@ -112,7 +112,7 @@ /obj/item/gun/ballistic/automatic/pistol/commander/inteq name = "\improper Commissioner" - desc = "A handgun seized from Nanotrasen armories by deserting troopers and modified to IRMG's standards, with a yellow IRMG shield set into the grips. Chambered in 9mm." + desc = "A handgun seized from Nanotrasen armories by deserting troopers and modified to IRMG's standards. A yellow IRMG shield is set into the grips. Chambered in 9mm." icon_state = "commander-inteq" item_state = "commander-inteq" @@ -121,7 +121,7 @@ /obj/item/gun/ballistic/automatic/pistol/commissar name = "\improper Commissar" - desc = "A Nanotrasen-issue handgun, modified to further enhance it's effectiveness in troop discipline." + desc = "A Nanotrasen-issue handgun, modified with a voice box to further enhance its effectiveness in troop discipline." icon_state = "commander" w_class = WEIGHT_CLASS_NORMAL mag_type = /obj/item/ammo_box/magazine/co9mm @@ -171,7 +171,7 @@ /obj/item/gun/ballistic/automatic/pistol/solgov name = "\improper Pistole C" - desc = "A favorite of the Terran Regency, but despised by the Solarian bureaucracy. Was taken out of standard service several centruries ago, and is issued in low numbers in the military. However, it is popular with civillians. Chambered in 5.56mm caseless." + desc = "A favorite of the Terran Regency that is despised by the Solarian bureaucracy. Shifted out of military service centuries ago, though still popular among civilians. Chambered in 5.56mm caseless." icon_state = "pistole-c" weapon_weight = WEAPON_LIGHT w_class = WEIGHT_CLASS_SMALL @@ -179,12 +179,11 @@ fire_sound = 'sound/weapons/gun/pistol/pistolec.ogg' /obj/item/gun/ballistic/automatic/pistol/solgov/old - desc = "A favorite of the Terran Regency, but despised by the Solarian bureaucracy. Was taken out of standard service several centruries ago, and is issued in low numbers in the military. However, it is popular with civillians. Chambered in 5.56mm caseless." icon_state = "pistole-c-old" /obj/item/gun/ballistic/automatic/pistol/tec9 - name = "\improper TEC9 machine pistol" - desc = "A somewhat cheaply-made machine pistol designed to vomit forth 9mm ammunition at a truly eye-watering rate of fire." + name = "\improper TEC-9 machine pistol" + desc = "A crude machine pistol designed to vomit 9mm ammunition at a truly eye-watering rate of fire." icon_state = "tec9" weapon_weight = WEAPON_LIGHT w_class = WEIGHT_CLASS_SMALL @@ -193,7 +192,7 @@ /obj/item/gun/ballistic/automatic/pistol/disposable name = "disposable gun" - desc = "An exceedingly flimsy plastic gun that is extremely cheap and easy to produce. You get what you pay for." + desc = "An exceedingly flimsy plastic gun that is extremely cheap to produce. You get what you pay for." icon_state = "disposable" w_class = WEIGHT_CLASS_NORMAL mag_type = /obj/item/ammo_box/magazine/disposable @@ -219,7 +218,7 @@ /obj/item/gun/ballistic/automatic/pistol/disposable/pizza name = "pizza disposable gun" - desc = "How horrible. Whoever you point at with this won't be very cheesed to meet you." //this is a warcrime against itallians + desc = "How horrible. Whoever you point at with this won't be very cheesed to meet you." //this is a warcrime against italians // IF YOU'RE GOING TO DO US DIRTY SPELL IT RIGHT icon_state = "disposable_pizza" random_icon = FALSE custom_materials = list(/datum/material/pizza=2000) @@ -227,7 +226,7 @@ //not technically a pistol but whatever /obj/item/gun/ballistic/derringer name = ".38 Derringer" - desc = "A easily concealable derringer. Uses .38 ammo." + desc = "An easily concealable derringer. Uses .38 special ammo." icon_state = "derringer" mag_type = /obj/item/ammo_box/magazine/internal/derr38 fire_sound = 'sound/weapons/gun/revolver/shot.ogg' @@ -256,13 +255,13 @@ /obj/item/gun/ballistic/derringer/traitor name = "\improper .357 Syndicate Derringer" - desc = "An easily concealable derriger, if not for the bright red and black. Uses .357 ammo." + desc = "An easily concealable derriger, if not for the bright red-and-black. Uses .357 ammo." icon_state = "derringer_syndie" mag_type = /obj/item/ammo_box/magazine/internal/derr357 fire_sound_volume = 50 //Tactical stealth firing /obj/item/gun/ballistic/derringer/gold name = "\improper Golden Derringer" - desc = "The golden sheen is somewhat counterintuitive as a stealth weapon, but it looks cool. Uses .357 ammo." + desc = "The golden sheen is somewhat counter-intuitive on a holdout weapon, but it looks cool. Uses .357 ammo." icon_state = "derringer_gold" mag_type = /obj/item/ammo_box/magazine/internal/derr357 diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 83fe331f4210..b1c70e7a73b6 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -1,6 +1,6 @@ /obj/item/gun/ballistic/revolver name = "\improper .357 revolver" - desc = "A weighty magnum revolver with a Scarborough Arms logo engraved on the barrel. Uses .357 ammo." //usually used by syndicates + desc = "A weighty revolver with a Scarborough Arms logo engraved on the barrel. Uses .357 ammo." //usually used by syndicates icon_state = "revolver" mag_type = /obj/item/ammo_box/magazine/internal/cylinder fire_sound = 'sound/weapons/gun/revolver/shot.ogg' @@ -75,7 +75,7 @@ /obj/item/gun/ballistic/revolver/detective name = "\improper Colt Detective Special" - desc = "A compact and ridiculously old-fashioned law enforcement firearm. Uses .38 Special rounds." + desc = "A compact and ridiculously old-fashioned law enforcement firearm. Uses .38 special rounds." fire_sound = 'sound/weapons/gun/revolver/shot.ogg' icon_state = "detective" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev38 @@ -151,7 +151,7 @@ /obj/item/gun/ballistic/revolver/nagant name = "\improper Nagant revolver" - desc = "An ancient model of revolver with notoriously poor ergonomics, chambered in 7.62x38mmR. While its unique design prevents the use of speed loaders, it is the only revolver able to use a suppressor." + desc = "An ancient model of revolver with notoriously poor ergonomics, chambered in 7.62x38mmR. Uniquely able to be suppressed." icon_state = "nagant" can_suppress = TRUE @@ -160,7 +160,7 @@ /obj/item/gun/ballistic/revolver/hunting name = "hunting revolver" - desc = "A massive, long-barreled revolver designed for hunting the most dangerous game. Can only be reloaded one cartridge at a time due to its reinforced frame. Uses .45-70 ammo." + desc = "A massive, long-barreled revolver designed for the most dangerous game. Can only be reloaded one cartridge at a time due to its reinforced frame. Uses .45-70 ammo." icon_state = "hunting" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev4570 @@ -169,7 +169,7 @@ /obj/item/gun/ballistic/revolver/russian name = "\improper Russian revolver" - desc = "A revolver for particularly lethal drinking games. Uses .357 ammo, and has a mechanism requiring you to spin the chamber before each trigger pull. The origin of its name remains a subject of intense debate. " + desc = "A Solarian revolver for particularly lethal drinking games. It has a mechanism requiring you to spin the chamber before each trigger pull. Uses .357 ammo." icon_state = "russianrevolver" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rus357 var/spun = FALSE @@ -269,11 +269,11 @@ /obj/item/gun/ballistic/revolver/srm name = "SRM Standard Issue .357 Revolver" - desc = "A sturdy, powerful, and reliable revolver. Try not to find yourself on the other end." + desc = "A sturdy, powerful, and reliable revolver utilized by the Saint-Roumain Militia." /obj/item/gun/ballistic/revolver/pepperbox name = "\improper pepperbox pistol" - desc = "An archaic precursor to revolver-type firearms, this gun was rendered completely obsolete millennia ago. How did it even end up here? While fast to fire, it is extremely inaccurate. Uses .357 ammo." + desc = "An archaic precursor to revolver-type firearms, this gun was rendered completely obsolete millennia ago. While fast to fire, it is extremely inaccurate. Uses .357 ammo." icon_state = "pepperbox" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/pepperbox spread = 20 diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index 8ac729535335..ac80dc47e890 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -1,6 +1,6 @@ /obj/item/gun/ballistic/rifle name = "Bolt Rifle" - desc = "Some kind of bolt action rifle. You get the feeling you shouldn't have this." + desc = "Some kind of bolt-action rifle. You get the feeling you shouldn't have this." icon_state = "hunting" item_state = "hunting" mag_type = /obj/item/ammo_box/magazine/internal/boltaction @@ -52,8 +52,8 @@ /obj/item/gun/ballistic/rifle/boltaction name = "\improper Illestren Hunting Rifle" - desc = "A point of pride for Hunter's Pride, this rifle is one of their most popular offerings. Despite its marketing, it is very rarely used for actual hunting and more often used for putting holes in people, for which it is even more popular for. Chambered in 7.62x54." - sawn_desc = "An extremely sawn-off Illestren, popularly known as an \"obrez\". There was probably a reason it wasn't made this short to begin with." + desc = "One of Hunter's Pride most successful firearms. The bolt-action is popular among colonists, pirates, snipers, and countless more. Chambered in 7.62x54." + sawn_desc = "An extremely sawn-off Illestren, generally known as an \"obrez\". There was probably a reason it wasn't made this short to begin with." w_class = WEIGHT_CLASS_BULKY weapon_weight = WEAPON_HEAVY icon = 'icons/obj/guns/48x32guns.dmi' @@ -82,7 +82,7 @@ /obj/item/gun/ballistic/rifle/boltaction/solgov name = "SSG-669C" - desc = "A bolt action sniper rifle used by the solarian army, beloved for its rotary design and accuracy. Chambered in 8x58mm Caseless." + desc = "A bolt-action sniper rifle used by Solarian troops. Beloved for its rotary design and accuracy. Chambered in 8x58mm Caseless." mag_type = /obj/item/ammo_box/magazine/internal/boltaction/solgov icon_state = "ssg669c" item_state = "ssg669c" @@ -91,7 +91,7 @@ /obj/item/gun/ballistic/rifle/boltaction/roumain name = "standard-issue 'Smile' rifle" - desc = "A bolt action rifle usually given to mercenary hunters of the Saint-Roumain Militia. Chambered in .300 Magnum." + desc = "A bolt-action rifle usually given to mercenary hunters of the Saint-Roumain Militia. Chambered in .300 Magnum." mag_type = /obj/item/ammo_box/magazine/internal/boltaction/smile icon_state = "roma" item_state = "roma" @@ -150,7 +150,7 @@ /obj/item/gun/ballistic/rifle/boltaction/polymer name = "polymer survivor rifle" - desc = "A bolt-action rifle chambered in .300 Blackout, manufactured out of improvised materials and showing obvious signs of years of makeshift repairs and ill-advised modifications. Use at your own risk." + desc = "A bolt-action rifle made of scrap, desperation, and luck. Likely to shatter at any moment. Chambered in .300 Blackout." icon = 'icons/obj/guns/projectile.dmi' icon_state = "crackhead_rifle" item_state = "crackhead_rifle" diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index f8ddd3a31b6c..e333122e2e0a 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -40,7 +40,7 @@ /obj/item/gun/ballistic/shotgun/riot //for spawn in the armory name = "riot shotgun" - desc = "A sturdy shotgun with a longer magazine tube and a fixed wooden stock designed for non-lethal riot control." + desc = "A sturdy shotgun with a six-shell tube and a fixed wooden stock designed for non-lethal riot control." icon_state = "riotshotgun" item_state = "shotgun" mag_type = /obj/item/ammo_box/magazine/internal/shot/riot @@ -55,7 +55,7 @@ /obj/item/gun/ballistic/shotgun/automatic/combat name = "combat shotgun" - desc = "A semi automatic shotgun with tactical furniture and a six-shell capacity underneath." + desc = "A semi-automatic shotgun with tactical furniture and six-shell capacity underneath." icon_state = "cshotgun" item_state = "shotgun_combat" fire_delay = 5 @@ -64,7 +64,7 @@ /obj/item/gun/ballistic/shotgun/automatic/combat/compact name = "compact combat shotgun" - desc = "A compact version of the semi automatic combat shotgun. For close encounters." + desc = "A compact version of the semi-automatic combat shotgun. For close encounters." icon_state = "cshotgunc" mag_type = /obj/item/ammo_box/magazine/internal/shot/com/compact w_class = WEIGHT_CLASS_BULKY @@ -175,7 +175,7 @@ /obj/item/gun/ballistic/shotgun/doublebarrel name = "double-barreled shotgun" - desc = "A true classic." + desc = "A true classic. Both barrels can be fired in quick succession." icon_state = "dshotgun" item_state = "shotgun_db" w_class = WEIGHT_CLASS_BULKY diff --git a/code/modules/projectiles/guns/ballistic/smg.dm b/code/modules/projectiles/guns/ballistic/smg.dm index 11db569a5181..e617173c932e 100644 --- a/code/modules/projectiles/guns/ballistic/smg.dm +++ b/code/modules/projectiles/guns/ballistic/smg.dm @@ -4,7 +4,7 @@ /obj/item/gun/ballistic/automatic/smg/proto name = "\improper Nanotrasen Saber SMG" - desc = "A prototype full auto 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors and a folding stock." + desc = "A prototype full-auto 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors and a folding stock." icon_state = "saber" actions_types = list() mag_type = /obj/item/ammo_box/magazine/smgm9mm @@ -48,7 +48,6 @@ name = "\improper Cobra 20" desc = "An older model of SMG manufactured by Scarborough Arms, a predecessor to the military C-20 series. Chambered in .45. " can_bayonet = FALSE - icon_state = "cobra20" item_state = "cobra20" @@ -71,7 +70,7 @@ /obj/item/gun/ballistic/automatic/smg/wt550 name = "\improper WT-550 Automatic Rifle" - desc = "An outdated personal defence weapon. Uses 4.6x30mm rounds and is designated the WT-550 Automatic Rifle." + desc = "An outdated PDW, used centuries ago by Nanotrasen security elements. Uses 4.6x30mm rounds." icon_state = "wt550" item_state = "arg" mag_type = /obj/item/ammo_box/magazine/wt550m9 @@ -106,10 +105,10 @@ /obj/item/gun/ballistic/automatic/smg/vector name = "\improper Vector carbine" - desc = "A police carbine based off of an SMG design, with most of the complex workings removed for reliability. Chambered in 9mm." + desc = "A police carbine based on a pre-Night of Fire SMG design. Most of the complex workings have been removed for reliability. Chambered in 9mm." icon_state = "vector" item_state = "vector" - mag_type = /obj/item/ammo_box/magazine/smgm9mm/rubbershot //you guys remember when the autorifle was chambered in 9mm + mag_type = /obj/item/ammo_box/magazine/smgm9mm/rubber //you guys remember when the autorifle was chambered in 9mm bolt_type = BOLT_TYPE_LOCKING mag_display = TRUE weapon_weight = WEAPON_LIGHT @@ -229,7 +228,7 @@ /obj/item/gun/ballistic/automatic/smg/aks74u name = "\improper AKS-74U" - desc = "A pre-FTL era carbine, the \"curio\" status of the weapon and its extreme fire rate make it perfect for bandits, pirates and colonists on a budget." + desc = "A pre-FTL era carbine, known to be incredibly cheap. Its extreme fire rate make it perfect for bandits, pirates and colonists on a budget." fire_sound = 'sound/weapons/gun/rifle/shot.ogg' icon_state = "aks74u" lefthand_file = 'icons/mob/inhands/weapons/64x_guns_left.dmi' diff --git a/code/modules/projectiles/projectile/bullets/gauss.dm b/code/modules/projectiles/projectile/bullets/gauss.dm index 3a25619ba9a8..d057213f92e7 100644 --- a/code/modules/projectiles/projectile/bullets/gauss.dm +++ b/code/modules/projectiles/projectile/bullets/gauss.dm @@ -1,3 +1,5 @@ +// Ferromagnetic Pellet (Prototype Gauss Rifle & Claris) + /obj/projectile/bullet/gauss name = "ferromagnetic pellet" icon_state = "gauss-pellet" @@ -7,16 +9,17 @@ light_color = COLOR_SOFT_RED light_range = 3 +// Ferromagnetic Lance (GAR AR) + /obj/projectile/bullet/gauss/lance name = "ferromagnetic lance" icon_state = "redtrac" damage = 30 - armour_penetration = 40 - speed = 0.4 + +// Ferromagnetic Slug (Model H) /obj/projectile/bullet/gauss/slug name = "ferromagnetic slug" icon_state = "gauss-slug" damage = 50 speed = 0.8 - armour_penetration = 40 diff --git a/code/modules/projectiles/projectile/bullets/lmg.dm b/code/modules/projectiles/projectile/bullets/lmg.dm index 327113038a0c..ed9469cb668a 100644 --- a/code/modules/projectiles/projectile/bullets/lmg.dm +++ b/code/modules/projectiles/projectile/bullets/lmg.dm @@ -54,18 +54,18 @@ damage = 20 armour_penetration = 20 -// 7.12x82mm (SAW) +// 7.12x82mm (L6 SAW) /obj/projectile/bullet/mm712x82 name = "7.12x82mm bullet" damage = 25 armour_penetration = 40 -/obj/projectile/bullet/mm712x82_ap +/obj/projectile/bullet/mm712x82/ap name = "7.12x82mm armor-piercing bullet" armour_penetration = 75 -/obj/projectile/bullet/mm712x82_hp +/obj/projectile/bullet/mm712x82/hp name = "7.12x82mm hollow point bullet" damage = 45 armour_penetration = -20 @@ -76,12 +76,11 @@ armour_penetration = 40 fire_stacks = 3 -/obj/projectile/bullet/mm712x82_match +/obj/projectile/bullet/mm712x82/match name = "7.12x82mm match bullet" - damage = 25 - armour_penetration = 40 + speed = 0.3 + armour_penetration = 50 ricochets_max = 2 ricochet_chance = 60 ricochet_auto_aim_range = 4 ricochet_incidence_leeway = 35 - diff --git a/code/modules/projectiles/projectile/bullets/pistol.dm b/code/modules/projectiles/projectile/bullets/pistol.dm index 5fabb11b9420..6a1323e481dc 100644 --- a/code/modules/projectiles/projectile/bullets/pistol.dm +++ b/code/modules/projectiles/projectile/bullets/pistol.dm @@ -5,17 +5,16 @@ damage = 20 armour_penetration = -20 -/obj/projectile/bullet/c9mm_surplus +/obj/projectile/bullet/c9mm/surplus name = "9mm surplus bullet" damage = 15 - armour_penetration = -20 -/obj/projectile/bullet/c9mm_ap +/obj/projectile/bullet/c9mm/ap name = "9mm armor-piercing bullet" damage = 15 armour_penetration = 20 -/obj/projectile/bullet/c9mm_hp +/obj/projectile/bullet/c9mm/hp name = "9mm hollow point bullet" damage = 40 armour_penetration = -50 @@ -26,30 +25,29 @@ armour_penetration = -20 fire_stacks = 2 -/obj/projectile/bullet/c9mm/rubbershot +/obj/projectile/bullet/c9mm/rubber name = "9mm rubber bullet" damage = 5 - armour_penetration = -50 - stamina = 20 + armour_penetration = -40 + stamina = 30 -// 10mm (Stechkin) +// 10mm (Stechkin & SkM-44(k)) /obj/projectile/bullet/c10mm name = "10mm bullet" damage = 25 armour_penetration = -20 -/obj/projectile/bullet/c10mm_surplus +/obj/projectile/bullet/c10mm/surplus name = "10mm surplus bullet" damage = 20 - armour_penetration = -20 -/obj/projectile/bullet/c10mm_ap +/obj/projectile/bullet/c10mm/ap name = "10mm armor-piercing bullet" damage = 20 armour_penetration = 20 -/obj/projectile/bullet/c10mm_hp +/obj/projectile/bullet/c10mm/hp name = "10mm hollow point bullet" damage = 45 armour_penetration = -50 @@ -60,30 +58,29 @@ armour_penetration = -20 fire_stacks = 2 -/obj/projectile/bullet/c10mm/rubbershot +/obj/projectile/bullet/c10mm/rubber name = "10mm rubber bullet" - damage = 5 - stamina = 20 - armour_penetration = -20 + damage = 7 + stamina = 38 + armour_penetration = -40 -// .45 (M1911, C20r) +// .45 (M1911, C20r, Thompson) /obj/projectile/bullet/c45 name = ".45 bullet" damage = 25 armour_penetration = -20 -/obj/projectile/bullet/c45_surplus +/obj/projectile/bullet/c45/surplus name = ".45 surplus bullet" damage = 20 - armour_penetration = -20 -/obj/projectile/bullet/c45_ap +/obj/projectile/bullet/c45/ap name = ".45 armor-piercing bullet" damage = 20 armour_penetration = 20 -/obj/projectile/bullet/c45_hp +/obj/projectile/bullet/c45/hp name = ".45 hollow point bullet" damage = 45 armour_penetration = -50 @@ -94,8 +91,8 @@ fire_stacks = 2 armour_penetration = -20 -/obj/projectile/bullet/c45/rubbershot +/obj/projectile/bullet/c45/rubber name = ".45 rubber bullet" - damage = 5 - stamina = 20 - armour_penetration = -20 + damage = 7 + stamina = 38 + armour_penetration = -40 diff --git a/code/modules/projectiles/projectile/bullets/revolver.dm b/code/modules/projectiles/projectile/bullets/revolver.dm index 3c204157f8a3..dcf8bb682387 100644 --- a/code/modules/projectiles/projectile/bullets/revolver.dm +++ b/code/modules/projectiles/projectile/bullets/revolver.dm @@ -5,7 +5,7 @@ damage = 30 armour_penetration = -20 -// .50AE (Desert Eagle) +// .50 AE (Desert Eagle) /obj/projectile/bullet/a50AE name = ".50 AE bullet" @@ -16,12 +16,12 @@ damage = 60 armour_penetration = -50 -// .38 (Detective's Gun & Winchester) +// .38 (Colt Detective Special & Winchester) /obj/projectile/bullet/c38 - name = ".38 bullet" - damage = 20 - armour_penetration = -20 + name = ".38 special bullet" + damage = 25 + armour_penetration = -30 ricochets_max = 2 ricochet_chance = 50 ricochet_auto_aim_angle = 10 @@ -29,6 +29,8 @@ /obj/projectile/bullet/c38/match name = ".38 match bullet" + speed = 0.3 + armour_penetration = -10 ricochets_max = 4 ricochet_chance = 100 ricochet_auto_aim_angle = 40 @@ -37,10 +39,12 @@ ricochet_decay_chance = 1 ricochet_decay_damage = 1 -/obj/projectile/bullet/c38/match/bouncy +/obj/projectile/bullet/c38/match/bouncy // I don't know why this is a subtype of match name = ".38 rubber bullet" - damage = 10 - stamina = 30 + speed = 0.4 + damage = 7 + stamina = 38 + armour_penetration = -60 ricochets_max = 6 ricochet_incidence_leeway = 70 ricochet_chance = 130 @@ -49,7 +53,7 @@ /obj/projectile/bullet/c38/dumdum name = ".38 dum-dum bullet" - damage = 15 + damage = 20 armour_penetration = -50 ricochets_max = 0 shrapnel_type = /obj/item/shrapnel/bullet/c38/dumdum @@ -74,19 +78,17 @@ /obj/projectile/bullet/c38/hotshot //similar to incendiary bullets, but do not leave a flaming trail name = ".38 hot shot bullet" - damage = 20 ricochets_max = 0 /obj/projectile/bullet/c38/hotshot/on_hit(atom/target, blocked = FALSE) . = ..() if(iscarbon(target)) var/mob/living/carbon/M = target - M.adjust_fire_stacks(6) + M.adjust_fire_stacks(3) M.IgniteMob() /obj/projectile/bullet/c38/iceblox //see /obj/projectile/temp for the original code name = ".38 iceblox bullet" - damage = 20 var/temperature = 100 ricochets_max = 0 @@ -96,7 +98,7 @@ var/mob/living/M = target M.adjust_bodytemperature(((100-blocked)/100)*(temperature - M.bodytemperature)) -// .357 (Syndie Revolver) +// .357 (Syndicate Revolver) /obj/projectile/bullet/a357 name = ".357 bullet" @@ -105,6 +107,8 @@ // admin only really, for ocelot memes /obj/projectile/bullet/a357/match name = ".357 match bullet" + speed = 0.3 + armour_penetration = 10 ricochets_max = 5 ricochet_chance = 140 ricochet_auto_aim_angle = 50 @@ -126,6 +130,8 @@ /obj/projectile/bullet/a4570/match name = ".45-70 match bullet" + speed = 0.3 + armour_penetration = 10 ricochets_max = 5 ricochet_chance = 140 ricochet_auto_aim_angle = 50 diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm index 5143e66ef23a..a69ef88b4f68 100644 --- a/code/modules/projectiles/projectile/bullets/rifle.dm +++ b/code/modules/projectiles/projectile/bullets/rifle.dm @@ -1,23 +1,29 @@ -// 5.56mm (M-90gl Carbine) +// 5.56mm (M-90gl Carbine & P-16) -/obj/projectile/bullet/a556 +/obj/projectile/bullet/a556_45 name = "5.56x45mm bullet" damage = 25 armour_penetration = 20 // 7.62x54mmR (Illestren Rifle) -/obj/projectile/bullet/a762 +/obj/projectile/bullet/a762_54 name = "7.62x54mmR bullet" + speed = 0.3 damage = 30 armour_penetration = 40 +// .300 Magnum (Smile Rifle) + /obj/projectile/bullet/a300 name = ".300 Magnum bullet" + speed = 0.3 damage = 40 stamina = 10 armour_penetration = 40 +// Bloat evil wizard stupid shit + /obj/projectile/bullet/a762_enchanted name = "enchanted 7.62x54mmR bullet" damage = 20 @@ -30,24 +36,25 @@ damage = 25 armour_penetration = 20 -//.300 BLK (Survivor Rifle) +//.300 BLK (Polymer Survivor Rifle) /obj/projectile/bullet/aac_300blk name = ".300 Blackout bullet" damage = 30 armour_penetration = 20 -//7.62x39mm (SVG-67) +//7.62x39mm (SVG-67 & SkM-24) /obj/projectile/bullet/a762_39 name = "7.62x39mm" damage = 30 armour_penetration = 20 -//.308 WIN (M514) +//.308 WIN (M514 & GAL DMRs) /obj/projectile/bullet/win308 name = ".308 Winchester" + speed = 0.3 damage = 30 armour_penetration = 40 @@ -55,5 +62,6 @@ /obj/projectile/bullet/a858 name = "8x58mm caseless bullet" + speed = 0.3 damage = 30 armour_penetration = 40 diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm index c3f9049e3a64..0f2d43206fc8 100644 --- a/code/modules/projectiles/projectile/bullets/shotgun.dm +++ b/code/modules/projectiles/projectile/bullets/shotgun.dm @@ -1,28 +1,27 @@ -/obj/projectile/bullet/shotgun_slug +/obj/projectile/bullet/slug name = "12g shotgun slug" - damage = 60 - armour_penetration = -10 + damage = 40 + speed = 0.5 -/obj/projectile/bullet/shotgun_beanbag +/obj/projectile/bullet/slug/beanbag name = "beanbag slug" - damage = 5 - stamina = 45 - armour_penetration = -10 + damage = 10 + stamina = 60 + armour_penetration = -20 /obj/projectile/bullet/incendiary/shotgun name = "incendiary slug" damage = 20 - armour_penetration = -10 + speed = 0.5 /obj/projectile/bullet/incendiary/shotgun/dragonsbreath name = "dragonsbreath pellet" damage = 5 armour_penetration = -35 -/obj/projectile/bullet/shotgun_stunslug +/obj/projectile/bullet/slug/stun name = "stunslug" damage = 5 - armour_penetration = -10 paralyze = 100 stutter = 5 jitter = 20 @@ -30,63 +29,64 @@ icon_state = "spark" color = "#FFFF00" -/obj/projectile/bullet/shotgun_meteorslug +/obj/projectile/bullet/slug/meteor name = "meteorslug" icon = 'icons/obj/meteor.dmi' icon_state = "dust" - damage = 40 - armour_penetration = -10 + damage = 30 paralyze = 15 knockdown = 80 hitsound = 'sound/effects/meteorimpact.ogg' -/obj/projectile/bullet/shotgun_meteorslug/on_hit(atom/target, blocked = FALSE) +/obj/projectile/bullet/slug/meteor/on_hit(atom/target, blocked = FALSE) . = ..() if(ismovable(target)) var/atom/movable/M = target var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src))) M.safe_throw_at(throw_target, 3, 2) -/obj/projectile/bullet/shotgun_meteorslug/Initialize() +/obj/projectile/bullet/slug/meteor/Initialize() . = ..() SpinAnimation() -/obj/projectile/bullet/shotgun_frag12 - name ="frag12 slug" - damage = 35 - armour_penetration = -10 +/obj/projectile/bullet/slug/frag12 + name = "frag12 slug" + damage = 25 paralyze = 50 -/obj/projectile/bullet/shotgun_frag12/on_hit(atom/target, blocked = FALSE) +/obj/projectile/bullet/slug/frag12/on_hit(atom/target, blocked = FALSE) ..() explosion(target, -1, 0, 1) return BULLET_ACT_HIT /obj/projectile/bullet/pellet ///How much damage is subtracted per tile? - var/tile_dropoff = 1 + var/tile_dropoff = 1 //Standard of 10% per tile ///How much stamina damage is subtracted per tile? - var/tile_dropoff_stamina = 0.8 + var/tile_dropoff_stamina = 1.5 //As above armour_penetration = -35 + speed = 0.5 -/obj/projectile/bullet/pellet/shotgun_buckshot +/obj/projectile/bullet/pellet/buckshot name = "buckshot pellet" damage = 10 - -/obj/projectile/bullet/pellet/shotgun_rubbershot +/obj/projectile/bullet/pellet/rubbershot name = "rubbershot pellet" - damage = 2 - stamina = 8 - tile_dropoff = 0.2 // Keep it at 10% per tile + damage = 2.5 + tile_dropoff = 0.15 + stamina = 15 + armour_penetration = -70 -/obj/projectile/bullet/pellet/shotgun_incapacitate +/obj/projectile/bullet/pellet/rubbershot/incapacitate name = "incapacitating pellet" damage = 1 + tile_dropoff = 0.1 stamina = 6 + tile_dropoff_stamina = 0.6 -/obj/projectile/bullet/pellet/Range() +/obj/projectile/bullet/pellet/Range() //10% loss per tile = max range of 10, generally ..() if(damage > 0) damage -= tile_dropoff @@ -95,17 +95,9 @@ if(damage < 0 && stamina < 0) qdel(src) -/obj/projectile/bullet/pellet/shotgun_improvised - tile_dropoff = 0.45 //Come on it does 4.5 damage don't be like that. //WS Edit - Shotgun nerf +/obj/projectile/bullet/pellet/improvised damage = 6 - -/obj/projectile/bullet/pellet/shotgun_improvised/Initialize() - . = ..() - range = rand(1, 8) - -/obj/projectile/bullet/pellet/shotgun_improvised/on_range() - do_sparks(1, TRUE, src) - ..() + tile_dropoff = 0.6 // Mech Scattershot @@ -113,8 +105,8 @@ damage = 24 armour_penetration = -20 -/obj/projectile/bullet/pellet/shotgun_buckshot/twobore +/obj/projectile/bullet/pellet/buckshot/twobore name = "two-bore pellet" damage = 30 armour_penetration = -25 - tile_dropoff = 5 + tile_dropoff = 3 diff --git a/code/modules/projectiles/projectile/bullets/smg.dm b/code/modules/projectiles/projectile/bullets/smg.dm index 0cf2225e3872..fb5e2a53ce65 100644 --- a/code/modules/projectiles/projectile/bullets/smg.dm +++ b/code/modules/projectiles/projectile/bullets/smg.dm @@ -1,10 +1,10 @@ -// 4.6x30mm (Autorifles) +// 4.6x30mm (WT-550 Automatic Rifle & NT-SVG) /obj/projectile/bullet/c46x30mm name = "4.6x30mm bullet" damage = 20 -/obj/projectile/bullet/c46x30mm_ap +/obj/projectile/bullet/c46x30mm/ap name = "4.6x30mm armor-piercing bullet" damage = 15 armour_penetration = 40 @@ -14,30 +14,35 @@ damage = 10 fire_stacks = 1 +// 4.73x33mm caseless (Solar) + /obj/projectile/bullet/c47x33mm name = "4.73x33mm bullet" damage = 25 armour_penetration = 20 +// 5.56 HITP caseless (Solare C) + /obj/projectile/bullet/c556mm name = "5.56mm HITP bullet" damage = 20 -/obj/projectile/bullet/c556mm_surplus +/obj/projectile/bullet/c556mm/surplus name = "5.56mm HITP surplus bullet" damage = 15 -/obj/projectile/bullet/c556mm_ap +/obj/projectile/bullet/c556mm/ap name = "5.56mm HITP AP bullet" damage = 15 armour_penetration = 40 -/obj/projectile/bullet/c556mm_hp - name = "5.56mm HITP hollow-point bullet" +/obj/projectile/bullet/c556mm/hp + name = "5.56mm HITP hollow point bullet" damage = 30 armour_penetration = -50 -/obj/projectile/bullet/c556mm/rubbershot +/obj/projectile/bullet/c556mm/rubber name = "5.56mm HITP rubber bullet" damage = 5 - stamina = 20 + stamina = 30 + armour_penetration = -20 diff --git a/code/modules/projectiles/projectile/bullets/sniper.dm b/code/modules/projectiles/projectile/bullets/sniper.dm index 9dc8bfb5d4d7..1f725b8113f2 100644 --- a/code/modules/projectiles/projectile/bullets/sniper.dm +++ b/code/modules/projectiles/projectile/bullets/sniper.dm @@ -1,10 +1,10 @@ -// .50 (Sniper) +// .50 BMG (Sniper) /obj/projectile/bullet/p50 - name =".50 bullet" - speed = 0.4 + name = ".50 BMG bullet" + speed = 0.3 damage = 70 - paralyze = 100 + knockdown = 100 dismemberment = 50 armour_penetration = 60 var/breakthings = TRUE @@ -16,11 +16,11 @@ return ..() /obj/projectile/bullet/p50/soporific - name =".50 soporific bullet" + name = ".50 BMG soporific bullet" armour_penetration = 0 damage = 0 dismemberment = 0 - paralyze = 0 + knockdown = 0 breakthings = FALSE /obj/projectile/bullet/p50/soporific/on_hit(atom/target, blocked = FALSE) @@ -30,17 +30,16 @@ return ..() /obj/projectile/bullet/p50/penetrator - name = "penetrator round" + name = ".50 BMG penetrator round" icon_state = "gauss" damage = 60 projectile_piercing = PASSMOB projectile_phasing = (ALL & (~PASSMOB)) dismemberment = 0 //It goes through you cleanly. - paralyze = 0 + knockdown = 0 breakthings = FALSE /obj/projectile/bullet/p50/penetrator/shuttle //Nukeop Shuttle Variety icon_state = "gaussstrong" damage = 25 - speed = 0.3 range = 16 diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 1b5ccd05a63a..4d28452521af 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -265,7 +265,7 @@ desc = "A 20 round armour piercing magazine for the out of date security WT-550 Auto Rifle" id = "mag_oldsmg_ap" materials = list(/datum/material/iron = 6000, /datum/material/silver = 600) - build_path = /obj/item/ammo_box/magazine/wt550m9/wtap + build_path = /obj/item/ammo_box/magazine/wt550m9/ap departmental_flags = DEPARTMENTAL_FLAG_SECURITY /datum/design/mag_oldsmg/ic_mag @@ -273,7 +273,7 @@ desc = "A 20 round armour piercing magazine for the out of date security WT-550 Auto Rifle" id = "mag_oldsmg_ic" materials = list(/datum/material/iron = 6000, /datum/material/silver = 600, /datum/material/glass = 1000) - build_path = /obj/item/ammo_box/magazine/wt550m9/wtic + build_path = /obj/item/ammo_box/magazine/wt550m9/inc departmental_flags = DEPARTMENTAL_FLAG_SECURITY //WS edit - free lethals diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm index 6cf283f8f49b..ee40b2782574 100644 --- a/code/modules/spells/spell_types/rightandwrong.dm +++ b/code/modules/spells/spell_types/rightandwrong.dm @@ -17,7 +17,7 @@ GLOBAL_LIST_INIT(summoned_guns, list( /obj/item/gun/ballistic/shotgun/doublebarrel, /obj/item/gun/ballistic/shotgun, /obj/item/gun/ballistic/shotgun/automatic/combat, - /obj/item/gun/ballistic/automatic/assualt/ar, + /obj/item/gun/ballistic/automatic/assault/ar, /obj/item/gun/ballistic/revolver/mateba, /obj/item/gun/ballistic/rifle/boltaction, /obj/item/pneumatic_cannon/speargun, diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index c5050d08c0b7..6eea344afde0 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -767,7 +767,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) name = "10mm Incendiary Magazine" desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. \ Loaded with incendiary rounds which inflict little damage, but ignite the target." - item = /obj/item/ammo_box/magazine/m10mm/fire + item = /obj/item/ammo_box/magazine/m10mm/inc cost = 2 exclude_modes = list(/datum/game_mode/nuclear/clown_ops) @@ -889,8 +889,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 9 /datum/uplink_item/ammo/machinegun/hollow - name = "7.12x82mm (Hollow-Point) Box Magazine" - desc = "A 50-round magazine of 7.12x82mm ammunition for use in the L6 SAW; equipped with hollow-point tips to help \ + name = "7.12x82mm (hollow point) Box Magazine" + desc = "A 50-round magazine of 7.12x82mm ammunition for use in the L6 SAW; equipped with hollow point tips to help \ with the unarmored masses of crew." item = /obj/item/ammo_box/magazine/mm712x82/hollow @@ -898,7 +898,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) name = "7.12x82mm (Incendiary) Box Magazine" desc = "A 50-round magazine of 7.12x82mm ammunition for use in the L6 SAW; 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/mm712x82/incen + item = /obj/item/ammo_box/magazine/mm712x82/inc /datum/uplink_item/ammo/machinegun/match name = "7.12x82mm (Match) Box Magazine" diff --git a/code/modules/vending/liberation.dm b/code/modules/vending/liberation.dm index f4456cc740e5..d2fb11bfef4b 100644 --- a/code/modules/vending/liberation.dm +++ b/code/modules/vending/liberation.dm @@ -17,7 +17,7 @@ /obj/item/gun/ballistic/shotgun/automatic/combat = 2, /obj/item/gun/ballistic/automatic/gyropistol = 1, /obj/item/gun/ballistic/shotgun = 2, - /obj/item/gun/ballistic/automatic/assualt/ar = 2) + /obj/item/gun/ballistic/automatic/assault/ar = 2) premium = list( /obj/item/ammo_box/magazine/smgm9mm = 2, /obj/item/ammo_box/magazine/m50 = 4, diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index c1dfa757d6ee..1e9a3460f064 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -161,7 +161,7 @@ ) voucher_items = list( - "NT-AK" = /obj/item/gun/ballistic/automatic/assualt/ak47/nt) //if im being honest, theres no point in addiing other options when this is clearly the best + "NT-AK" = /obj/item/gun/ballistic/automatic/assault/ak47/nt) //if im being honest, theres no point in addiing other options when this is clearly the best /obj/item/gun_voucher name = "security weapon voucher" diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index bf11a268fa8eaf303fc65bd132924e0f7a1ab0f2..96528874fee3c6db2521b98011d955c78f80cec7 100644 GIT binary patch delta 1315 zcmV+;1>E|I;{l4}0gzCC2-tKB)Tg}!w5`ZOMJbT%ZL+_94-#c3+bkdVmH>|&&Nnj@ zIp)Xcx6faSuhH#&vG}X(hq`N{n<%>$i>sgY{&ajPr9RGd`CKQwuOevUAP*E_ap!R}){ccYtBMb`$iv$Y; zivbG&Q=dr>bk9`0BoLa(zo<+B|1t%n$`nvNQy_qu0=bYWkXA~V5iUr1L|}n516dmUD@ty)4zbdnuw995G_VJK#FkyP+|mu5F;3%Ln2sOOdQt2 z@d0YMAwUm@0!17epovnswRgql8xiIb#_GHp6d=*7aX_bkS3D3aT@shm<>AyG>$W2B zPKrMBA3jDbK6d`_OlV&N!6sJvw?{|%w`E8AKL-<;_&?-*!Y`E4kQtpS)k|40!7bkz#9Cj z&ZuA483nic{5ciY9?70EvmjMx790@IEa)3J7W7&j%02Uf*GgDZK`b`bcG&hNBm|p~ z7;HjbDCO9Zbc3ShvgaNv!;Ajl9dxG z`K;ip?$CtK3T|_A2r!A~WXFDcS8TqKBDJxi2YDFcpuZ2( zv7_+Fflg7!PRt_*`b6Cd{aQ0}pf}c$+tFEn!0-28@GW&70E+v~fKUsd(BBLQwGe6` zaDIO)=|`p?$Pv|nUuC@si`Mri>}qNgQVpl2#tpeHX{pyxAMfGyXS`}$<9sYuu^VRA5j#rsu% zKfFAZJz0kXfm$=_*MCO+5uH(gj?AdPV=6zXi{rF4O#|a{!IIX@E1bN@IOBf0CB4*^ zwIf^B+iY2*v}Ik_mbGwO)(>uVEe3I^G|m5M z?~eoNVGHG5m5`S^6Gt|r8TBvIq2Nk?KcoJ1m{Ih+DG}DjD@>BgA4z`|%nQXN`+@Hv zU6BMfsXz}EhM)B?pe=F&$qO`x`hBlVLyV6YFg<~wh-{+JNy~xccH>ZBzA=40#KSxL z%dbeXfSCnvG%C}_O#42j;*X@?{X|yV?m6C;rrm-iOnAscsmZ`;_alTKn$x=#tN9px Z{(2kT-WQ910Q`zOl}4H2J+oT{FKk))g4O^4 delta 1315 zcmV+;1>E|I;{l4}0gzCC7}#_R)Tg}!w5`ZOMahutZL+_94-#cN+bkdVmH>|&&NnkO zIpW9Yx6fZzU!(iS)$FgL>#Mej?xO5g%x->GyW>8(i&8ne*%wv0KMw!&M{_KqyXZrz z^dG<9$Ku26W>+W7 z#|Nn4h5$Vr3KVf@fF?@i);_G(--s}mFjnVkP=G{NwKDPewjA&N@!A4g4w?{|%w`E8Ae-1`6@&5oi(tnt9B=#u59wpc#>=5>c z2Z(}xXS6>pHJb+rVstK1dK;ZfmfS|?el?8FWvu*87@f;FgIo$ZP$Nd?l4PFIxg@uC ze}b^5znfVqx(Nj->98-&{vxkFZ17AHO?oz3Zxf=i1*~av+J&!~#7h7ASgV1J>YI zbwd5RPAIt5=P#+S_DDpSSRlfg1-$^rf=;YML4(wx+%YeBtAsTr#A0J@i*2t%BCrk# z!8#-c>wqAv1ER1F2*Vna%Mj6)A)+lqL?ivjGs{II?aGP89g1q(M7{gS5ElDm;Z!I61F`K&3Q6&z|E zD*3D=)kiepvw}O_6aq}*IoaXgKCIT?NI_oG@M1C0{`$Ru!Kb`448GKz;UEt~9Q1c% zT6Q2FIM6R@*|~Y(K)0w}pl>z<2RdXexg(u_1^oW_1>aSt0id|w3<$LV3jNK1Pz#|3 z0_XQPlzwFTiJVj&2v#tm{(L$XTV#FYp8Up(O^0S2IpB^X{oedp9hTOj)ITISTIR@s zWjd0)(9qx)L}@{OXp|PvBzjamM|0LprJr zYf3h(!`ZNQX~TN24Qu2!tSj8;T!J!ebS}Z8utw*Se3-R~EPHF}+M9F#>ectw)b;;q z@(%;)VGHG5nUME8BS$u*3H2}2q2L35?}Yl(VM5U(r$ksAFEB|ee<1x;FfA05>@(j} zx*!Q`Qh}Z;^gpYR??Z%_D2Zc*Qa+CSMxFY Z{PjM%e_YM}0nMj9%HlgmX|r1eFKixtfRq3L From b86fa2ee5f3cf8d1ab3603816fa3e2e83ee949b7 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 16 Sep 2023 21:33:38 -0500 Subject: [PATCH 02/13] Automatic changelog generation for PR #2354 [ci skip] --- html/changelogs/AutoChangeLog-pr-2354.yml | 26 +++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2354.yml diff --git a/html/changelogs/AutoChangeLog-pr-2354.yml b/html/changelogs/AutoChangeLog-pr-2354.yml new file mode 100644 index 000000000000..e4e8db557286 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2354.yml @@ -0,0 +1,26 @@ +author: Skrem7 +delete-after: true +changes: + - tweak: The NT 'Boarder' ARG now loads standard P-16 magazines, rather than the + M-90gl toploaders. + - balance: Standardizes pellet projectiles to lose 10% damage of both types per + tile across the board. Improvised pellets no longer have a hardcapped 1-8 tile + range. + - balance: Less-lethal rounds now do 50% more stamina than the force of their lethal + counterparts, with 25% the normal force and double the negative AP. If the round + had positive or zero AP, it was subtracted by 20. + - balance: Shotgun slugs do 40 damage, down from 60, but have zero AP, rather than + -10. FRAG-12 and meteor slugs have had their damage adjusted to reflect their + relative force. + - balance: Surplus rifle fire_delay has been cut to 1 second from 3. + - balance: Any DMR, match, or sniper round now travels slightly faster than other + bullets. Shotgun slugs and pellets now travel slightly slower than other bullets. + - balance: Match rounds have had their AP slightly increased. + - bugfix: Fixed WT-550 magazines not displaying properly. + - spellcheck: Went over (almost) every single ballistic description, including the + guns themselves, magazines, ballistic casings, and speed loaders/stripper clips + to not only have better consistency and readability, but also be more clear + on the general effectiveness of each caliber. + - spellcheck: Assualt is gone. + - code_imp: Repaths/renames most ballistic ammo pathing to maintain consistency + or take advantage of inherits, when possible. From e6fb67fe20b4c142df87c69cd3af74d63476cfdd Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 18 Sep 2023 00:45:57 +0000 Subject: [PATCH 03/13] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-2354.yml | 26 ----------------------- html/changelogs/archive/2023-09.yml | 25 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 26 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2354.yml diff --git a/html/changelogs/AutoChangeLog-pr-2354.yml b/html/changelogs/AutoChangeLog-pr-2354.yml deleted file mode 100644 index e4e8db557286..000000000000 --- a/html/changelogs/AutoChangeLog-pr-2354.yml +++ /dev/null @@ -1,26 +0,0 @@ -author: Skrem7 -delete-after: true -changes: - - tweak: The NT 'Boarder' ARG now loads standard P-16 magazines, rather than the - M-90gl toploaders. - - balance: Standardizes pellet projectiles to lose 10% damage of both types per - tile across the board. Improvised pellets no longer have a hardcapped 1-8 tile - range. - - balance: Less-lethal rounds now do 50% more stamina than the force of their lethal - counterparts, with 25% the normal force and double the negative AP. If the round - had positive or zero AP, it was subtracted by 20. - - balance: Shotgun slugs do 40 damage, down from 60, but have zero AP, rather than - -10. FRAG-12 and meteor slugs have had their damage adjusted to reflect their - relative force. - - balance: Surplus rifle fire_delay has been cut to 1 second from 3. - - balance: Any DMR, match, or sniper round now travels slightly faster than other - bullets. Shotgun slugs and pellets now travel slightly slower than other bullets. - - balance: Match rounds have had their AP slightly increased. - - bugfix: Fixed WT-550 magazines not displaying properly. - - spellcheck: Went over (almost) every single ballistic description, including the - guns themselves, magazines, ballistic casings, and speed loaders/stripper clips - to not only have better consistency and readability, but also be more clear - on the general effectiveness of each caliber. - - spellcheck: Assualt is gone. - - code_imp: Repaths/renames most ballistic ammo pathing to maintain consistency - or take advantage of inherits, when possible. diff --git a/html/changelogs/archive/2023-09.yml b/html/changelogs/archive/2023-09.yml index 3cd99190c981..d281e2a39f3f 100644 --- a/html/changelogs/archive/2023-09.yml +++ b/html/changelogs/archive/2023-09.yml @@ -92,3 +92,28 @@ Pickle-Coding: - bugfix: Allows the supermatter crystal to produce gases while powered, even in absolutely empty turfs, excluding space turfs. +2023-09-18: + Skrem7: + - tweak: The NT 'Boarder' ARG now loads standard P-16 magazines, rather than the + M-90gl toploaders. + - balance: Standardizes pellet projectiles to lose 10% damage of both types per + tile across the board. Improvised pellets no longer have a hardcapped 1-8 tile + range. + - balance: Less-lethal rounds now do 50% more stamina than the force of their lethal + counterparts, with 25% the normal force and double the negative AP. If the round + had positive or zero AP, it was subtracted by 20. + - balance: Shotgun slugs do 40 damage, down from 60, but have zero AP, rather than + -10. FRAG-12 and meteor slugs have had their damage adjusted to reflect their + relative force. + - balance: Surplus rifle fire_delay has been cut to 1 second from 3. + - balance: Any DMR, match, or sniper round now travels slightly faster than other + bullets. Shotgun slugs and pellets now travel slightly slower than other bullets. + - balance: Match rounds have had their AP slightly increased. + - bugfix: Fixed WT-550 magazines not displaying properly. + - spellcheck: Went over (almost) every single ballistic description, including the + guns themselves, magazines, ballistic casings, and speed loaders/stripper clips + to not only have better consistency and readability, but also be more clear + on the general effectiveness of each caliber. + - spellcheck: Assualt is gone. + - code_imp: Repaths/renames most ballistic ammo pathing to maintain consistency + or take advantage of inherits, when possible. From f01a2b8a44bdd2990db4d160f844d48688833b87 Mon Sep 17 00:00:00 2001 From: Mark Suckerberg Date: Mon, 18 Sep 2023 20:25:27 -0500 Subject: [PATCH 04/13] Fixes qdel in new error (#2360) ## About The Pull Request Fixes that one spurious fail by making sure non-initialised bottles don't smash ## Why It's Good For The Game Yes ## Changelog :cl: /:cl: --- code/modules/food_and_drinks/drinks/drinks/bottle.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 65c3ac05dd5b..77de6fddcad7 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -35,6 +35,8 @@ custom_price = 55 /obj/item/reagent_containers/food/drinks/bottle/smash(mob/living/target, mob/thrower, ranged = FALSE) + if(QDELING(src) || !target || !(flags_1 & INITIALIZED_1)) //Invalid loc + return //Creates a shattering noise and replaces the bottle with a broken_bottle if(bartender_check(target) && ranged) return From 4f5845a23f3d4124a3d3331d92f0f6202475b649 Mon Sep 17 00:00:00 2001 From: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Date: Tue, 19 Sep 2023 16:16:09 -0400 Subject: [PATCH 05/13] Adds new foodtype, GORE, split from GROSS. Shuffles species food preferences. (#2359) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ports: - https://github.com/BeeStation/BeeStation-Hornet/pull/9004 (Cool person made this pr 😎) ## About The Pull Request Very shrimple 🦐 PR.(contains no shrimp) Adds a new foodtype `GORE`, split from the `GROSS` foodtype. A newfood PR thats rather simple, but also important to prepare for future changes. The tag is meant to represent things that "are visibly from a corpse or an organ", while the `GROSS` tag now represents "things which are rotten or otherwise inedible". This will be mostly effect lizards. They were meant to like gross, meaty things like some of the raw meats, but it doesnt make sense for this also to encompass gross things like Burgers with baseballs as a primary ingredient, While this will lessen the food lizards will enjoy, it will also widen the food Kepori and Arachnids enjoy. Both are similarly carnivorous, so for consistency's sake, why not? Additionally, I took a bit to generally clean up Shiptests species food preferences, adding missing disliked or liked food where I thought it was appropriate. I included comments with most of my changes that should relay my general ideas about what makes sense and what doesn't. I do, of course, invite challenges to any of the liked or disliked foods I've altered that you think could be better. ## Why It's Good For The Game Lizards are the main target of this, but it should improve the food gameplay of other species as well. Specifically should open up more food for Kepori and Arachnids. Lizards and other species being memes for being able to eat half of all unique food because they like raw and gross is really dumb. If you chew on inedible food, mr lizard, you will regret it. ## Changelog :cl: RKz, Jacquerel add: New foodtype, GORE. Split from GROSS, GORE foodtype will be replacing it where the food in particular resembles a corpse or organ. GROSS should only apply to inedible or rotting foods. (baseball burgers) balance: 'Gore' is disliked by Humans and Toxic to Moths. However, Gore is liked by Lizards, Arachnids, Kepori, Slimepeople and Flies. Lizards no longer like 'gross' food. balance: All butchered player species are considered to be gore, only preferred by Lizards, Arachnids, Kepori, Slimepeople and Flies. If you like the taste of your fellow(or rival) crew, prepare accordingly. balance: Moved food preferences around to make more sense with the current system. Nothing drastic, but species liked foods should be much more immersive in general. /:cl: --- code/__DEFINES/food.dm | 5 +++ code/modules/food_and_drinks/food/ration.dm | 2 +- .../food_and_drinks/food/snacks/meat.dm | 34 +++++++++---------- .../food_and_drinks/food/snacks_burgers.dm | 10 +++--- .../food_and_drinks/food/snacks_meat.dm | 8 ++--- .../food_and_drinks/food/snacks_pastry.dm | 5 +-- .../food_and_drinks/food/snacks_soup.dm | 4 +-- .../carbon/human/species_types/flypeople.dm | 2 +- .../carbon/human/species_types/humans.dm | 2 +- .../carbon/human/species_types/jellypeople.dm | 2 +- .../carbon/human/species_types/kepori.dm | 4 +-- .../human/species_types/lizardpeople.dm | 4 +-- .../carbon/human/species_types/mothmen.dm | 4 +-- .../carbon/human/species_types/podpeople.dm | 2 +- .../carbon/human/species_types/spider.dm | 2 +- .../living/simple_animal/friendly/mouse.dm | 2 +- .../mob/living/simple_animal/hostile/bees.dm | 4 +++ code/modules/surgery/organs/organ_internal.dm | 2 +- 18 files changed, 54 insertions(+), 44 deletions(-) diff --git a/code/__DEFINES/food.dm b/code/__DEFINES/food.dm index 7e0feafb3da3..f2b6a8fd196d 100644 --- a/code/__DEFINES/food.dm +++ b/code/__DEFINES/food.dm @@ -14,6 +14,11 @@ #define BREAKFAST (1<<13) #define CLOTH (1<<14) #define GRILLED (1<<15) +/*#define NUTS (1<<16) +#define SEAFOOD (1<<17) +#define ORANGES (1<<18) +#define BUGS (1<<19)*/ +#define GORE (1<<20) /// IC meaning (more or less) for food flags #define FOOD_FLAGS_IC list( \ diff --git a/code/modules/food_and_drinks/food/ration.dm b/code/modules/food_and_drinks/food/ration.dm index 899bff9c9a26..ab6c72d55516 100644 --- a/code/modules/food_and_drinks/food/ration.dm +++ b/code/modules/food_and_drinks/food/ration.dm @@ -168,7 +168,7 @@ desc = "A mix of various salted offal, providing a unique and flavorful snack for those with adventurous tastes." filling_color = "#cc3300" tastes = list("assorted offal" = 1) - foodtype = MEAT + foodtype = MEAT | GORE //its literally entrails /obj/item/reagent_containers/food/snacks/ration/entree/maple_pork_sausage_patty name = "maple pork sausage patty" diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index 81f0fc8923ac..86323c2e00bc 100644 --- a/code/modules/food_and_drinks/food/snacks/meat.dm +++ b/code/modules/food_and_drinks/food/snacks/meat.dm @@ -39,7 +39,7 @@ cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/plain/human slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain/human tastes = list("tender meat" = 1) - foodtype = MEAT | RAW | GROSS + foodtype = MEAT | RAW | GORE /obj/item/reagent_containers/food/snacks/meat/slab/human/initialize_slice(obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain/human/slice, reagents_per_slice) ..() @@ -88,7 +88,7 @@ cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/plain/human/lizard filling_color = "#6B8E23" tastes = list("meat" = 4, "scales" = 1) - foodtype = MEAT | RAW + foodtype = MEAT | RAW | GORE /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant icon_state = "plantmeat" @@ -102,21 +102,21 @@ desc = "Ow, the edge." filling_color = "#202020" tastes = list("darkness" = 1, "meat" = 1) - foodtype = MEAT | RAW + foodtype = MEAT | RAW | GORE /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/fly icon_state = "flymeat" desc = "Nothing says tasty like maggot filled radioactive mutant flesh." list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/uranium = 3) tastes = list("maggots" = 1, "the inside of a reactor" = 1) - foodtype = MEAT | RAW | GROSS + foodtype = MEAT | RAW | GROSS | GORE /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/moth icon_state = "mothmeat" desc = "Unpleasantly powdery and dry. Kind of pretty, though." filling_color = "#BF896B" tastes = list("dust" = 1, "powder" = 1, "meat" = 2) - foodtype = MEAT | RAW + foodtype = MEAT | RAW | GORE /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/squid name = "calamari" @@ -131,8 +131,8 @@ desc = "There's a point where this needs to stop, and clearly we have passed it." filling_color = "#F0F0F0" tastes = list("bone" = 1) - slice_path = null //can't slice a bone into cutlets - foodtype = GROSS + slice_path = null //can't slice a bone into cutlets + foodtype = GROSS | GORE /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie name = " meat (rotten)" @@ -140,7 +140,7 @@ desc = "Halfway to becoming fertilizer for your garden." filling_color = "#6B8E23" tastes = list("brains" = 1, "meat" = 1) - foodtype = RAW | MEAT | TOXIC + foodtype = RAW | MEAT | TOXIC | GORE | GROSS // who the hell would eat this /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ethereal name = "crystalline cellulose" @@ -176,23 +176,23 @@ /obj/item/reagent_containers/food/snacks/meat/slab/mouse name = "mouse meat" desc = "A slab of mouse meat. Best not eat it raw." - foodtype = RAW | MEAT | GROSS + foodtype = RAW | MEAT | GORE /obj/item/reagent_containers/food/snacks/meat/slab/mothroach name = "mothroach meat" - desc = "A light slab of meat." - foodtype = RAW | MEAT | GROSS + desc = "A light slab of mothroach meat." + foodtype = RAW | MEAT | GORE /obj/item/reagent_containers/food/snacks/meat/slab/corgi name = "corgi meat" desc = "Tastes like... well you know..." tastes = list("meat" = 4, "a fondness for wearing hats" = 1) - foodtype = RAW | MEAT | GROSS + foodtype = RAW | MEAT | GORE /obj/item/reagent_containers/food/snacks/meat/slab/pug name = "pug meat" desc = "Tastes like... well you know..." - foodtype = RAW | MEAT | GROSS + foodtype = RAW | MEAT | GORE /obj/item/reagent_containers/food/snacks/meat/slab/killertomato name = "killer tomato meat" @@ -358,7 +358,7 @@ /obj/item/reagent_containers/food/snacks/meat/steak/plain/human tastes = list("tender meat" = 1) - foodtype = MEAT | GROSS + foodtype = MEAT | GORE /obj/item/reagent_containers/food/snacks/meat/steak/killertomato name = "killer tomato steak" @@ -396,7 +396,7 @@ tastes = list("beef" = 1, "cod fish" = 1) /obj/item/reagent_containers/food/snacks/meat/steak/chicken - name = "chicken steak" //Can you have chicken steaks? Maybe this should be renamed once it gets new sprites. + name = "chicken steak" //Can you have chicken steaks? Maybe this should be renamed once it gets new sprites. //I concur icon_state = "birdsteak" tastes = list("chicken" = 1) @@ -444,7 +444,7 @@ /obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain/human cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/plain/human tastes = list("tender meat" = 1) - foodtype = MEAT | RAW | GROSS + foodtype = MEAT | RAW | GORE /obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain/human/initialize_cooked_food(obj/item/reagent_containers/food/snacks/S, cooking_efficiency) ..() @@ -506,7 +506,7 @@ /obj/item/reagent_containers/food/snacks/meat/cutlet/plain/human tastes = list("tender meat" = 1) - foodtype = MEAT | GROSS + foodtype = MEAT | GORE /obj/item/reagent_containers/food/snacks/meat/cutlet/killertomato name = "killer tomato cutlet" diff --git a/code/modules/food_and_drinks/food/snacks_burgers.dm b/code/modules/food_and_drinks/food/snacks_burgers.dm index 5bff4f8edb27..44ee559641e3 100644 --- a/code/modules/food_and_drinks/food/snacks_burgers.dm +++ b/code/modules/food_and_drinks/food/snacks_burgers.dm @@ -33,7 +33,7 @@ desc = "A bloody burger." bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("bun" = 2, "long pig" = 4) - foodtype = MEAT | GRAIN | GROSS + foodtype = MEAT | GRAIN | GORE /obj/item/reagent_containers/food/snacks/burger/human/CheckParts(list/parts_list) ..() @@ -52,7 +52,7 @@ name = "corgi burger" desc = "You monster." bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 5) - foodtype = GRAIN | MEAT | GROSS + foodtype = GRAIN | MEAT | GORE /obj/item/reagent_containers/food/snacks/burger/appendix name = "appendix burger" @@ -60,7 +60,7 @@ bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) icon_state = "appendixburger" tastes = list("bun" = 4, "grass" = 2) - foodtype = GRAIN | MEAT | GROSS + foodtype = GRAIN | MEAT | GORE /obj/item/reagent_containers/food/snacks/burger/fish name = "fillet -o- carp sandwich" @@ -133,7 +133,7 @@ bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/medicine/mannitol = 6, /datum/reagent/consumable/nutriment/vitamin = 5) list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/medicine/mannitol = 5, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("bun" = 4, "brains" = 2) - foodtype = GRAIN | MEAT | GROSS + foodtype = GRAIN | MEAT | GORE /obj/item/reagent_containers/food/snacks/burger/ghost name = "ghost burger" @@ -305,7 +305,7 @@ desc = "Pretty much what you'd expect..." icon_state = "ratburger" bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - foodtype = GRAIN | MEAT | GROSS + foodtype = GRAIN | MEAT | GORE /obj/item/reagent_containers/food/snacks/burger/baseball name = "home run baseball burger" diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index 515ef35bd882..78999078193c 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -321,7 +321,7 @@ /obj/item/reagent_containers/food/snacks/boiledspiderleg name = "boiled spider leg" - desc = "A giant spider's leg that's still twitching after being cooked. Gross!" + desc = "A giant spider's leg that's still twitching after being cooked. Yum!" //Its cooked and not GORE, so it shouldnt imply that its gross to eat icon_state = "spiderlegcooked" trash = /obj/item/trash/plate bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/capsaicin = 2, /datum/reagent/consumable/nutriment/vitamin = 2) @@ -414,7 +414,7 @@ desc = "A human meat, on a stick." bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("tender meat" = 3, "metal" = 1) - foodtype = MEAT | GROSS + foodtype = MEAT | GORE /obj/item/reagent_containers/food/snacks/kebab/monkey name = "meat-kebab" @@ -436,7 +436,7 @@ desc = "Severed lizard tail on a stick." bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("meat" = 8, "metal" = 4, "scales" = 1) - foodtype = MEAT + foodtype = MEAT // NOT GORE, tastes delicious! /obj/item/reagent_containers/food/snacks/kebab/rat name = "rat-kebab" @@ -445,7 +445,7 @@ w_class = WEIGHT_CLASS_NORMAL list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("rat meat" = 1, "metal" = 1) - foodtype = MEAT | GROSS + foodtype = MEAT | GORE /obj/item/reagent_containers/food/snacks/kebab/rat/double name = "double rat-kebab" diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index 6cedb2a98142..d060dc1c2969 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -76,7 +76,7 @@ bonus_reagents = list(/datum/reagent/consumable/ketchup = 1) list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/ketchup = 2) tastes = list("meat" = 1) - foodtype = JUNKFOOD | MEAT | GROSS | FRIED | BREAKFAST + foodtype = JUNKFOOD | MEAT | GORE | FRIED | BREAKFAST is_decorated = TRUE /obj/item/reagent_containers/food/snacks/donut/berry @@ -377,13 +377,14 @@ /obj/item/reagent_containers/food/snacks/soylentgreen name = "\improper Soylent Green" - desc = "Not made of people. Honest." //Totally people. + desc = "Not made of people. Honest*." //Totally people. icon_state = "soylent_green" trash = /obj/item/trash/waffles bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#9ACD32" tastes = list("waffles" = 7, "people" = 1) + // The wafers are supposed to be flavorful and nutritious in the movie. They shouldn't be gross in a dystopian future where the chef regularly feeds people from the morgue to you. foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/soylenviridians diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index 3933ff4b233a..c7bcf963faf2 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -54,7 +54,7 @@ bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/blood = 10, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("iron" = 1) - foodtype = GROSS + foodtype = GORE //its literally blood /obj/item/reagent_containers/food/snacks/soup/wingfangchu name = "wing fang chu" @@ -157,7 +157,7 @@ icon_state = "eyeballsoup" bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/liquidgibs = 3) tastes = list("tomato" = 1, "squirming" = 1) - foodtype = MEAT | GROSS + foodtype = MEAT | GORE /obj/item/reagent_containers/food/snacks/soup/milo name = "milosoup" diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index c7486730d7bb..af19f1316ce2 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -8,7 +8,7 @@ mutantstomach = /obj/item/organ/stomach/fly meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/fly disliked_food = null - liked_food = GROSS + liked_food = GORE | RAW // Sure, the raw... the bloody... but I think stuff GROSS, like baseball burgers, are liked changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT species_language_holder = /datum/language_holder/fly diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index dc671c736e69..885be6f5886a 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -7,7 +7,7 @@ mutant_bodyparts = list("ears", "tail_human") use_skintones = TRUE skinned_type = /obj/item/stack/sheet/animalhide/human - disliked_food = GROSS | RAW + disliked_food = GROSS | RAW | CLOTH liked_food = JUNKFOOD | FRIED | SUGAR changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT loreblurb = "Mostly hairless mammalians. Their home system, Sol, lies in a sort of \"bluespace dead-zone\" that blocks anything from entering or exiting Sol's dead-zone through bluespace without a relay. While it leaves Sol extremely well-defended, it meant that they went unnoticed and uncontacted until they were themselves able to breach it." diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 94cd1523344a..7dcfb31f1e8a 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -14,7 +14,7 @@ damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs var/datum/action/innate/humanoid_customization/humanoid_customization - liked_food = MEAT + liked_food = MEAT | GORE // Spliced with humans, they still never lost their carnivorous drive disliked_food = NONE toxic_food = NONE coldmod = 6 // = 3x cold damage diff --git a/code/modules/mob/living/carbon/human/species_types/kepori.dm b/code/modules/mob/living/carbon/human/species_types/kepori.dm index 469c012a2d9d..5693c646cf3f 100644 --- a/code/modules/mob/living/carbon/human/species_types/kepori.dm +++ b/code/modules/mob/living/carbon/human/species_types/kepori.dm @@ -7,8 +7,8 @@ mutant_bodyparts = list("kepori_body_feathers", "kepori_tail_feathers", "kepori_feathers") default_features = list("mcolor" = "0F0", "wings" = "None", "kepori_feathers" = "Plain", "kepori_body_feathers" = "Plain", "kepori_tail_feathers" = "Fan", "body_size" = "Normal") meat = /obj/item/reagent_containers/food/snacks/meat/slab/chicken - disliked_food = GROSS | FRIED - liked_food = MEAT + disliked_food = FRIED | GROSS | CLOTH + liked_food = MEAT | GORE changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT loreblurb = "Kepori are a species covered in feathers vaguely reminiscent of earth’s extinct troodontidae. They’re small and sometimes seen as weak by other species due to their hollow bones but make up for that in speed and reflexes. Those found in space are commonly known as rollaways. They tend to woop when excited, scared, or for any other reason at all." attack_verb = "slash" diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 1391e33ee7c0..141efed98e12 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -18,8 +18,8 @@ meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard skinned_type = /obj/item/stack/sheet/animalhide/lizard exotic_bloodtype = "L" - disliked_food = GRAIN | DAIRY - liked_food = GROSS | MEAT + disliked_food = GRAIN | DAIRY | CLOTH | GROSS + liked_food = GORE | MEAT inert_mutation = FIREBREATH deathsound = 'sound/voice/lizard/deathsound.ogg' wings_icons = list("Dragon") diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index d284224c37d0..02ddf79f6bc4 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -11,9 +11,9 @@ attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/moth - liked_food = FRUIT | SUGAR + liked_food = FRUIT | SUGAR | CLOTH disliked_food = GROSS - toxic_food = MEAT | RAW + toxic_food = MEAT | RAW | GORE mutanteyes = /obj/item/organ/eyes/compound //WS Edit - Compound eyes mutanttongue = /obj/item/organ/tongue/moth //WS Edit - Insectoid language changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 6d14741c13b6..daa645a662a8 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -14,7 +14,7 @@ heatmod = 1.5 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant disliked_food = MEAT | DAIRY - liked_food = VEGETABLES | FRUIT | GRAIN + liked_food = VEGETABLES | FRUIT | GRAIN | CLOTH //cannibals apparentely changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT species_language_holder = /datum/language_holder/plant diff --git a/code/modules/mob/living/carbon/human/species_types/spider.dm b/code/modules/mob/living/carbon/human/species_types/spider.dm index 0e6082b9d87d..84faffde6ca2 100644 --- a/code/modules/mob/living/carbon/human/species_types/spider.dm +++ b/code/modules/mob/living/carbon/human/species_types/spider.dm @@ -51,7 +51,7 @@ GLOBAL_LIST_INIT(spider_last, world.file2list("strings/names/spider_last.txt")) attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/spider - liked_food = MEAT | RAW + liked_food = MEAT | RAW | GORE // Regular spiders literally liquify the insides of their prey and drink em like a smoothie. I think this fits disliked_food = FRUIT | GROSS toxic_food = VEGETABLES | DAIRY | CLOTH mutanteyes = /obj/item/organ/eyes/night_vision/spider diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 4f9aea033461..48f84240c5ac 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -274,7 +274,7 @@ GLOBAL_VAR_INIT(mouse_killed, 0) bitesize = 3 eatverb = "devour" list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) - foodtype = GROSS | MEAT | RAW + foodtype = GORE | MEAT | RAW grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5) /obj/item/reagent_containers/food/snacks/deadmouse/examine(mob/user) diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index c87b82091597..d079fbed4ce4 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -10,6 +10,10 @@ #define BEE_POLLINATE_PEST_CHANCE 33 #define BEE_POLLINATE_POTENCY_CHANCE 50 +/* For when we makes bees edible lmao (NEWFOOD) +#define BEE_FOODGROUPS RAW | MEAT | GORE /*| BUGS*/ +*/ + /mob/living/simple_animal/hostile/poison/bees name = "bee" desc = "Buzzy buzzy bee, stingy sti- Ouch!" diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 264574c476e4..51d857aaeff6 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -38,7 +38,7 @@ /obj/item/organ/Initialize() . = ..() if(organ_flags & ORGAN_EDIBLE) - AddComponent(/datum/component/edible, food_reagents, null, RAW | MEAT | GROSS, null, 10, null, null, null, CALLBACK(src, .proc/OnEatFrom)) + AddComponent(/datum/component/edible, food_reagents, null, RAW | MEAT | GORE, null, 10, null, null, null, CALLBACK(src, .proc/OnEatFrom)) ///When you take a bite you cant jam it in for surgery anymore. /obj/item/organ/proc/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE) From e613f212f723bbf5bc30640d3b15aeebb8bdac2e Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 19 Sep 2023 15:41:52 -0500 Subject: [PATCH 06/13] Automatic changelog generation for PR #2359 [ci skip] --- html/changelogs/AutoChangeLog-pr-2359.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2359.yml diff --git a/html/changelogs/AutoChangeLog-pr-2359.yml b/html/changelogs/AutoChangeLog-pr-2359.yml new file mode 100644 index 000000000000..0d3d5d529348 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2359.yml @@ -0,0 +1,11 @@ +author: RKz, Jacquerel +delete-after: true +changes: + - rscadd: New foodtype, GORE. Split from GROSS, GORE foodtype will be replacing + it where the food in particular resembles a corpse or organ. GROSS should only + apply to inedible or rotting foods. (baseball burgers) + - balance: All butchered player species are considered to be gore, only preferred + by Lizards, Arachnids, Kepori, Slimepeople and Flies. If you like the taste + of your fellow(or rival) crew, prepare accordingly. + - balance: Moved food preferences around to make more sense with the current system. + Nothing drastic, but species liked foods should be much more immersive in general. From 0163e694d99b046b7afe53ce862911b3665e48b5 Mon Sep 17 00:00:00 2001 From: spockye <79304582+spockye@users.noreply.github.com> Date: Tue, 19 Sep 2023 22:28:18 +0200 Subject: [PATCH 07/13] i fucked up (disco edition) (#2326) forgot to update the icon state ## About The Pull Request forgot to update the icon state, making it a error in the mapmaker THIS IS NOT A GOOD FIX, SOMEONE SHOULD FIX THIS FOR REAL LATER (im too dumb) ## Why It's Good For The Game makes the jukeboxes APPEAR in the mapper ## Changelog :cl: fix: temp fixed the jukebox(with subtypes) so they appear in the mapmaker /:cl: --- code/game/machinery/dance_machine.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index dc66649c0aa9..3fd9d90db45e 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -2,7 +2,7 @@ name = "jukebox" desc = "A classic music player." icon = 'icons/obj/stationobjs.dmi' - icon_state = "jukebox" + icon_state = "jukebox-" verb_say = "states" density = TRUE var/active = FALSE @@ -15,14 +15,14 @@ /obj/machinery/jukebox/boombox name = "boombox" desc = "A theoretically-portable music player that's much larger and heavier than it really needs to be." - icon_state = "boombox" + icon_state = "boombox-" density = FALSE /obj/machinery/jukebox/disco name = "radiant dance machine mark IV" desc = "The first three prototypes were discontinued after mass casualty incidents." - icon_state = "disco" + icon_state = "disco-" anchored = FALSE var/list/spotlights = list() var/list/sparkles = list() From 4a3b25941a236b0365f4dbef95abc1cc9337d761 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 19 Sep 2023 17:05:10 -0500 Subject: [PATCH 08/13] Automatic changelog generation for PR #2326 [ci skip] --- html/changelogs/AutoChangeLog-pr-2326.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2326.yml diff --git a/html/changelogs/AutoChangeLog-pr-2326.yml b/html/changelogs/AutoChangeLog-pr-2326.yml new file mode 100644 index 000000000000..2195efe659f8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2326.yml @@ -0,0 +1,4 @@ +author: spockye +delete-after: true +changes: + - bugfix: temp fixed the jukebox(with subtypes) so they appear in the mapmaker From 070c9e21330efaa71d2c28980eb652dd19ba0a57 Mon Sep 17 00:00:00 2001 From: Skrem_7 <98909416+Skrem7@users.noreply.github.com> Date: Tue, 19 Sep 2023 16:30:13 -0500 Subject: [PATCH 09/13] Eyepatch Flopping + Double Eyepatch (#2362) ## About The Pull Request You can now alt+click any eyepatch (normal, thermal, sechud) to switch the side that it covers. Examine tells you which side it currently covers. You can also add another eyepatch to an eyepatch (only normal because I don't want to make special ones for the other two types when the first will probably see the light of day once) to make a DOUBLE EYEPATCH, aka a blindfold. Interacting with the blindfold in hand gives you the two eyepatches back. ## Why It's Good For The Game Switching eyepatch to decide which side you wear it on is just... good, because character and like, stuff. Double eyepatch is a full-on meme that makes me giggle a LITTLE but I'm fine with it not existing. ## Changelog :cl: add: Adds the double eyepatch, a blindfold made by adding a normal eyepatch to another tweak: Eyepatches can now swap sides with ALT+CLICK /:cl: --- code/modules/clothing/glasses/_glasses.dm | 59 ++++++++++++++++++++-- code/modules/clothing/glasses/hud.dm | 15 +++++- icons/mob/clothing/eyes.dmi | Bin 12239 -> 12665 bytes icons/obj/clothing/glasses.dmi | Bin 16680 -> 17097 bytes 4 files changed, 69 insertions(+), 5 deletions(-) diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index a94a18bce614..f4c2a5a27f4e 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -128,8 +128,31 @@ /obj/item/clothing/glasses/eyepatch name = "eyepatch" desc = "Yarr." - icon_state = "eyepatch" - item_state = "eyepatch" + icon_state = "eyepatch-0" + item_state = "eyepatch-0" + var/flipped = FALSE + +/obj/item/clothing/glasses/eyepatch/AltClick(mob/user) + . = ..() + flipped = !flipped + to_chat(user, "You shift the eyepatch to cover the [flipped == 0 ? "right" : "left"] eye.") + icon_state = "eyepatch-[flipped]" + item_state = "eyepatch-[flipped]" + update_appearance() + +/obj/item/clothing/glasses/eyepatch/examine(mob/user) + . = ..() + . += "It is currently aligned to the [flipped == 0 ? "right" : "left"] side." + +/obj/item/clothing/glasses/eyepatch/attackby(obj/item/I, mob/user, params) + . = ..() + if(istype(I, /obj/item/clothing/glasses/eyepatch)) + var/obj/item/clothing/glasses/eyepatch/old_patch = I + var/obj/item/clothing/glasses/blindfold/eyepatch/double_patch = new/obj/item/clothing/glasses/blindfold/eyepatch + double_patch.forceMove(user.drop_location()) + to_chat(user, "You combine the eyepatches with a knot.") + old_patch.Destroy() + Destroy() /obj/item/clothing/glasses/monocle name = "monocle" @@ -348,6 +371,21 @@ M.color = "#[H.eye_color]" . += M +/obj/item/clothing/glasses/blindfold/eyepatch + name = "double eyepatch" + desc = "For those pirates who've been at it a while. May interfere with navigating ability." + icon_state = "eyepatchd" + item_state = "eyepatchd" + +/obj/item/clothing/glasses/blindfold/eyepatch/attack_self(mob/user) + . = ..() + var/obj/item/clothing/glasses/eyepatch/patch_one = new/obj/item/clothing/glasses/eyepatch + var/obj/item/clothing/glasses/eyepatch/patch_two = new/obj/item/clothing/glasses/eyepatch + patch_one.forceMove(user.drop_location()) + patch_two.forceMove(user.drop_location()) + to_chat(user, "You undo the knot on the eyepatches.") + Destroy() + /obj/item/clothing/glasses/sunglasses/big desc = "Strangely ancient technology used to help provide rudimentary eye cover. Larger than average enhanced shielding blocks flashes." icon_state = "bigsunglasses" @@ -411,8 +449,21 @@ /obj/item/clothing/glasses/thermal/eyepatch name = "optical thermal eyepatch" desc = "An eyepatch with built-in thermal optics." - icon_state = "eyepatch" - item_state = "eyepatch" + icon_state = "eyepatch-0" + item_state = "eyepatch-0" + var/flipped = FALSE + +/obj/item/clothing/glasses/thermal/eyepatch/AltClick(mob/user) + . = ..() + flipped = !flipped + to_chat(user, "You shift the eyepatch to cover the [flipped == 0 ? "right" : "left"] eye.") + icon_state = "eyepatch-[flipped]" + item_state = "eyepatch-[flipped]" + update_appearance() + +/obj/item/clothing/glasses/thermal/eyepatch/examine(mob/user) + . = ..() + . += "It is currently aligned to the [flipped == 0 ? "right" : "left"] side." /obj/item/clothing/glasses/cold name = "cold goggles" diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index bd5cedd2e3d7..fd802cf55ec6 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -128,7 +128,20 @@ /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch name = "eyepatch HUD" desc = "A heads-up display that connects directly to the optical nerve of the user, replacing the need for that useless eyeball." - icon_state = "hudpatch" + icon_state = "hudpatch-0" + var/flipped = FALSE + +/obj/item/clothing/glasses/hud/security/sunglasses/eyepatch/AltClick(mob/user) + . = ..() + flipped = !flipped + to_chat(user, "You shift the hudpatch to cover the [flipped == 0 ? "right" : "left"] eye.") + icon_state = "hudpatch-[flipped]" + item_state = "hudpatch-[flipped]" + update_appearance() + +/obj/item/clothing/glasses/hud/security/sunglasses/eyepatch/examine(mob/user) + . = ..() + . += "It is currently aligned to the [flipped == 0 ? "right" : "left"] side." /obj/item/clothing/glasses/hud/security/sunglasses name = "security HUDSunglasses" diff --git a/icons/mob/clothing/eyes.dmi b/icons/mob/clothing/eyes.dmi index bdfe41995f6d765e4bc55b1e0e3787b24e7cfa6a..9af8d7dc8bba59121c8b120229b0d679d06ca1df 100644 GIT binary patch literal 12665 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 `a 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 literal 12239 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 V3vr-rfd2sjkQSE{D-+QV_+M=zcEtby From 79787ad60a1e671e7a4a64f26c44861d5546b46c Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 19 Sep 2023 17:30:33 -0500 Subject: [PATCH 10/13] Automatic changelog generation for PR #2362 [ci skip] --- html/changelogs/AutoChangeLog-pr-2362.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2362.yml diff --git a/html/changelogs/AutoChangeLog-pr-2362.yml b/html/changelogs/AutoChangeLog-pr-2362.yml new file mode 100644 index 000000000000..26d6dcf2a65b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2362.yml @@ -0,0 +1,6 @@ +author: Skrem7 +delete-after: true +changes: + - rscadd: Adds the double eyepatch, a blindfold made by adding a normal eyepatch + to another + - tweak: Eyepatches can now swap sides with ALT+CLICK From 22770b482d3979b45aafb01db129cd549c540255 Mon Sep 17 00:00:00 2001 From: Skrem_7 <98909416+Skrem7@users.noreply.github.com> Date: Tue, 19 Sep 2023 17:05:37 -0500 Subject: [PATCH 11/13] cybernetic organs no longer permanently begin to shut down (#2335) ## About The Pull Request Removes the chance of an EMP effect shutting down cybernetic organs based on its intensity aka rng ## Why It's Good For The Game I would prefer to not force IPCs to have to ahelp for revival if they get hit by one loose ion (gross) ## Changelog :cl: balance: Cybernetic organs can no longer require replacement due to EMPs (they do not suffer permanent damage) /:cl: --- code/modules/surgery/organs/heart.dm | 6 ------ code/modules/surgery/organs/liver.dm | 2 -- code/modules/surgery/organs/lungs.dm | 2 -- code/modules/surgery/organs/stomach.dm | 2 -- 4 files changed, 12 deletions(-) diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index dd6d8efc1065..cafcc0196b1b 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -217,12 +217,6 @@ owner.Dizzy(10) owner.losebreath += 10 severe_cooldown = world.time + 20 SECONDS - if(prob(emp_vulnerability/severity)) //Chance of permanent effects - organ_flags = ORGAN_SYNTHETIC_EMP //Starts organ faliure - gonna need replacing soon. - Stop() - owner.visible_message("[owner] clutches at [owner.p_their()] chest as if [owner.p_their()] heart is stopping!", \ - "You feel a terrible pain in your chest, as if your heart has stopped!") - addtimer(CALLBACK(src, .proc/Restart), 10 SECONDS) /obj/item/organ/heart/cybernetic/on_life() . = ..() diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index d8e10731da30..b2812d941975 100644 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -116,8 +116,6 @@ if(world.time > severe_cooldown) //So we cant just spam emp to kill people. owner.adjustToxLoss(10) severe_cooldown = world.time + 10 SECONDS - if(prob(emp_vulnerability/severity)) //Chance of permanent effects - organ_flags = ORGAN_SYNTHETIC_EMP //Starts organ faliure - gonna need replacing soon. /obj/item/organ/liver/cybernetic/upgraded/ipc icon = 'icons/obj/surgery.dmi' diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index fa928c1e2053..fc5de4be3049 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -419,8 +419,6 @@ if(world.time > severe_cooldown) //So we cant just spam emp to kill people. owner.losebreath += 20 severe_cooldown = world.time + 30 SECONDS - if(prob(emp_vulnerability/severity)) //Chance of permanent effects - organ_flags = ORGAN_SYNTHETIC_EMP //Starts organ faliure - gonna need replacing soon. #undef PP #undef PP_MOLES diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm index 615428d962b5..10cc049eb806 100644 --- a/code/modules/surgery/organs/stomach.dm +++ b/code/modules/surgery/organs/stomach.dm @@ -160,8 +160,6 @@ if(!COOLDOWN_FINISHED(src, severe_cooldown)) //So we cant just spam emp to kill people. owner.vomit(stun = FALSE) COOLDOWN_START(src, severe_cooldown, 10 SECONDS) - if(prob(emp_vulnerability/severity)) //Chance of permanent effects - organ_flags |= ORGAN_SYNTHETIC_EMP //Starts organ faliure - gonna need replacing soon. //WS Begin - IPCs From 3b560c22a9ddf73100db37571d9d0a1138e71aaa Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 19 Sep 2023 17:55:15 -0500 Subject: [PATCH 12/13] Automatic changelog generation for PR #2335 [ci skip] --- html/changelogs/AutoChangeLog-pr-2335.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2335.yml diff --git a/html/changelogs/AutoChangeLog-pr-2335.yml b/html/changelogs/AutoChangeLog-pr-2335.yml new file mode 100644 index 000000000000..6bf9cfe27cca --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2335.yml @@ -0,0 +1,5 @@ +author: Skrem7 +delete-after: true +changes: + - balance: Cybernetic organs can no longer require replacement due to EMPs (they + do not suffer permanent damage) From 604248b149ed8124b5c24c1afbe6d3a7f5a93605 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 20 Sep 2023 00:45:44 +0000 Subject: [PATCH 13/13] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-2326.yml | 4 ---- html/changelogs/AutoChangeLog-pr-2335.yml | 5 ----- html/changelogs/AutoChangeLog-pr-2359.yml | 11 ----------- html/changelogs/AutoChangeLog-pr-2362.yml | 6 ------ html/changelogs/archive/2023-09.yml | 18 ++++++++++++++++++ 5 files changed, 18 insertions(+), 26 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2326.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2335.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2359.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2362.yml diff --git a/html/changelogs/AutoChangeLog-pr-2326.yml b/html/changelogs/AutoChangeLog-pr-2326.yml deleted file mode 100644 index 2195efe659f8..000000000000 --- a/html/changelogs/AutoChangeLog-pr-2326.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: spockye -delete-after: true -changes: - - bugfix: temp fixed the jukebox(with subtypes) so they appear in the mapmaker diff --git a/html/changelogs/AutoChangeLog-pr-2335.yml b/html/changelogs/AutoChangeLog-pr-2335.yml deleted file mode 100644 index 6bf9cfe27cca..000000000000 --- a/html/changelogs/AutoChangeLog-pr-2335.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Skrem7 -delete-after: true -changes: - - balance: Cybernetic organs can no longer require replacement due to EMPs (they - do not suffer permanent damage) diff --git a/html/changelogs/AutoChangeLog-pr-2359.yml b/html/changelogs/AutoChangeLog-pr-2359.yml deleted file mode 100644 index 0d3d5d529348..000000000000 --- a/html/changelogs/AutoChangeLog-pr-2359.yml +++ /dev/null @@ -1,11 +0,0 @@ -author: RKz, Jacquerel -delete-after: true -changes: - - rscadd: New foodtype, GORE. Split from GROSS, GORE foodtype will be replacing - it where the food in particular resembles a corpse or organ. GROSS should only - apply to inedible or rotting foods. (baseball burgers) - - balance: All butchered player species are considered to be gore, only preferred - by Lizards, Arachnids, Kepori, Slimepeople and Flies. If you like the taste - of your fellow(or rival) crew, prepare accordingly. - - balance: Moved food preferences around to make more sense with the current system. - Nothing drastic, but species liked foods should be much more immersive in general. diff --git a/html/changelogs/AutoChangeLog-pr-2362.yml b/html/changelogs/AutoChangeLog-pr-2362.yml deleted file mode 100644 index 26d6dcf2a65b..000000000000 --- a/html/changelogs/AutoChangeLog-pr-2362.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: Skrem7 -delete-after: true -changes: - - rscadd: Adds the double eyepatch, a blindfold made by adding a normal eyepatch - to another - - tweak: Eyepatches can now swap sides with ALT+CLICK diff --git a/html/changelogs/archive/2023-09.yml b/html/changelogs/archive/2023-09.yml index d281e2a39f3f..ded7a537e32f 100644 --- a/html/changelogs/archive/2023-09.yml +++ b/html/changelogs/archive/2023-09.yml @@ -117,3 +117,21 @@ - spellcheck: Assualt is gone. - code_imp: Repaths/renames most ballistic ammo pathing to maintain consistency or take advantage of inherits, when possible. +2023-09-20: + RKz, Jacquerel: + - rscadd: New foodtype, GORE. Split from GROSS, GORE foodtype will be replacing + it where the food in particular resembles a corpse or organ. GROSS should only + apply to inedible or rotting foods. (baseball burgers) + - balance: All butchered player species are considered to be gore, only preferred + by Lizards, Arachnids, Kepori, Slimepeople and Flies. If you like the taste + of your fellow(or rival) crew, prepare accordingly. + - balance: Moved food preferences around to make more sense with the current system. + Nothing drastic, but species liked foods should be much more immersive in general. + Skrem7: + - rscadd: Adds the double eyepatch, a blindfold made by adding a normal eyepatch + to another + - tweak: Eyepatches can now swap sides with ALT+CLICK + - balance: Cybernetic organs can no longer require replacement due to EMPs (they + do not suffer permanent damage) + spockye: + - bugfix: temp fixed the jukebox(with subtypes) so they appear in the mapmaker