BeeStation-Hornet icon indicating copy to clipboard operation
BeeStation-Hornet copied to clipboard

Bow and Arrow rework

Open Nakalon opened this issue 5 months ago • 9 comments

About The Pull Request

Design

While investigating how bows were implemented I came across what I consider to be some design problems.

This PR aims to rework bows in a way that will be engaging, exciting, impactful and above all easy to access.

Great care, dedication and time went into trying to make this system as complete as possible, taking no shortcuts to ensure there are no loose ends.

Here are some points I'd like to go over:

Accessibility

Previously bows were extremely hard to get a hold of.

To craft a bow the player was required to either Get 4 silkstring, 5 pipes and 15 stacks of plastic (Pipe Bow) Get 4 silkstring, 8 wood, and 2 iron (Wood Bow) Get 8 bone and 4 sinew (Ash Bow)

Given the extremely painful and time consuming task that is creating silkstring the best option for players was to go to lava-land, fight enemies, gather their bone and sinew and create a bow that way.

However, at this point the player would only be able to create the bow, needing still the arrows. Arrows required: 1 iron rod, 1 wood, and 1 silk.

I did not attempt this feat so I could not time it, but the time and effort that went into creating a functional bow and arrow lead to players never engaging with this feature.

So, in this PR, I have made this system more accessible.

To get a bow and one arrow the player now requires, at the bare minimum and assuming they are creating the easiest bow to make: 3 Wood for the Bow frame 2 Cable for the bow string 1 Wood for an arrow shaft (the player may also get a sharp item and sharpen the arrow shaft for better results)

Engagement

Previously, bows were not engaging at all. The player wasn't incentivized to experiment with different arrows, the crafting process was uninteresting and the materials required were very constricting.

No relation was created between the player and the item they built, if they ever did so to begin with.

To fix this, I have made bow and arrow construction modular.

Avoiding the crafting menu (I absolutely abhor) as best I could, and giving the player a wide array of materials to choose from.

The material will affect the properties of the bow or arrow such as, bone being a hardy but blunt material to use and bamboo being lighter, thus less hardy, but sharper.

On top of this, I have created attachments for the bows, thus giving players four variables regarding their weapon: What is your bow frame? What is your bow string? What is your attachment? What arrow will you use?

Quality of Life

Using bows was clunky and did not feel good at all.

The player was required to be very "manual" about this weapon, needing to click about in various ways and use only specific keys to be able to use the bow.

I have simplified this by: Allowing players to notch an arrow by attacking it with the bow Allowing players to draw a bow by simply trying to fire if the bow isn't drawn Allowing players to draw a bow while moving Disallowing multiple do_afters at the same time

Hopefully this makes the experience of using a bow much more flawless and rewarding.

Welcome to my Bow and Arrow rework!

This rework aims to make Bows and Arrows dynamic and engaging, doing so by introducing:

Modular Bow and Arrow crafting Attachments Bowstrings More Bows and Arrows

image

Pictured above, from left to right are: 1 - Bone Bow Frame, Sinew String, Accelerators (Attachment) and Wooden Cloth Arrow. 2 - PVC Bow Frame, Silk String, Bamboo Burnt Arrow 3 - Bamboo Bow Frame, Cable String, Wooden Glass Arrow 4 - Wood Bow Frame, Bamboo Fiber String, Scope (Attachment) and Bone Bottle Arrow.

Bow Rework

Bows are now modular, isn't that cool?

The material of the bow frame affects its accuracy and draw speed.

Bow frames may be created from Plastic, Wood, Bone or Bamboo:

image

PVC Bows take more time to draw and are more inaccurate

Wood Bows are standard in all regards

Bone Bows are better for melee combat, but take slightly more time to draw

Bamboo are horrible at melee combat, but are slightly fasted at drawing and, if stringless, can be carried around in a backpack.

I have tried to make them all unique in a way that made sense and immersion in mind.

Now, to build a bow frame, one only needs to access the material recipe list like so:

image

A bowstring needs to be made however!

Bowstrings

Now you can choose what type of string goes into your bow.

Bow Strings affect a bows damage and projectile speed.

Bow strings may be created out of:

Sinew, Bamboo, Cable Coil, Leather, and Silk (as they were before) image

Sinew bowstrings fire slower arrows, that deal more damage Bamboo fires faster but less damaging arrows Cable coil is the worse of all, dealing half as much damage and its arrows move twice as slow Leather, deals standard damage but its arrows are as slow as sinew Silk, standard damage, standard speed

Like Bow Frames, I tried to make them unique.

Attachments

On your newly made bow you can now fit attachments!

These are meant to give the bow some bonus such as accuracy, melee damage, so on so on.

Attachments will be pictured here later but they are:

Iron Bow Fangs - Fangs made of Iron that when attached to a bow increase its melee damage and bleed force at the cost of accuracy

Bone Bow Fangs - Fangs made out of bone, these increase melee damage even more but are mostly blunt, and the cost to accuracy is higher

Scope - A Scope that increases accuracy, mind you there is a scopeless version, it needs glass in order to provide any bonus whatsoever

Accelerators - Small cogs that increase the speed at which a bows arrows travel

These are, for now, the attachments.

Arrow Rework

To use your newly created bow, you'll need arrows.

Arrows are also modular, the basic principle that applies for Bow frames applies here.

Everything starts with an arrow shaft, from there you can add other things to it like so:

