From 5c959d8548a5a56a51268c345f4b8fb91fd245fa Mon Sep 17 00:00:00 2001 From: moxian Date: Tue, 5 Nov 2019 06:41:41 +0000 Subject: [PATCH] Fix odysseus syringes breaking when flying beyond max range. --- .../mecha/equipment/tools/medical_tools.dm | 58 +++++++++---------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 5b5f483b94f..aacd605b730 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -316,40 +316,38 @@ var/mob/originaloccupant = chassis.occupant spawn(0) src = null //if src is deleted, still process the syringe - for(var/i=0, i<6, i++) + var/max_range = 6 + for(var/i=0, i [M] was hit by the syringe!") - if(M.can_inject(null, TRUE)) - if(mechsyringe.reagents) - for(var/datum/reagent/A in mechsyringe.reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," - add_attack_logs(originaloccupant, M, "Shot with [src] containing [R], transferred [mechsyringe.reagents.total_volume] units") - mechsyringe.icon_state = initial(mechsyringe.icon_state) - mechsyringe.icon = initial(mechsyringe.icon) - mechsyringe.reagents.reaction(M, INGEST) - mechsyringe.reagents.trans_to(M, mechsyringe.reagents.total_volume) - M.take_organ_damage(2) - break - else if(mechsyringe.loc == trg) - mechsyringe.icon_state = initial(mechsyringe.icon_state) - mechsyringe.icon = initial(mechsyringe.icon) - mechsyringe.update_icon() - break - else - mechsyringe.icon_state = initial(mechsyringe.icon_state) - mechsyringe.icon = initial(mechsyringe.icon) - mechsyringe.update_icon() + if(!step_towards(mechsyringe,trg)) + break + + var/list/mobs = new + for(var/mob/living/carbon/M in mechsyringe.loc) + mobs += M + var/mob/living/carbon/M = safepick(mobs) + if(M) + var/R + mechsyringe.visible_message(" [M] was hit by the syringe!") + if(M.can_inject(null, TRUE)) + if(mechsyringe.reagents) + for(var/datum/reagent/A in mechsyringe.reagents.reagent_list) + R += A.id + " (" + R += num2text(A.volume) + ")," + add_attack_logs(originaloccupant, M, "Shot with [src] containing [R], transferred [mechsyringe.reagents.total_volume] units") + mechsyringe.reagents.reaction(M, INGEST) + mechsyringe.reagents.trans_to(M, mechsyringe.reagents.total_volume) + M.take_organ_damage(2) + break + else if(mechsyringe.loc == trg) break sleep(1) + if(mechsyringe) + // Revert the syringe icon to normal one once it stops flying. + mechsyringe.icon_state = initial(mechsyringe.icon_state) + mechsyringe.icon = initial(mechsyringe.icon) + mechsyringe.update_icon() return 1