Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 10 additions & 29 deletions _maps/shuttles/roumain/srm_vagrant.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -446,11 +446,6 @@
/obj/structure/closet/secure_closet/collignes,
/obj/item/clothing/suit/armor/roumain/colligne,
/obj/item/clothing/head/cowboy/sec/roumain/colligne,
/obj/item/ammo_box/c38,
/obj/item/ammo_box/c38,
/obj/item/storage/box/ammo/c38,
/obj/item/gun/ballistic/revolver/detective,
/obj/item/storage/backpack/satchel/leather,
/obj/item/gps{
pixel_x = -7
},
Expand Down Expand Up @@ -2561,23 +2556,14 @@
/turf/open/floor/wood/walnut,
/area/ship/crew/cryo)
"RH" = (
/obj/structure/rack,
/obj/machinery/door/window/brigdoor/westleft,
/obj/item/ammo_box/magazine/illestren_a850r{
pixel_x = -2;
pixel_y = -8
},
/obj/item/ammo_box/magazine/illestren_a850r{
pixel_x = 5;
pixel_y = -3
},
/obj/effect/turf_decal/siding/brown{
dir = 8
},
/obj/item/storage/toolbox/ammo/shotgun,
/obj/item/storage/box/ammo/a8_50r,
/obj/item/storage/box/ammo/a12g_slug,
/obj/item/storage/box/ammo/a8_50r/match,
/obj/structure/table/wood,
/obj/item/storage/bag/quiver,
/obj/item/storage/bag/quiver,
/obj/item/storage/bag/quiver,
/obj/item/storage/bag/quiver,
/turf/open/floor/wood/walnut,
/area/ship/security)
"Ss" = (
Expand Down Expand Up @@ -2821,19 +2807,14 @@
/turf/open/floor/plating,
/area/ship/engineering/engine)
"VO" = (
/obj/machinery/door/window/brigdoor/westright,
/obj/structure/guncloset{
anchored = 1
},
/obj/item/gun/ballistic/shotgun/flamingarrow/conflagration,
/obj/item/gun/ballistic/rifle/illestren/factory{
pixel_x = -4;
pixel_y = -5
},
/obj/effect/turf_decal/siding/brown{
dir = 8
},
/obj/item/gun/ballistic/shotgun/flamingarrow/conflagration,
/obj/structure/table/wood,
/obj/item/gun/ballistic/bow,
/obj/item/gun/ballistic/bow,
/obj/item/gun/ballistic/bow,
/obj/item/gun/ballistic/bow,
/turf/open/floor/wood/walnut,
/area/ship/security)
"Wg" = (
Expand Down
6 changes: 6 additions & 0 deletions code/datums/components/crafting/guncrafting.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,9 @@
desc = "A long piece of Silk that looks like a cable coil."
icon = 'icons/obj/improvised.dmi'
icon_state = "silkstring"

/obj/item/weaponcrafting/clothstring
name = "cloth string"
desc = "A long piece of cloth that looks like a cable coil."
icon = 'icons/obj/improvised.dmi'
icon_state = "silkstring"
11 changes: 11 additions & 0 deletions code/datums/components/crafting/recipes/weapon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,17 @@
category = CAT_WEAPONRY
subcategory = CAT_WEAPON



/datum/crafting_recipe/longbow
name = "Long Bow"
result = /obj/item/gun/ballistic/bow
reqs = list(/obj/item/stack/sheet/mineral/wood = 2,
/obj/item/weaponcrafting/clothstring = 1)
time = 100
category = CAT_WEAPONRY
subcategory = CAT_WEAPON

/*/datum/crafting_recipe/pipebow
name = "Pipe Bow"
result = /obj/item/gun/ballistic/bow/pipe
Expand Down
189 changes: 189 additions & 0 deletions code/game/objects/items/bowandarrow/arrow_crafting.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
/// ARROW CRAFTING ~

/// the stickthing that we're using as a base that everything will be slapped onto
/obj/item/arrow_shaft
name = "arrow shaft"
desc = "A long and sturdy piece of wood with notches at both ends. \
Just add a head and some hay, and you've got yourself a DIY arrow!"
icon = 'icons/obj/arrow_crafting.dmi'
icon_state = "arrow_shaft"
/// our arrow head type
var/obj/item/stack/arrowhead/the_head
/// Does it have hay on it?
var/has_hay = TRUE // it does
/// The result arrow
var/obj/item/ammo_casing/caseless/arrow/the_arrow

/obj/item/arrow_shaft/Initialize()
. = ..()
update_icon() // so the hay shows up

/obj/item/arrow_shaft/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/stack/arrowhead) && attach_arrowhead(W, user))
return
//if(istype(W, /obj/item/stack/sheet/hay) && attach_hay(W, user))
// return
. = ..()

/obj/item/arrow_shaft/attack_hand(mob/user, act_intent, attackchain_flags)
if(ispath(the_head, /obj/item/stack/arrowhead))
remove_arrowhead(user)
return
//if(has_hay)
// remove_hay(user)
// return
. = ..()

/obj/item/arrow_shaft/proc/attach_arrowhead(obj/item/stack/arrowhead/a_head, mob/user)
if(!istype(a_head))
return FALSE
if(the_head || the_arrow)
return FALSE
if(!a_head.use(1))
user.show_message(span_alert("You need at least one arrow head!"))
return FALSE
the_head = a_head.type
the_arrow = a_head.result_arrow
user.show_message(span_notice("You tie \the [a_head] to the head of the shaft."))
update_icon()
check_constructed(user)

/obj/item/arrow_shaft/proc/remove_arrowhead(mob/user)
if(!ispath(the_head, /obj/item/stack/arrowhead))
return FALSE
var/obj/item/stack/arrowhead/new_head = new(get_turf(src))
user.put_in_hands(new_head)
the_head = null
the_arrow = null
user.show_message(span_notice("You pull the head off the shaft."))
update_icon()
check_constructed(user)

/obj/item/arrow_shaft/proc/check_constructed(mob/user)
if(!ispath(the_head, /obj/item/stack/arrowhead))
return FALSE
else if(!ispath(initial(the_head.result_arrow), /obj/item/ammo_casing/caseless/arrow))
remove_arrowhead(user)
return FALSE
if(!has_hay)
return FALSE
finish_construction(user)
return TRUE

/obj/item/arrow_shaft/proc/finish_construction(mob/user)
var/obj/item/ammo_casing/caseless/arrow/make_this_arrow = new the_arrow(get_turf(user))
if(ismob(user))
user.visible_message(span_notice("[user] makes \a [make_this_arrow]!"))
user.put_in_hands(make_this_arrow) // Try to put it in your hand
qdel(src)

/obj/item/arrow_shaft/update_overlays()
. = ..()
if(ispath(the_head, /obj/item/stack/arrowhead))
. += mutable_appearance(initial(the_head.icon), "[initial(the_head.icon_state)]_overlay")
if(has_hay)
. += mutable_appearance(icon, "arrow_fletching")


/// The arrow heads, use these on the shaft to stick them on the shaft, ezpz
/obj/item/stack/arrowhead
name = "arrow heads"
singular_name = "arrow head"
desc = "A standard vanilla arrowhead."
icon = 'icons/obj/arrow_crafting.dmi'
icon_state = "arrow_head_arrow"
merge_type = /obj/item/stack/arrowhead
max_amount = 40
/// The head defines the resulting arrow
var/obj/item/ammo_casing/caseless/arrow/result_arrow = /obj/item/ammo_casing/caseless/arrow

/obj/item/stack/arrowhead/field
name = "field arrow heads"
singular_name = "field arrow head"
desc = "A thin, sharpened piece of metal, filed down to an aerodynamic point."
icon = 'icons/obj/arrow_crafting.dmi'
icon_state = "arrow_head_field"
merge_type = /obj/item/stack/arrowhead/field
result_arrow = /obj/item/ammo_casing/caseless/arrow/field

/obj/item/stack/arrowhead/bone
name = "bone arrow heads"
singular_name = "bone arrow head"
desc = "A sharpened 'animal' bone, filed down to an aerodynamic point."
icon = 'icons/obj/arrow_crafting.dmi'
icon_state = "arrow_head_bone"
merge_type = /obj/item/stack/arrowhead/bone
result_arrow = /obj/item/ammo_casing/caseless/arrow/bone

/obj/item/stack/arrowhead/flint
name = "flint arrow heads"
singular_name = "flint arrow head"
desc = "A sharpened piece of flint, filed down to an aerodynamic point."
icon = 'icons/obj/arrow_crafting.dmi'
icon_state = "arrow_head_flint"
merge_type = /obj/item/stack/arrowhead/flint
result_arrow = /obj/item/ammo_casing/caseless/arrow/flint

/*/obj/item/stack/arrowhead/glass
name = "glass arrow heads"
singular_name = "glass arrow head"
desc = "A sharpened piece of glass, filed down to an aerodynamic point."
icon = 'icons/obj/arrow_crafting.dmi'
icon_state = "arrow_head_glass"
merge_type = /obj/item/stack/arrowhead/glass
result_arrow = /obj/item/ammo_casing/caseless/arrow/glass*/

/*/obj/item/stack/arrowhead/broadhead
name = "broadhead arrow tips"
singular_name = "broadhead arrow tip"
desc = "An extra-sharp arrowhead made for slicing up exposed flesh."
icon = 'icons/obj/arrow_crafting.dmi'
icon_state = "arrow_head_broadhead"
merge_type = /obj/item/stack/arrowhead/broadhead
result_arrow = /obj/item/ammo_casing/caseless/arrow/broadhead*/

/obj/item/stack/arrowhead/bodkin
name = "bodkin arrow tips"
singular_name = "bodkin arrow tip"
desc = "An extra-pointy arrowhead made for penetrating armor."
icon = 'icons/obj/arrow_crafting.dmi'
icon_state = "arrow_head_bodkin"
merge_type = /obj/item/stack/arrowhead/bodkin
result_arrow = /obj/item/ammo_casing/caseless/arrow/bodkin

/*/obj/item/stack/arrowhead/explosive
name = "explosive arrow heads"
singular_name = "explosive arrow head"
desc = "A sack of explosives, ready to rearrange someone's guts all over the road."
icon = 'icons/obj/arrow_crafting.dmi'
icon_state = "arrow_head_explosive"
merge_type = /obj/item/stack/arrowhead/explosive
result_arrow = /obj/item/ammo_casing/caseless/arrow/explosive

/obj/item/stack/arrowhead/ion
name = "ion arrow heads"
singular_name = "ion arrow head"
desc = "A clump of charged electronic chunks, ready to let out all manner of electrical nonsense on whatever it hits."
icon = 'icons/obj/arrow_crafting.dmi'
icon_state = "arrow_head_ion"
merge_type = /obj/item/stack/arrowhead/ion
result_arrow = /obj/item/ammo_casing/caseless/arrow/ion

/obj/item/stack/arrowhead/split
name = "split arrow heads"
singular_name = "split arrow head"
desc = "A clump of arrows loosely bound with string, spreads out after shooting."
icon = 'icons/obj/arrow_crafting.dmi'
icon_state = "arrow_head_splitarrow"
merge_type = /obj/item/stack/arrowhead/split
result_arrow = /obj/item/ammo_casing/caseless/arrow/split

/obj/item/stack/arrowhead/bludgeon
name = "bludgeoning arrow heads"
singular_name = "bludgeoning arrow head"
desc = "A blunt sack, ready to gently paff someone from across the road."
icon = 'icons/obj/arrow_crafting.dmi'
icon_state = "arrow_head_bludgeon"
merge_type = /obj/item/stack/arrowhead/bludgeon
result_arrow = /obj/item/ammo_casing/caseless/arrow/bludgeon
*/
2 changes: 2 additions & 0 deletions code/game/objects/items/stacks/sheets/leather.dm
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \
new/datum/stack_recipe("leather jacket", /obj/item/clothing/suit/jacket/leather, 7), \
new/datum/stack_recipe("leather shoes", /obj/item/clothing/shoes/laceup, 2), \
new/datum/stack_recipe("saddle", /obj/item/saddle, 5), \
new/datum/stack_recipe("quiver", /obj/item/storage/bag/quiver, 2), \

))

