mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 05:30:05 +01:00
Bow Update: Fletching instruction manual, bows using projectile damage multipliers, unhardcoded bow sprites, hot pink death (#84435)
## About The Pull Request Adds a new crate to the Service section of cargo. The Fletching and Bow-Making Starter Kit. Comes with some materials and a fletching instruction manual. The manual teaches you how to make shortbows (18 force from normal arrows utilizing projectile multipliers), arrows, holy arrows (but you need a divine bow to make them), quivers (but they only hold 10 arrows), plastic arrows and violins. For reasons.  ### Fixes Bows now no longer utilize hardcoded sprites for their loaded sprite. Now they use overlays. Bows properly become undrawn once fired. No longer can your bow magically launch arrows by sheer force of will. ## Why It's Good For The Game Initially I just wanted to provide a way for bow wielding chaplains to produce additional arrows for their bow. Running out of those always felt pretty lame. But then I got to thinking; actually, I kind of want to LARP sometimes as an archer. I think that'd be kind of goofy and fun. So I bundled that together into a solution for both. The shortbow is really, really not meant to be a meaningful weapon. It's just kind of silly, and meant to let people pretend to be Robin Hood and occasionally hurt someone in a workplace accident. I'm particularly thinking of clowns being the perfect users for this with their clumsy trait. I will make this weaker if I have too. (I am not, at this moment, redoing flaming arrows okay? I saw the code comment. I know. Not right now. @tralezab, if you have any flaming arrow sprites lying around, please let me know.) ## Changelog 🆑 add: Fletching starter kit! Make your own bow, shoot your friends in an unfortunate workplace accident. Replace all those holy arrows you lost. fix: Bows now properly undraw once they have fired an arrow. code: Bows now utilize overlays in order to display loaded arrows. Unique overlays per arrow. /🆑
This commit is contained in:
@@ -27,7 +27,12 @@
|
||||
|
||||
/obj/item/gun/ballistic/bow/update_icon_state()
|
||||
. = ..()
|
||||
icon_state = chambered ? "[base_icon_state]_[drawn ? "drawn" : "nocked"]" : "[base_icon_state]"
|
||||
icon_state = "[base_icon_state][drawn ? "_drawn" : ""]"
|
||||
|
||||
/obj/item/gun/ballistic/bow/update_overlays()
|
||||
. = ..()
|
||||
if(chambered)
|
||||
. += "[chambered.base_icon_state][drawn ? "_drawn" : ""]"
|
||||
|
||||
/obj/item/gun/ballistic/bow/click_alt(mob/user)
|
||||
if(isnull(chambered))
|
||||
@@ -72,6 +77,11 @@
|
||||
return FALSE
|
||||
return ..() //fires, removing the arrow
|
||||
|
||||
/obj/item/gun/ballistic/bow/postfire_empty_checks(last_shot_succeeded)
|
||||
if(!chambered && !get_ammo())
|
||||
drawn = FALSE
|
||||
update_appearance()
|
||||
|
||||
/obj/item/gun/ballistic/bow/equipped(mob/user, slot, initial)
|
||||
. = ..()
|
||||
if(slot != ITEM_SLOT_HANDS && chambered)
|
||||
|
||||
@@ -58,22 +58,34 @@
|
||||
name = "holy arrow"
|
||||
desc = "Here it comes, cultist scum!"
|
||||
icon_state = "holy_arrow_projectile"
|
||||
damage = 20 //still a lot but this is roundstart gear so far less
|
||||
embedding = list(
|
||||
embed_chance = 50,
|
||||
fall_chance = 2,
|
||||
jostle_chance = 0,
|
||||
ignore_throwspeed_threshold = TRUE,
|
||||
pain_stam_pct = 0.5,
|
||||
pain_mult = 3,
|
||||
rip_time = 1 SECONDS
|
||||
)
|
||||
|
||||
/obj/projectile/bullet/arrow/holy/Initialize(mapload)
|
||||
. = ..()
|
||||
//50 damage to revenants
|
||||
AddElement(/datum/element/bane, target_type = /mob/living/basic/revenant, damage_multiplier = 0, added_damage = 30)
|
||||
|
||||
/// plastic arrows
|
||||
// completely dogshit quality and they break when they hit something.
|
||||
/obj/item/ammo_casing/arrow/plastic
|
||||
name = "plastic arrow"
|
||||
desc = "The earliest mining teams within the Spinward Sector were the somewhat stout ancestors of the modern settlers. These teams \
|
||||
found themselves often unable to access the quality materials they were digging up for equipment maintenance, all being sent off-site. \
|
||||
Left with few options, and in need of a way to protect themselves in the hostile work enviroments of the Spinward, they turned \
|
||||
to the one material they had in abundance."
|
||||
icon_state = "plastic_arrow"
|
||||
base_icon_state = "plastic_arrow"
|
||||
projectile_type = /obj/projectile/bullet/arrow/plastic
|
||||
reusable = FALSE //cheap shit
|
||||
|
||||
/// plastic arrow projectile
|
||||
/obj/projectile/bullet/arrow/plastic
|
||||
name = "plastic arrow"
|
||||
desc = "If this is about to kill you, you should feel genuine shame."
|
||||
damage = 5
|
||||
stamina = 50
|
||||
weak_against_armour = TRUE
|
||||
icon_state = "plastic_arrow_projectile"
|
||||
|
||||
/// special pyre sect arrow
|
||||
/// in the future, this needs a special sprite, but bows don't support non-hardcoded arrow sprites
|
||||
/obj/item/ammo_casing/arrow/holy/blazing
|
||||
@@ -99,5 +111,5 @@
|
||||
human_target.adjust_fire_stacks(2)
|
||||
human_target.ignite_mob()
|
||||
return
|
||||
to_chat(human_target, span_danger("[src] reacts with the flames on y-"))
|
||||
to_chat(human_target, span_danger("[src] reacts with the flames enveloping you! Oh shit!"))
|
||||
explosion(src, light_impact_range = 1, flame_range = 2) //ow
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
worn_icon_state = "harpoon_quiver"
|
||||
/// type of arrow the quivel should hold
|
||||
var/arrow_path = /obj/item/ammo_casing/arrow
|
||||
var/max_slots = 40
|
||||
|
||||
/obj/item/storage/bag/quiver/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -17,7 +18,10 @@
|
||||
atom_storage.max_total_storage = 100
|
||||
atom_storage.set_holdable(/obj/item/ammo_casing/arrow)
|
||||
|
||||
/obj/item/storage/bag/quiver/PopulateContents()
|
||||
/obj/item/storage/bag/quiver/lesser
|
||||
max_slots = 10
|
||||
|
||||
/obj/item/storage/bag/quiver/full/PopulateContents()
|
||||
. = ..()
|
||||
for(var/i in 1 to 10)
|
||||
new arrow_path(src)
|
||||
@@ -29,3 +33,8 @@
|
||||
inhand_icon_state = "holyquiver"
|
||||
worn_icon_state = "holyquiver"
|
||||
arrow_path = /obj/item/ammo_casing/arrow/holy
|
||||
|
||||
/obj/item/storage/bag/quiver/holy/PopulateContents()
|
||||
. = ..()
|
||||
for(var/i in 1 to 10)
|
||||
new arrow_path(src)
|
||||
|
||||
@@ -4,6 +4,12 @@
|
||||
name = "longbow"
|
||||
desc = "While pretty finely crafted, surely you can find something better to use in the current year."
|
||||
|
||||
/// Shortbow, made via the crafting recipe
|
||||
/obj/item/gun/ballistic/bow/shortbow
|
||||
name = "shortbow"
|
||||
desc = "A simple homemade shortbow. Great for LARPing. Or poking out someones eye."
|
||||
projectile_damage_multiplier = 0.36
|
||||
|
||||
///chaplain's divine archer bow
|
||||
/obj/item/gun/ballistic/bow/divine
|
||||
name = "divine bow"
|
||||
@@ -15,6 +21,7 @@
|
||||
slot_flags = ITEM_SLOT_BACK
|
||||
obj_flags = UNIQUE_RENAME
|
||||
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/bow/holy
|
||||
projectile_damage_multiplier = 0.4
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/bow/holy
|
||||
name = "divine bowstring"
|
||||
|
||||
Reference in New Issue
Block a user