From 42d80a5963cf686fa6f553b2ca9e240b4fd2d9c8 Mon Sep 17 00:00:00 2001 From: Hatterhat <31829017+Hatterhat@users.noreply.github.com> Date: Tue, 24 Dec 2024 17:05:29 -0600 Subject: [PATCH] Fixes .357 Heartseeker not homing in on people (#88696) Co-authored-by: Hatterhat --- .../projectiles/ammunition/ballistic/revolver.dm | 5 +++++ code/modules/projectiles/guns/energy/dueling.dm | 15 ++++++++------- code/modules/projectiles/projectile.dm | 5 +++-- .../projectiles/projectile/bullets/revolver.dm | 1 - 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/code/modules/projectiles/ammunition/ballistic/revolver.dm b/code/modules/projectiles/ammunition/ballistic/revolver.dm index 6e0c26af735..ffcb3df8981 100644 --- a/code/modules/projectiles/ammunition/ballistic/revolver.dm +++ b/code/modules/projectiles/ammunition/ballistic/revolver.dm @@ -22,6 +22,11 @@ name = ".357 heartseeker bullet casing" projectile_type = /obj/projectile/bullet/c357/heartseeker +/obj/item/ammo_casing/c357/heartseeker/ready_proj(atom/target, mob/living/user, quiet, zone_override, atom/fired_from) + . = ..() + if(!isturf(target)) + loaded_projectile.set_homing_target(target) + // 7.62x38mmR (Nagant Revolver) /obj/item/ammo_casing/n762 diff --git a/code/modules/projectiles/guns/energy/dueling.dm b/code/modules/projectiles/guns/energy/dueling.dm index 9a7fa9aa78b..95707874e72 100644 --- a/code/modules/projectiles/guns/energy/dueling.dm +++ b/code/modules/projectiles/guns/energy/dueling.dm @@ -298,15 +298,17 @@ /obj/item/ammo_casing/energy/duel/ready_proj(atom/target, mob/living/user, quiet, zone_override) . = ..() - var/obj/projectile/energy/duel/D = loaded_projectile - D.setting = setting - D.update_appearance() + var/obj/projectile/energy/duel/dueling_projectile = loaded_projectile + dueling_projectile.setting = setting + dueling_projectile.update_appearance() + if(!isturf(target)) + dueling_projectile.set_homing_target(target) /obj/item/ammo_casing/energy/duel/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread, atom/fired_from) . = ..() - var/obj/effect/temp_visual/dueling_chaff/C = new(get_turf(user)) - C.setting = setting - C.update_appearance() + var/obj/effect/temp_visual/dueling_chaff/chaff = new(get_turf(user)) + chaff.setting = setting + chaff.update_appearance() //Projectile @@ -314,7 +316,6 @@ name = "dueling beam" icon_state = "declone" reflectable = FALSE - homing = TRUE var/setting /obj/projectile/energy/duel/update_icon() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 065a4899fc7..f907682305e 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -169,8 +169,9 @@ var/impact_light_color_override // Homing - /// If the projectile is homing. Warning - this changes projectile's processing logic, reverting it to segmented processing instead of new raymarching logic - var/homing = FALSE + /// If the projectile is currently homing. Warning - this changes projectile's processing logic, reverting it to segmented processing instead of new raymarching logic + /// This does not actually set up the projectile to home in on a target - you need to set that up with set_homing_target() on the projectile! + VAR_FINAL/homing = FALSE /// Target the projectile is homing on var/atom/homing_target /// Angles per move segment, distance is based on SSprojectiles.pixels_per_decisecond diff --git a/code/modules/projectiles/projectile/bullets/revolver.dm b/code/modules/projectiles/projectile/bullets/revolver.dm index 6513be9cfb7..273a0109c56 100644 --- a/code/modules/projectiles/projectile/bullets/revolver.dm +++ b/code/modules/projectiles/projectile/bullets/revolver.dm @@ -149,7 +149,6 @@ name = ".357 heartseeker bullet" icon_state = "gauss" damage = 50 - homing = TRUE homing_turn_speed = 120 // admin only really, for ocelot memes