/obj/item/stack/sheet/leather/get_main_recipes()
Expand Down
3 changes: 2 additions & 1 deletion code/game/objects/items/stacks/sheets/mineral.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ Mineral Sheets
GLOBAL_LIST_INIT(sandstone_recipes, list ( \
new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("Breakdown into sand", /obj/item/stack/ore/glass, 1, one_per_turf = 0, on_floor = 1) \
new/datum/stack_recipe("Breakdown into sand", /obj/item/stack/ore/glass, 1, one_per_turf = 0, on_floor = 1), \
new/datum/stack_recipe("flint arrowhead", /obj/item/stack/arrowhead/flint, 1, 1, 25, time = 2.5 SECONDS) \
))

/obj/item/stack/sheet/mineral/sandstone
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,5 +250,10 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
new/datum/stack_recipe("chest press", /obj/structure/weightmachine/stacklifter, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("bench press", /obj/structure/weightmachine/weightlifter, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \
)), \
new/datum/stack_recipe("shower", /obj/machinery/shower, 3, time = 25)
new/datum/stack_recipe("shower", /obj/machinery/shower, 3, time = 25),
new/datum/stack_recipe_list("Arrow heads", list( \
new/datum/stack_recipe("regular arrowhead", /obj/item/stack/arrowhead, 2, 1, 25, time = 2.5 SECONDS), \
/* TODO: THIS THING /new/datum/stack_recipe("bludgeoning arrowhead", /obj/item/stack/arrowhead/bludgeon, 1, 1, 25, time = 1 SECONDS), \*/
new/datum/stack_recipe("field arrowhead", /obj/item/stack/arrowhead/field, 1, 1, 25, time = 1 SECONDS) \
))\
))
9 changes: 7 additions & 2 deletions code/game/objects/items/stacks/sheets/sheet_types.dm
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,9 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
null, \
new/datum/stack_recipe("wooden railing", /obj/structure/railing/wood, 3, time = 18, window_checks = TRUE), \
new/datum/stack_recipe("wooden railing corner", /obj/structure/railing/corner/wood, 1, time = 10, window_checks = TRUE), \
new /datum/stack_recipe("wooden computer frame", /obj/structure/frame/computer/solgov, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("wooden computer frame", /obj/structure/frame/computer/solgov, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("planter box", /obj/machinery/hydroponics/wooden, 5, time = 8 SECONDS, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("arrow shaft", /obj/item/arrow_shaft, 1, time = 0.5 SECONDS), \
))

/obj/item/stack/sheet/mineral/wood
Expand Down Expand Up @@ -265,6 +266,8 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
new/datum/stack_recipe("23x19 canvas", /obj/item/canvas/twentythreeXnineteen, 4), \
new/datum/stack_recipe("23x23 canvas", /obj/item/canvas/twentythreeXtwentythree, 5), \
new/datum/stack_recipe("punching bag", /obj/structure/punching_bag, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \
null, \
new/datum/stack_recipe("cloth string", /obj/item/weaponcrafting/clothstring, 1), \
))

