Cataclysm-DDA
Cataclysm-DDA copied to clipboard
Bows should hold a loaded arrow instead of storing the arrow away when canceling a shot
Describe the bug
When using a bow, if a player presses f to line up a shot, he will take an arrow out of storage and prepare to fire. However, if a player presses f, and then cancels the shot, the character will prioritise placing the arrow back into storage regardless of the circumstances.
This has cost me many runs where a character will knock an arrow, but a zombie will get too close to shoot without serious damage and when trying to switch to melee the zombie will often kill you before you have a chance to draw your weapon. For instance, when using a loop of rope, canceling a shot takes 17 seconds before you are allowed your next turn and often this is enough to get severe bleeds on multiple limbs from just one tough zombie.
Attach save file
N/A
Steps to reproduce
- Make a character with any bow, any arrows, and using an inefficient arrow storage like loop of rope
- Press f to ready your shot
- Cancel the shot and watch the time fly
Expected behavior
I expect the character to still have the arrow loaded in the bow instead of stowing the arrow away. This functions much the same as any other gun and allows the player to drop the bow instantly when needing to switch to melee
Screenshots
No response
Versions and configuration
- OS: Linux
- OS Version: Distributor ID: Linuxmint; Description: Linux Mint 20.3; Release: 20.3; Codename: una;
- Game Version: d6ec466 [64-bit]
- Graphics Version: Tiles
- Game Language: System language []
- Mods loaded: [ Dark Days Ahead [dda], Disable NPC Needs [no_npc_food], Portal Storms Ignore NPCs [personal_portal_storms], No Fungal Growth [no_fungal_growth], Bionic Professions [package_bionic_professions], Stats Through Kills [stats_through_kills], Stats Through Skills [StatsThroughSkills] ]
Additional context
No response
For instance, when using a loop of rope, canceling a shot takes 17 seconds before you are allowed your next turn
So... don't do that? This is working as intended. You cannot simply store an arrow on a bow's drawstring, ready to go.
So... don't do that? This is working as intended.
Game doesn't ask what to do with an arrow, It goes straight to any valid container. Game should ask, the same way as with any other wielded item - i.e store, drop, holster.
Actually, I can see this working like certain containers, where the arrow will 'spill' out of the bow if it's not actively being held, but it can still be loaded?
So... don't do that? This is working as intended.
Game doesn't ask what to do with an arrow, It goes straight to any valid container. Game should ask, the same way as with any other wielded item - i.e store, drop, holster.
That would be a UX nightmare. I don't want to have a popup every single time I unload a ranged weapon, especially with how often this winds up happening for bows.
#71596 brought this issue up with gun magazines, and Kevin suggested a better solution, which is the same one we use for hauling - separate keybinds for "Reload and drop the old ammo" vs "reload and put the old ammo away."
Side note, instead of a prompt asking what you want to do with an empty magazine, we could have a seperate keybind for "reload and drop the old magazine" vs "reload and stash the old magazine".
Shooting a bow uses slightly different mechanics so it'd be a different keybind or a toggle somewhere, but that would be much better than seeing a popup every time.
loop of rope
Well there's your problem. Make a quiver! They're easier to craft than ever given that there's now a birchbark and pipe version. The loop of rope item is extremely shitty on purpose because it only really exists as a failsafe.
You cannot simply store an arrow on a bow's drawstring, ready to go.
Yes and no. There is another ways to prepare next arrow (and shooting, while moving too). For example https://youtu.be/mMBAztgY4Ss?si=rs2TJQGBgyTe5suD&t=863
At fact, in real world this is surely possible at some ways (not a newbie level for sure, but possible after practice). People can use not only Olympic archery style, others just exist being more practical for combat conditions...
Just 'simply store an arrow on a bow's drawstring' example: https://youtu.be/kj1rQWdA8AA?si=ekbx4a9NYqnwIy5C&t=68 https://youtu.be/kj1rQWdA8AA?si=XblDMwjJ9HlbBNFh&t=134 String nocks and string loop (for bowstring) just exist in real world, same for modified arrows itself https://i.postimg.cc/CMPNxKRH/11.jpg
Actually, I can see this working like certain containers, where the arrow will 'spill' out of the bow if it's not actively being held, but it can still be loaded?
Spilling would be preferable to having to wait to put the arrow back. Alternatively, you could just have a button in the 'f' firing menu that toggles whether you want your arrows to store on cancel or drop on cancel
For instance, when using a loop of rope, canceling a shot takes 17 seconds before you are allowed your next turn
So... don't do that? This is working as intended. You cannot simply store an arrow on a bow's drawstring, ready to go.
No, but you could drop it or you could hold the arrow in your other hand and decide what to do with it or you can hold both in the same hand, just not drawn. It seems pretty nonsensical to decide to carefully put away your arrow while being torn apart.
And IRL, you can walk like normal with an arrow in your bow. You don't have to walk around with your bow fully drawn all the time
loop of rope
Well there's your problem. Make a quiver! They're easier to craft than ever given that there's now a birchbark and pipe version. The loop of rope item is extremely shitty on purpose because it only really exists as a failsafe.
It was 6 days into a new run. A loop of rope was all I could afford to use at that moment
And IRL, you can walk like normal with an arrow in your bow. You don't have to walk around with your bow fully drawn all the time
We're not likely to have two hands anytime soon (if ever), but adding a second load state to the bow could work. One where you've just got the arrow and the bow together in your hands, and one where it's drawn. Pressing "f" could automatically do both as it automatically does the one now, and then canceling could return you to the new middle state. Then you'd just unload your bow to get your arrow back, if you wanted to put it away. We could even add a keybind to half-load the bow.
It'd take a little bit of C++, and a system to make it spit the arrow out if you dropped or wore the bow, but there are a couple of places we could use a system like this - slings come to mind.
Then you'd just unload your bow to get your arrow back
And we're back to step one. Unloading does the exact same thing as [f] cancel does now - it puts arrow into any valid container. Or maybe you meant that in that case player would have an option to drop bow and/or arrow?
It's got to be a keybind with exactly as few button presses as there are now or it'll be godawful to play with.
It's got to be a keybind with exactly as few button presses as there are now or it'll be godawful to play with.
It could simply be a toggle in the [f] firing menu just like pressing '.' to steady your aim or switching firing modes to precise or careful. Simply make it a toggle, could even make it exclusive to bows, and it's done. If toggle is enabled, you drop your arrow, if disabled, you stow it.
It is feasible to walk around with an arrow nocked on your bow, and there are legitimate reasons to do so, so in broad strokes this would be nice to have, the only question is making it happen without causing annoyance as fairyarmadillo points out.
I think the ideal option is to just defer unloading the arrow until you unwield the bow or manually unload. The tricky part is just making sure you catch all the options for unwielding. If you wear the bow or put it in an inventory, you should also put the arrow in your inventory, or maybe leave it wielded? If you drop the bow (either intentionally or due to some effect that makes you drop it) the arrow should stop off the bow.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. Please do not bump or comment on this issue unless you are actively working on it. Stale issues, and stale issues that are closed are still considered.
This was not addressed by #73305 and it looks like that needs to be reverted anyway.
Why would it need to be reverted?
Why would it need to be reverted?
It didn't follow attribution requirements.
This was not addressed by #73305 and it looks like that needs to be reverted anyway.
I thought that after #73305 it is no longer needed to have your bow pre-loaded. Now I got a new idea, once #73550 is merged, I'll make another PR to apply it.
The question is, do you think I should add a (melee) penalty to a loaded bow?
And, will ripoff
works for items held in PC's hand? I mean it is reasonable to have your arrow knocked off by a hulk.
Getting hit in melee already resets your aim, making bows generally not usable that way.
Getting hit in melee already resets your aim, making bows generally not usable that way.
If you are talking about melee penalty, I mean to increase Moves Per Attack for loaded bow when used for melee attack.
About ripoff
, seems that it only affects item worn on the character, not item wielded, when escaping from grabbing?
On the half way of my new idea. Any suggestions?