From 3f675d44f23e36c30949f3cb8f36e3991e1ec49d Mon Sep 17 00:00:00 2001 From: hockaa Date: Sun, 4 May 2025 19:27:49 +0100 Subject: [PATCH 1/5] setup --- code/modules/clothing/rogueclothes/quiver.dm | 71 +++++++++++--------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/code/modules/clothing/rogueclothes/quiver.dm b/code/modules/clothing/rogueclothes/quiver.dm index 3f4bb87d6..7f93df519 100644 --- a/code/modules/clothing/rogueclothes/quiver.dm +++ b/code/modules/clothing/rogueclothes/quiver.dm @@ -16,57 +16,64 @@ alternate_worn_layer = UNDER_CLOAK_LAYER strip_delay = 20 var/max_storage = 20 - var/list/arrows = list() + var/list/ammo = list() + var/list/allowed_ammo = list(/obj/item/ammo_casing/caseless/rogue/arrow, /obj/item/ammo_casing/caseless/rogue/bolt) sewrepair = TRUE /obj/item/quiver/attack_turf(turf/T, mob/living/user) - if(arrows.len >= max_storage) + if(ammo.len >= max_storage) to_chat(user, span_warning("Your [src.name] is full!")) return to_chat(user, span_notice("You begin to gather the ammunition...")) for(var/obj/item/ammo_casing/caseless/rogue/arrow in T.contents) if(do_after(user, 5)) - if(!eatarrow(arrow)) + if(!eatammo(arrow)) break -/obj/item/quiver/proc/eatarrow(obj/A) - if(A.type in subtypesof(/obj/item/ammo_casing/caseless/rogue)) - if(arrows.len < max_storage) - A.forceMove(src) - arrows += A - update_icon() +/obj/item/quiver/proc/check_ammo(obj/A) + for(var/i in allowed_ammo) + to_chat(world, "checking [i]") + if(istype(A, i)) + to_chat(world, "returned true") return TRUE - else - return FALSE + +/obj/item/quiver/proc/eatammo(obj/A) + if(check_ammo(A) && ammo.len < max_storage) + A.forceMove(src) + ammo += A + update_icon() + return TRUE + else + return FALSE /obj/item/quiver/attackby(obj/A, loc, params) - if(A.type in subtypesof(/obj/item/ammo_casing/caseless/rogue)) - if(arrows.len < max_storage) - if(ismob(loc)) - var/mob/M = loc - M.doUnEquip(A, TRUE, src, TRUE, silent = TRUE) - else - A.forceMove(src) - arrows += A - update_icon() + if(A.type in allowed_ammo && ammo.len < max_storage) + if(ismob(loc)) + var/mob/M = loc + M.doUnEquip(A, TRUE, src, TRUE, silent = TRUE) else - to_chat(loc, span_warning("Full!")) + A.forceMove(src) + ammo += A + update_icon() + else + to_chat(loc, span_warning("Full!")) return + if(istype(A, /obj/item/gun/ballistic/revolver/grenadelauncher/bow)) var/obj/item/gun/ballistic/revolver/grenadelauncher/bow/B = A - if(arrows.len && !B.chambered) - for(var/AR in arrows) + if(ammo.len && !B.chambered) + for(var/AR in ammo) if(istype(AR, /obj/item/ammo_casing/caseless/rogue/arrow)) - arrows -= AR + ammo -= AR B.attackby(AR, loc, params) break return ..() /obj/item/quiver/attack_right(mob/user) - if(arrows.len) - var/obj/O = arrows[arrows.len] - arrows -= O + if(ammo.len) + var/obj/O = ammo[ammo.len] + ammo -= O O.forceMove(user.loc) user.put_in_hands(O) update_icon() @@ -74,11 +81,11 @@ /obj/item/quiver/examine(mob/user) . = ..() - if(arrows.len) - . += span_notice("[arrows.len] inside.") + if(ammo.len) + . += span_notice("[ammo.len] inside.") /obj/item/quiver/update_icon() - if(arrows.len) + if(ammo.len) icon_state = "quiver1" else icon_state = "quiver0" @@ -87,14 +94,14 @@ . = ..() for(var/i in 1 to max_storage) var/obj/item/ammo_casing/caseless/rogue/arrow/iron/A = new() - arrows += A + ammo += A update_icon() /obj/item/quiver/bolts/Initialize() . = ..() for(var/i in 1 to max_storage) var/obj/item/ammo_casing/caseless/rogue/bolt/A = new() - arrows += A + ammo += A update_icon() /* /obj/item/quiver/Parrows/Initialize() From 8bd564446bae18de70555a32d5e846b198a26dbb Mon Sep 17 00:00:00 2001 From: hockaa Date: Sat, 21 Jun 2025 06:38:26 +0100 Subject: [PATCH 2/5] resolve a few mix-ups with attackby() --- code/modules/clothing/rogueclothes/quiver.dm | 26 +++++++++----------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/code/modules/clothing/rogueclothes/quiver.dm b/code/modules/clothing/rogueclothes/quiver.dm index 3ff36063e..13c073821 100644 --- a/code/modules/clothing/rogueclothes/quiver.dm +++ b/code/modules/clothing/rogueclothes/quiver.dm @@ -47,18 +47,6 @@ return FALSE /obj/item/quiver/attackby(obj/A, loc, params) - if(A.type in allowed_ammo && ammo.len < max_storage) - if(ismob(loc)) - var/mob/M = loc - M.doUnEquip(A, TRUE, src, TRUE, silent = TRUE) - else - A.forceMove(src) - ammo += A - update_icon() - else - to_chat(loc, span_warning("Full!")) - return - if(istype(A, /obj/item/gun/ballistic/revolver/grenadelauncher/bow)) var/obj/item/gun/ballistic/revolver/grenadelauncher/bow/B = A if(ammo.len && !B.chambered) @@ -68,6 +56,16 @@ B.attackby(AR, loc, params) break return + + if(check_ammo(A) && ammo.len < max_storage) + if(ismob(loc)) + var/mob/M = loc + M.doUnEquip(A, TRUE, src, TRUE, silent = TRUE) + else + A.forceMove(src) + ammo += A + update_icon() + ..() /obj/item/quiver/attack_right(mob/user) @@ -122,12 +120,12 @@ . = ..() for(var/i in 1 to max_storage) var/obj/item/ammo_casing/caseless/rogue/arrow/silver/A = new() - arrows += A + ammo += A update_icon() /obj/item/quiver/silver_bolts/Initialize() . = ..() for(var/i in 1 to max_storage) var/obj/item/ammo_casing/caseless/rogue/bolt/silver/A = new() - arrows += A + ammo += A update_icon() From f78ce7a36389a1aa97c22367df61adaf6c3a7b69 Mon Sep 17 00:00:00 2001 From: hockaa Date: Sat, 21 Jun 2025 19:52:45 +0100 Subject: [PATCH 3/5] stopped unnecessary call of check_ammo() --- code/modules/clothing/rogueclothes/quiver.dm | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/code/modules/clothing/rogueclothes/quiver.dm b/code/modules/clothing/rogueclothes/quiver.dm index 13c073821..f7a5bf0d3 100644 --- a/code/modules/clothing/rogueclothes/quiver.dm +++ b/code/modules/clothing/rogueclothes/quiver.dm @@ -57,14 +57,15 @@ break return - if(check_ammo(A) && ammo.len < max_storage) - if(ismob(loc)) - var/mob/M = loc - M.doUnEquip(A, TRUE, src, TRUE, silent = TRUE) - else - A.forceMove(src) - ammo += A - update_icon() + if(ammo.len < max_storage) + if(check_ammo(A)) + if(ismob(loc)) + var/mob/M = loc + M.doUnEquip(A, TRUE, src, TRUE, silent = TRUE) + else + A.forceMove(src) + ammo += A + update_icon() ..() From f033aaecb820ed9003c24f75893c904ad7ffe9a8 Mon Sep 17 00:00:00 2001 From: hockaa Date: Sat, 21 Jun 2025 19:56:15 +0100 Subject: [PATCH 4/5] changelog --- html/changelogs/hocka-quiverrefactor.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/hocka-quiverrefactor.yml diff --git a/html/changelogs/hocka-quiverrefactor.yml b/html/changelogs/hocka-quiverrefactor.yml new file mode 100644 index 000000000..24c92ee84 --- /dev/null +++ b/html/changelogs/hocka-quiverrefactor.yml @@ -0,0 +1,6 @@ +author: "Hocka" + +delete-after: True + +changes: + - refactor: "Refactored the quiver code." From a1bff430d59b05ce18b50afb62ea084b0db7f6c2 Mon Sep 17 00:00:00 2001 From: hockaa Date: Sat, 21 Jun 2025 20:03:52 +0100 Subject: [PATCH 5/5] removed debug messages --- code/modules/clothing/rogueclothes/quiver.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/modules/clothing/rogueclothes/quiver.dm b/code/modules/clothing/rogueclothes/quiver.dm index f7a5bf0d3..7465c32eb 100644 --- a/code/modules/clothing/rogueclothes/quiver.dm +++ b/code/modules/clothing/rogueclothes/quiver.dm @@ -32,9 +32,7 @@ /obj/item/quiver/proc/check_ammo(obj/A) for(var/i in allowed_ammo) - to_chat(world, "checking [i]") if(istype(A, i)) - to_chat(world, "returned true") return TRUE /obj/item/quiver/proc/eatammo(obj/A)