Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New syndie derringer, .38 dart & EMP bullets. Nerfs .38 specialty ammos. #9811

Merged
merged 12 commits into from
Sep 23, 2023

Conversation

VickiMorris
Copy link
Contributor

@VickiMorris VickiMorris commented Sep 9, 2023

About The Pull Request

This adds an additional firearm to the Syndicate uplink, the 'Infiltrator' Coat Pistol, a double-barreled derringer chambered in .38-special (The best cartridge in existence) and available for 4 TC (loaded with Match ammo, with an additional speedloader. 2 + 6 shots for your purchase). It is small in size, has "60%" volume per shot (compared to the Stechkin at 80), cannot be silenced, and can be quickloaded using .38 speedloaders.

In addition to this, new .38 "Blisterpack" rounds have been added as a smaller equivalent to 12ga dart slugs. They hold 10 units each (compared to 30u), deal only 4 brute on hit (compared to 6 brute), and similarly do not have any piercing capabilities.

Now introducing .38 "BLK_OUT" rounds, a low damage specialized round that functions as a localized ranged EMP; weaker than most other Syndie EMP gear (Grenades & Implant), and not as stealthy (Flashlight), but allowing ranged applications similar to the ion rifle/carbine.

Four SIX ammo purchases are available in the uplink alongside the Coat Pistol; standard, Iceblox, Hot Shot, Blister, BLK_OUT, and Dumdum are all available for 1 TC each (6 shots on a ready-to-use speed loader.)


After discussing and reviewing the .38 ammo types available, the damage of Iceblox and Hot Shot rounds has been reduced, and the effect of Hot Shot rounds are heavily reduced. Iceblox still reduces the victim's temperature by 100 degrees, but deals 15 instead of 20 damage. Hot Shot now deals 12 instead of 20 damage, and only applies 2 fire stacks instead of 6 as the later is enough to husk with a single shot.

Why It's Good For The Game

This adds a cheaper "hold-out" style sidearm with a relatively easy to acquire ammo type on the station. The sheer variety of ammo available for the Detective's revolver gives it a lot of utility as a DoT or CC weapon, and having various types of bouncing ammunition can reward the user with landing trickshots. The tweaks to Iceblox and Hot Shot preserve their special qualities while not making them a straight upgrade to standard .38 bullets.

This also fixes embedding/shrapnel with any projectiles that utilize it, as there was no code that made use of projectile shrapnel actively. Any shrapnel type objects will also be deleted upon removal to prevent someone from throwing a loose bullet/frag grenade shard and having it embed as if it were fired from a gun. If this weapon/other changes are not wanted, I will happily move this fix onto its own PR so it isn't a forced bundle.

This has since been moved to a different PR, to not spread this one too thin --> #9820

Testing Photographs and Procedure

Screenshots&Videos

image
image
image

Coat.Pistol.mp4
BLK_OUT.Rounds.mp4