/obj/item/stack/sheet/cotton/cloth
Expand Down Expand Up @@ -512,7 +515,9 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \

GLOBAL_LIST_INIT(bone_recipes, list( \
new /datum/stack_recipe("mortar", /obj/item/reagent_containers/glass/mortar/bone, 3), \
new /datum/stack_recipe("bone dagger", /obj/item/melee/knife/bone, 2)))
new /datum/stack_recipe("bone dagger", /obj/item/melee/knife/bone, 2),\
new /datum/stack_recipe("bone arrowhead", /obj/item/stack/arrowhead/bone, 1, 1, 25, time = 2 SECONDS)\
))

/obj/item/stack/sheet/bone
name = "bones"
Expand Down
32 changes: 29 additions & 3 deletions code/modules/projectiles/ammunition/caseless/arrow.dm
Original file line number Diff line number Diff line change
@@ -1,16 +1,42 @@
/obj/item/ammo_casing/caseless/arrow
name = "arrow"
desc = "An arrow made of... something. It's hella sharp."
desc = "a simple arrow with a metal head."
projectile_type = /obj/projectile/bullet/reusable/arrow
icon = 'icons/obj/arrow_crafting.dmi'
caliber = "arrow"
icon_state = "arrow"
throwforce = 3 //good luck hitting someone with the pointy end of the arrow
throw_speed = 3
firing_effect_type = null
flags_1 = NONE
heavy_metal = FALSE
w_class = WEIGHT_CLASS_SMALL

