From d00b4e66bbd58ff4e8ac045e5d2c5bf04db63ad0 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Fri, 30 Aug 2024 01:12:29 -0400 Subject: [PATCH] fixes some bugs (#6679) - syringes & blood - turrets - a cargo voucher --- code/game/click/items.dm | 1 + code/game/machinery/turrets/turret-ai_holder.dm | 5 +++++ code/game/machinery/turrets/turret.dm | 7 ++++--- .../engineering_points_vendor.dm | 4 ++-- code/modules/projectiles/projectile.dm | 11 +++++++---- code/modules/reagents/reagent_containers/syringes.dm | 2 +- 6 files changed, 20 insertions(+), 10 deletions(-) diff --git a/code/game/click/items.dm b/code/game/click/items.dm index 36858539094..9514e4b15f6 100644 --- a/code/game/click/items.dm +++ b/code/game/click/items.dm @@ -35,6 +35,7 @@ // - item use & receive item use (item_interaction() on /atom, definiteily) // - tool use & receive tool use (we already have tool_interaction() on /atom) // - melee attack & receive melee attack (melee_interaction() on /atom? not melee_act directly?) + // - melee attack shouldn't require attackby() to allow it to, it should be automatic on harm intent (?) // - the item should have final say but we need a way to allow click redirections so.. if(resolve_attackby(target, user, params, null, .)) return CLICKCHAIN_DO_NOT_PROPAGATE diff --git a/code/game/machinery/turrets/turret-ai_holder.dm b/code/game/machinery/turrets/turret-ai_holder.dm index 330b4d8a424..6c2a3d1a666 100644 --- a/code/game/machinery/turrets/turret-ai_holder.dm +++ b/code/game/machinery/turrets/turret-ai_holder.dm @@ -35,6 +35,11 @@ set_ticking(idle_retarget_pulse_time) /datum/ai_holder/turret/tick(cycles) + var/obj/machinery/porta_turret/turret = agent + // check if we should do anything + if(turret.disabled || !turret.enabled) + idle() + return // first, evaluate var/found_in_wake_range = continuous_evaluation() // then, diff --git a/code/game/machinery/turrets/turret.dm b/code/game/machinery/turrets/turret.dm index 4a8590311c1..265f3c8afd8 100644 --- a/code/game/machinery/turrets/turret.dm +++ b/code/game/machinery/turrets/turret.dm @@ -441,7 +441,8 @@ else to_chat(user, "Access denied.") - ..() + else + return ..() /obj/machinery/porta_turret/emag_act(remaining_charges, mob/user) if(!emagged) @@ -574,7 +575,7 @@ if(assess_perp(L) < 4) return TURRET_NOT_TARGET //if threat level < 4, keep going - if(L.stat != CONSCIOUS) //if the perp is lying down, it's still a target but a less-important target + if(L.stat != CONSCIOUS && (lethal || emagged)) //if the perp is lying down, it's still a target but a less-important target return check_down ? TURRET_SECONDARY_TARGET : TURRET_NOT_TARGET return TURRET_PRIORITY_TARGET //if the perp has passed all previous tests, congrats, it is now a "shoot-me!" nominee @@ -648,7 +649,7 @@ * @return TRUE on success */ /obj/machinery/porta_turret/proc/try_fire_at(atom/target, angle) - if(disabled || is_integrity_broken()) + if(disabled || !enabled || is_integrity_broken()) return FALSE if(is_on_cooldown()) return FALSE diff --git a/code/modules/mining/ore_redemption_machine/engineering_points_vendor.dm b/code/modules/mining/ore_redemption_machine/engineering_points_vendor.dm index b55ba745358..f2ad1e9bebe 100644 --- a/code/modules/mining/ore_redemption_machine/engineering_points_vendor.dm +++ b/code/modules/mining/ore_redemption_machine/engineering_points_vendor.dm @@ -167,7 +167,7 @@ order.comment = "Voucher redemption" order.ordered_at = stationdate2text() + " - " + stationtime2text() order.status = SUP_ORDER_APPROVED //auto approved - order.approved_by = "[src]" + order.approved_by = "[user]" order.approved_at = stationdate2text() + " - " + stationtime2text() SSsupply.order_history += order//tell supply the order exists. @@ -224,7 +224,7 @@ name = "Laser reflector voucher" desc = "A voucher redeemable, at any NT cargo department, for a single laser reflector." icon_state = "engineering_voucher" - redeemable_for = new /datum/supply_pack/nanotrasen/engineering/engine/fusion_fuel_compressor + redeemable_for = new /datum/supply_pack/nanotrasen/engineering/reflector /obj/item/engineering_mystical_tech name = "XYE" diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 823dbbb3973..ac7164dcc9d 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -492,10 +492,13 @@ if(trajectory_moving_to) // create tracers var/datum/point/visual_impact_point = get_intersection_point(trajectory_moving_to) - // kick it forwards a bit - visual_impact_point.shift_in_projectile_angle(angle, 2) - // draw - finalize_hitscan_tracers(visual_impact_point, impact_effect = TRUE) + if(visual_impact_point) + // kick it forwards a bit + visual_impact_point.shift_in_projectile_angle(angle, 2) + // draw + finalize_hitscan_tracers(visual_impact_point, impact_effect = TRUE) + else + finalize_hitscan_tracers(impact_effect = TRUE, kick_forwards = 32) else finalize_hitscan_tracers(impact_effect = TRUE, kick_forwards = 32) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 07a18cc8649..575fcd64276 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -119,7 +119,7 @@ B = T.take_blood(src,amount) drawing = 0 - if (B) + if (B && !(B in reagents.reagent_list)) reagents.reagent_list += B reagents.update_total() on_reagent_change()