image

Pictured above are:

The Arrow Shaft - What you use to create the other arrows, boring and doesn't hurt much, but can be shot Sharpened Arrow Shaft - Now the shaft hurts, to create one you only need use something sharp on a shaft, it now embeds Glass Arrow - A glass shard tied to a shaft, the glass will embed into the target while the shaft will fall off Bottle Arrow - A small bottle that can be filled with up to 30 units of whatever liquid you desire, it will splash its contents on hit Cloth Arrow - A blunt cloth arrow, it does have some innate armor piercing Lit Cloth Arrow - Light a cloth arrow on fire with a match or lighter and you have this arrow Burnt Arrow - Back to its essence, this once was a lit arrow, it requires cloth in order to be repaired Bone Point Arrow - Able to inject 5 units of stored contents on hit - More damage, small armor pierce Bamboo Point Arrow - Able to inject 7 units of its contents on hit - Less damage, more armor pierce

But you may also construct these out of other shafts! Such as bamboo:

image

Cloth lit and Burnt aren't pictured because there was a icon bug at the time I took this picture, just imagine they are there, its been fixed now.

Same to bone.

You create arrow shafts the same way you create Bow Frames!

Quality of life improvements!

I have tried my best to make the experiencing of using, firing, reloading a bow to be as smooth as possible. To achieve that I changed the following things:

You can draw the bow string while moving. You can now notch arrows into the bow by clicking on an arrow with the bow. Now you are no longer forced to press Z to draw a bow, you may now attempt to fire a notched arrow and you will start drawing the bow. You can no longer stack actions, such as drawing the bow multiple times. Bows no longer inflict slowdown. Some stacks recipes were rearranged, and a weapon crafting subdivision was added:

image

Added Content

This was content that I created, however, due to some concerns regarding balance and in an effort to speed up the merge process of this PR I cut off from being obtainable in game, although they still exist and can be used in admin bus.

The Energy Bow

image image

A Bow that can be turned on and off, has its own bowstring (crystals). It functions like you'd expect an e-sword to work. This was meant to be introduced into the syndicate uplink but that was cut short due to scope.

The SM Arrow

image

An Arrow that dusts its target if not blocked, initially the plan was to make it craftable with the items related to the SM crystal shard objective, including the pincers and the crystal itself, however that was done due to balancing reasons. However, its still (I believe) a well done piece of content, fully sprited including projectile.

It may be fully added to the game or left as an admin bus tool.

I may delete this if that is required to get this PR merged

Code Wise

I added Damage and Speed multiplier vars for guns, now you can create guns that share ammo types but have different damage.

image

This is what allows bowstrings to have different damage and speed values from one another.

Hopefully this will help coders in the future that want to make their own guns!

Attachments were created in a way that facilitates coding them to guns (as I plan to in the future)

image

Why It's Good For The Game

No one ever used a bow ever, hopefully this will breathe some new life into this thing and into the game!

I stand by the idea that adding more weapons that work poorly but are readily available is a good way to incentivize players to abandon the stealth antag, since now they have more options and don't need such a huge set up before antagonizing.

By making this system more complex, but also more unique, hopefully people will experiment with it and feel like they have control over their actions and how they achieve their objectives!

I think the damage and speed multiplier vars for weapons are an extremely important tool.

Because they give coders some control over damage and speed values of weapons without having to create new types of ammo.

Everything was done with extreme care as to display as much necessary information to the player as possible, this includes:

Descriptions that properly describe what the item does or how it can be used image

Addendums to bow descriptions that accurately describe what was attached and how it affects the bow's function image

Sprites that accurately show what an item is including:

Projectile sprites so the player can get an idea of what arrow type is coming their way. image

A ridiculous amount of sprites to properly display what an arrow IS even if it is inside the bow image

Testing Photographs and Procedure

Screenshots&Videos

All my images are being used above.

Changelog

:cl: Joon, Xeon add: Bow and Arrow rework. Bows and Arrows are now modular. add: Added Bowstrings that can be made out of leather, bamboo, sinew, or cable. add: Added a multitude of arrows. Their shaft can be made of wood, bone or bamboo. add: Added Energy bow and SM arrow, reserved for adminbus. add: Added weapon attachments: Iron and Bone fangs, Scope, and Accelerators that can be attached to bows. del: Removed bow and arrow crafting recipes. add: Bow Frames, Bow Strings, and Arrow Shafts can now be crafted using the material recipe list. tweak: Several QOL changes to bows including: Notching arrow by attacking the arrow with the bow, being able to draw an arrow while moving, being able to draw an arrow by attempting to fire. tweak: Bow draw time is now based on the frame of the bow. PVC being the slowest, Energy the fastest. balance: Bows no longer force weapon slowdown. tweak: Updated the clockwork bow to follow this rework, although it's string can't be cut tweak: slightly rearranged material recipes and introduced a new "weapon crafting" subdivision where the bow frames and arrow shafts can be found spriteadd: Added sprites for all bows, arrows, projectiles, attachments, and whatever else described above. code: Adds a damage multiplier and projectile speed multiplier for guns, meaning you can now control the damage dealt by weapons regardless of the the ammo they use and make weapons that use the same ammo deal different amounts of damage. code: Added some stack macros to certain materials, including bone and sinew. /:cl:

Nakalon avatar Sep 25 '24 17:09 Nakalon