/obj/item/ammo_casing/caseless/arrow/wood
/obj/item/ammo_casing/caseless/arrow/field
name = "field arrow"
desc = "Used primarily for small game and target practice, the tip is very narrow."
projectile_type = /obj/projectile/bullet/reusable/arrow/field
icon_state = "fieldarrow"

/obj/item/ammo_casing/caseless/arrow/bone
name = "bone arrow"
desc = "A primitive arrow with a head made of knapped bone."
projectile_type = /obj/projectile/bullet/reusable/arrow/bone
icon_state = "bone"

/obj/item/ammo_casing/caseless/arrow/flint
name = "flint arrow"
desc = "a primitive arrow with a head made of knapped flint."
projectile_type = /obj/projectile/bullet/reusable/arrow/flint
icon_state = "flint"

/obj/item/ammo_casing/caseless/arrow/bodkin
name = "bodkin arrow"
desc = "Armor-piercing arrows."
projectile_type = /obj/projectile/bullet/reusable/arrow/bodkin
icon_state = "bodkin"

/*/obj/item/ammo_casing/caseless/arrow/wood
name = "wooden arrow"
desc = "An arrow made of wood, typically fired from a bow."
projectile_type = /obj/projectile/bullet/reusable/arrow/wood
Expand All @@ -31,4 +57,4 @@
name = "bronze arrow"
desc = "An arrow made from wood. tipped with bronze."
icon_state = "bronzearrow"
projectile_type = /obj/projectile/bullet/reusable/arrow/bronze
projectile_type = /obj/projectile/bullet/reusable/arrow/bronze*/
Loading