latest revision of Derringer spread, sound, and other tweaks shown in below video (12 MB, didn't want to upload to github). Used alongside Stechkin and Revolver to show comparable sound, damage, and spread while wielded and unwielded. Note, this video does not have the latest upsteam PRs, so Dumdum rounds do not embed in this video as they would in game.

https://cdn.discordapp.com/attachments/1096069498529915012/1153306763483947018/Derringer_Compilation.mp4

Changelog

🆑Impish_Delights
add: Syndicate Coat Pistol; Cheap Sidearm w/ lots of utility focused ammo
add: Coat Pistol, .38 standard, DumDum, HotShot, Iceblox, Blister, and BLK_OUT ammo available in Syndie uplink
add: .38 Blister rounds; 10u dart projectiles, similar to shotgun dart rounds
add: .38 BLK_OUT rounds; low damage localized EMP rounds
imageadd: Added sprite for Coat Pistol & .38 Blister rounds
balance: Iceblox .38 deal less damage (20 -> 15)
balance: Hot Shot .38 deal less damage (20 -> 12) and less fire stacks (6 -> 2)
add: Adds 'Wild Spread' and 'Wild Factor' variables to guns, allows 'minimum' recoil to be set
add: Enables 'Wild Spread' on Coat Pistol only, all other guns unaffected
/:cl:

@VickiMorris VickiMorris changed the title Added syndie derringer, uplink entries, and .38 dart bullets New syndie derringer, uplink entries, and .38 dart bullets Sep 9, 2023
@VickiMorris VickiMorris marked this pull request as ready for review September 9, 2023 15:09
Drops Iceblox damage from 20 to 15
Drops Hot Shot damage from 20 to 12
Reduces Hot Shot fire stacks from 6 to 2
Allows projectiles to properly spawn & embed shrapnel
Shrapnel will qdel when removed (so bullets can't be thrown and reembed)
@VickiMorris VickiMorris changed the title New syndie derringer, uplink entries, and .38 dart bullets New syndie derringer, .38 dart bullets. Fixes bullet embedding. Nerfs .38 specialty ammos. Sep 9, 2023
Derringer has 20 innate spread
Special weapon weight define added (EX_LIGHT) with value of 0
EX_LIGHT weapons only have 20 additional spread when not wielded/two-handed
@Fronsis
Copy link

Fronsis commented Sep 9, 2023

Hmm how many shots does it take to take down a regular officer, a hos and someone with bulletproof armor?

Also does this affect the hot-cold shots from the det damage wise?

@VickiMorris
Copy link
Contributor Author

Hmm how many shots does it take to take down a regular officer, a hos and someone with bulletproof armor?

Also does this affect the hot-cold shots from the det damage wise?

For the HoS and Officer, they both took 18 damage per shot (standard/match .38) when targeting both the chest, and head (assuming default round-start armor) which is 6 shots to crit. A bullet proof vest lowers this damage to 10 per shot (chest only), requiring 10 shots to crit. This is identical to what it would be with the Detective's revolver.

Hot Shot will now do 12 brute base (originally 20), followed by 90 burn (originally enough to HUSK PEOPLE) if they're allowed to burn for the entirety of the duration. This is still enough to crit in a single shot as opposed to husking with a single shot, if not extinguished.

Iceblox will deal 15 brute base (originally 20), followed by 4 burn. Keep in mind, this drops the victim's body temperature to around -100, allowing you to land follow-up shots easier and prevent fleeing.

Adds TRUE to skipcatch for hitby proc on shrapnel.
Adds additional comments.
@VickiMorris
Copy link
Contributor Author

I am stuck in hell, bullets only embed in your chest, no matter where you're shot
image

@VickiMorris
Copy link
Contributor Author

Hot Shot will now do 12 brute base (originally 20), followed by 90 burn (originally enough to HUSK PEOPLE) if they're allowed to burn for the entirety of the duration. This is still enough to crit in a single shot as opposed to husking with a single shot, if not extinguished.

I was curious how much damage is actually done by 6 fire stacks if left to burn for the entirety of the duration and it's bad; from ignition to extinguish is ~380 burn damage, finalizing on 388 after returning to normal body temperature (assuming no armor, in a room temperature space station, while standing still).
image

@Fronsis
Copy link

Fronsis commented Sep 10, 2023

I believe it would be cool if the empty casing/shrapnel would be able to fall from the body, it helps with evidence, i'm still a little worried the different ammo types would end up surpassing the .357 and 10mm in terms of meta, even if it's 2 bullets

Do they still retain the spread from having one item on the other hand (as showcased in the testing evidence it doesn't seem to have too much spread) or you tweaked the spread values?

Also this is very nitpicky but could you maybe re-size the speedloader to be a little smaller so it ''matches'' the derringer size and it looks a lil different from det/.357?

@VickiMorris
Copy link
Contributor Author

I am planning on moving the shrapnel/embedding code changes to a second PR, as it is more a separate bug-fix that should be implemented even if these other additions aren't wanted, but I could see about having the shrapnel lose the ability to embed after falling out of the person/being removed. That's the main reason to have it be deleted after removal, so you can't throw bullets into people.

I have tweaked the spread since that first video (which was a proof to show it working/in the shop), as seen below. The Derringer has a base spread of 20 (0 to 20 degrees) while wielded, and 40 when 1-handed. The Stechkin is 0 while wielded and 40 when 1-handed. I may bump this up further to 30 base spread, 50 one-handed spread; 60 is the spread for any "Medium Weight" gun, such as energy guns (laser guns have spread equivalent to the Stechkin while one-handed, for some reason)

(On a different topic of balance, the fact that spread gives the shot a chance to still be perfectly accurate is absurd, I feel there should be a floor based off the ceiling value, but that's not here nor there.)

Pistol.Spread.mp4

I could make special 2-bullet speedloaders for the Derringer to use, but this runs into a problem with how guns with internal magazines function (i.e. derringers, revolvers, and shotguns). The "speedloader" has no special functions and is identical to the 10mm boxes of ammo that can be printed from the lathe and used to instantly fill Stechkin clips. For the Derringer and Revolvers, because they have an internal magazine, it refills that instantly instead. I could write special code that has the Derringer refuse to load ammo from ammo boxes/speedloaders if that's preferred/wanted. (I presume this is also why there are not shotgun ammo boxes, as auto-loading a shotgun sounds monstrous.)

@VickiMorris VickiMorris changed the title New syndie derringer, .38 dart bullets. Fixes bullet embedding. Nerfs .38 specialty ammos. New syndie derringer, .38 dart bullets. Nerfs .38 specialty ammos. Sep 11, 2023
Removes embedding fixes/tweaks
Changes moved to different PR
@VickiMorris VickiMorris marked this pull request as draft September 12, 2023 04:54
Adds the wild_spread and wild_factor variables to guns, allowing them to set a minimum spread value instead of zero when calculating spread.
Defaults to FALSE & 0.25 respectively.
Sets wild_spread to TRUE for the derringer, and wild_factor to 0.4
@VickiMorris
Copy link
Contributor Author

VickiMorris commented Sep 12, 2023

Minimum spread test on the derringer, at 25% of maximum spread. After re-reading how spread is calculated, this does not change based off of handedness as that is calculated separately then added to gun spread.

Minimum.Spread.mp4

Modifies Derringer Spread stats once again; Innate Spread = 20 --> 18 | Wild Factor = 0.4 --> 0.7
Bonus spread now has a floor based off of the unwielded spread penalty.
Added debugging variant of the Derringer (12 shot internal magazine)
Removes WEAPON_EX_LIGHT = 0 define from combat.dm
Manually sets spread_unwielded on the derringer to 30 (up from 20)
Spread values now 18 / 48 / 0.7
@VickiMorris
Copy link
Contributor Author

Playing around with a very high minimum spread (~75%) has been very fruitful in balancing one-handed and two-handed differences in spread. With how spread is calculated (the final amount of spread is then multiplied by the dual_wield modifier and a random number from -0.5 to 0.5), this still can result in very low spread, but is much less likely.

Min.Spread.10.Wild.75.mp4

The example above is a test with 10 base spread, 40 unwielded spread, and a 75% minimum spread. The latest values (in current commit) are with 18 base spread, 48 unwielded spread, and a 70% minimum spread.

Blistershot .38 rounds now have green bullet tips from ALL 8 directions, instead of just one.
@VickiMorris VickiMorris marked this pull request as ready for review September 18, 2023 08:52
code/modules/uplink/uplink_items.dm Outdated Show resolved Hide resolved
code/modules/uplink/uplink_items.dm Outdated Show resolved Hide resolved
@@ -28,6 +28,32 @@
var/obj/item/suppressor/S = new(src)
install_suppressor(S)

/obj/item/gun/ballistic/automatic/pistol/der38
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a difficult to code but potentially cool suggestion, being able to hide this inside a suit or something so you can sneak it into prison with you would be cool. Of course this is only a suggestion and doesn't need to be completed before merging as it may need us to make the suit attachment thing a component.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was debating on making a special set of plain black gloves that can store it, akin to a wrist sling or something. If I wanted to make it attachable to a jumpsuit, I could see about poking around with accessory code and if it's possible to make it not display on examine text.

Adds .38 'BLK_OUT' cartridges; 8 brute damage, minor EMP effect (0 major, 2 minor range) on impact.
(3, 4 for Sniper EMP | 4, 10 for EMP Grenade | 3, 5 for EMP Implant)
Reduces price of all ammo types to 1 TC in uplink.
Removes 'Thermal Bundle'
Adds BLK_OUT, Iceblox, and Hot Shot to uplink.
@VickiMorris VickiMorris changed the title New syndie derringer, .38 dart bullets. Nerfs .38 specialty ammos. New syndie derringer, .38 dart & EMP bullets. Nerfs .38 specialty ammos. Sep 20, 2023
@VickiMorris
Copy link
Contributor Author

VickiMorris commented Sep 20, 2023

Damage as it stands for ammo types across the board, compared to an unarmored assistant, a security officer, and a seccie wearing a bulletproof vest. This assumes the shot was taken to the chest.

Standard / Match: 25 / 18 / 10
Rubber: 10 / 6 / 3
TRAC: 10 / 7 / 4
DumDum: 15 / 9 / 5 (No Embed)
Iceblox: 15 + 4 Burn / 11 + 4 / 6 + 1 (Effect Mitigated by Armor)
Hot Shot: 12 / 8 / 5 | + 6 Burn (~4 seconds of Burning)
Blister: 4 + Injection / 3 / 2
BLK_OUT: 8 / 6 / 3
BLK_OUT (IPC): 12 Brute, 60 Burn, 15 Toxin, Organ Damage (Heavy EMP Effect)
BLK_OUT (IPC AoE): 10 Brute, 30 Burn, 5 Toxin, Organ Damage (Light EMP Effect)

Changes their on_hit() to match the on_hit() function of the sniper EMP rounds.
@VickiMorris
Copy link
Contributor Author

Why is it runtiming AHHHHH (I will look at this when I'm back home)

Screenshot_20230920-155142

@PowerfulBacon
Copy link
Member

Not sure why the test was failing

@PowerfulBacon
Copy link
Member

If you are ready for a merge, I will merge it. If you wan't to add more things then let me know

@VickiMorris
Copy link
Contributor Author

Should be good to merge, I'll look into attachment as a component on a later PR and I don't wanna scope creep this any further. The accessory slot idea came up a bit fruitless in my poking around.

@PowerfulBacon PowerfulBacon added this pull request to the merge queue Sep 23, 2023
Merged via the queue into BeeStation:master with commit ab2f0d3 Sep 23, 2023
@VickiMorris VickiMorris deleted the syndieDerringer branch September 24, 2023 23:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants