diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index c622bd2c083..6287bd5a1d7 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -147,7 +147,7 @@
var/mob/living/carbon/human/H = current
if (istype(current, /mob/living/carbon/human))
/** Impanted**/
- if(H.is_loyalty_implanted())
+ if(isloyal(H))
text = "Loyalty Implant:Remove|Implanted"
else
text = "Loyalty Implant:No Implant|Implant him!"
@@ -157,7 +157,7 @@
if (ticker.mode.config_tag=="revolution")
text += uppertext(text)
text = "[text]: "
- if (H.is_loyalty_implanted())
+ if (isloyal(H))
text += "LOYAL EMPLOYEE|headrev|rev"
else if (src in ticker.mode.head_revolutionaries)
text = "employee|HEADREV|rev"
@@ -193,7 +193,7 @@
if (ticker.mode.config_tag=="cult")
text = uppertext(text)
text = "[text]: "
- if (H.is_loyalty_implanted())
+ if (isloyal(H))
text += "LOYAL EMPLOYEE|cultist"
else if (src in ticker.mode.cult)
text += "employee|CULTIST"
@@ -307,7 +307,7 @@
if (ticker.mode.config_tag=="traitor" || ticker.mode.config_tag=="traitorchan")
text = uppertext(text)
text = "[text]: "
- if (H.is_loyalty_implanted())
+ if (isloyal(H))
text +="traitor|LOYAL EMPLOYEE"
else
if (src in ticker.mode.traitors)
@@ -619,9 +619,9 @@
switch(href_list["implant"])
if("remove")
for(var/obj/item/weapon/implant/loyalty/I in H.contents)
- for(var/obj/item/organ/external/organs in H.organs)
- if(I in organs.implants)
- qdel(I)
+ if(I && I.implanted)
+ I.removed(H)
+ qdel(I)
H << "\blue Your loyalty implant has been deactivated."
log_admin("[key_name(usr)] has deactivated [key_name(current)]'s loyalty implant")
message_admins("[key_name_admin(usr)] has deactivated [key_name_admin(current)]'s loyalty implant")
@@ -629,9 +629,6 @@
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
- var/obj/item/organ/external/affected = H.organs_by_name["head"]
- affected.implants += L
- L.part = affected
H.sec_hud_set_implants()
log_admin("[key_name(usr)] has given [key_name(current)] a loyalty implant")
@@ -655,11 +652,6 @@
cult.memorize_cult_objectives(src)
current << "\red The nanobots in the loyalty implant remove all thoughts about being in a cult. Have a productive day!"
memory = ""
- if(src in ticker.mode.traitors)
- ticker.mode.traitors -= src
- special_role = null
- current << "\red The nanobots in the loyalty implant remove all thoughts about being a traitor to Nanotrasen. Have a nice day!"
- log_admin("[key_name_admin(usr)] has de-traitor'ed [current].")
else if (href_list["revolution"])
diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm
index 06b09867e6e..a0059416276 100644
--- a/code/game/gamemodes/autotraitor/autotraitor.dm
+++ b/code/game/gamemodes/autotraitor/autotraitor.dm
@@ -92,9 +92,8 @@
if(ishuman(player.current))
var/mob/living/carbon/human/H = player.current
for(var/obj/item/weapon/implant/loyalty/I in H.contents)
- for(var/obj/item/organ/external/organs in H.organs)
- if(I in organs.implants)
- possible_traitors -= player
+ if(I && I.implanted)
+ possible_traitors -= player
//message_admins("Live Players: [playercount]")
//message_admins("Live Traitors: [traitorcount]")
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index 0ec4d72b5de..87cc9c46b58 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -22,7 +22,7 @@
return 0
if(ishuman(mind.current))
var/mob/living/carbon/human/H = mind.current
- if(H.is_loyalty_implanted())
+ if(isloyal(H))
return 0
return 1
diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm
index 07163cb3669..f45253262d1 100644
--- a/code/game/gamemodes/heist/heist.dm
+++ b/code/game/gamemodes/heist/heist.dm
@@ -113,12 +113,9 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind'
limb.status &= ~(ORGAN_DESTROYED | ORGAN_ROBOT)
//Now apply cortical stack.
- var/obj/item/organ/external/E = vox.get_organ("head")
var/obj/item/weapon/implant/cortical/I = new(vox)
I.imp_in = vox
I.implanted = 1
- I.part = E
- E.implants += I
cortical_stacks += I
vox.equip_vox_raider()
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
index b752a9f28aa..9fe84dba496 100644
--- a/code/game/jobs/job/security.dm
+++ b/code/game/jobs/job/security.dm
@@ -43,9 +43,6 @@
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
- var/obj/item/organ/external/affected = H.organs_by_name["head"]
- affected.implants += L
- L.part = affected
H.sec_hud_set_implants()
return 1
@@ -90,9 +87,6 @@
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
- var/obj/item/organ/external/affected = H.organs_by_name["head"]
- affected.implants += L
- L.part = affected
H.sec_hud_set_implants()
return 1
@@ -146,9 +140,6 @@
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
- var/obj/item/organ/external/affected = H.organs_by_name["head"]
- affected.implants += L
- L.part = affected
H.sec_hud_set_implants()
H.dna.SetSEState(SOBERBLOCK,1)
@@ -194,9 +185,6 @@
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
- var/obj/item/organ/external/affected = H.organs_by_name["head"]
- affected.implants += L
- L.part = affected
H.sec_hud_set_implants()
return 1
@@ -233,9 +221,6 @@
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
- var/obj/item/organ/external/affected = H.organs_by_name["head"]
- affected.implants += L
- L.part = affected
H.sec_hud_set_implants()
return 1
@@ -274,8 +259,5 @@
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
- var/obj/item/organ/external/affected = H.organs_by_name["head"]
- affected.implants += L
- L.part = affected
H.sec_hud_set_implants()
return 1
\ No newline at end of file
diff --git a/code/game/jobs/job/supervisor.dm b/code/game/jobs/job/supervisor.dm
index 0438faec5fc..2475df770b3 100644
--- a/code/game/jobs/job/supervisor.dm
+++ b/code/game/jobs/job/supervisor.dm
@@ -38,11 +38,8 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
- captain_announcement.Announce("All hands, captain [H.real_name] on deck!")
- var/obj/item/organ/external/affected = H.organs_by_name["head"]
- affected.implants += L
- L.part = affected
H.sec_hud_set_implants()
+ captain_announcement.Announce("All hands, captain [H.real_name] on deck!")
callHook("captain_spawned", list("captain" = H))
return 1
@@ -137,9 +134,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
- var/obj/item/organ/external/affected = H.organs_by_name["head"]
- affected.implants += L
- L.part = affected
H.sec_hud_set_implants()
return 1
@@ -187,9 +181,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
- var/obj/item/organ/external/affected = H.organs_by_name["head"]
- affected.implants += L
- L.part = affected
H.sec_hud_set_implants()
return 1
@@ -231,9 +222,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
- var/obj/item/organ/external/affected = H.organs_by_name["head"]
- affected.implants += L
- L.part = affected
H.sec_hud_set_implants()
return 1
@@ -274,8 +262,5 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
- var/obj/item/organ/external/affected = H.organs_by_name["head"]
- affected.implants += L
- L.part = affected
H.sec_hud_set_implants()
return 1
\ No newline at end of file
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index ac0b901ddbf..4fbbf78d9ef 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -196,7 +196,6 @@
/obj/machinery/body_scanconsole
var/obj/machinery/bodyscanner/connected
- var/known_implants = list(/obj/item/weapon/implant/chem, /obj/item/weapon/implant/death_alarm, /obj/item/weapon/implant/loyalty, /obj/item/weapon/implant/tracking)
var/delete
var/temphtml
name = "Body Scanner Console"
@@ -363,8 +362,6 @@
for(var/obj/I in E.implants)
var/implantSubData[0]
implantSubData["name"] = I.name
- if(is_type_in_list(I, known_implants))
- implantSubData["known"] = 1
implantData.Add(list(implantSubData))
@@ -571,10 +568,7 @@
var/unknown_body = 0
for(var/I in e.implants)
- if(is_type_in_list(I,known_implants))
- imp += "[I] implanted:"
- else
- unknown_body++
+ unknown_body++
if(unknown_body || e.hidden)
imp += "Unknown body present:"
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 91c6c6726e1..c466c5ba811 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -8,7 +8,6 @@
var/activated = 1 //1 for implant types that can be activated, 0 for ones that are "always on" like loyalty implants
var/implanted = null
var/mob/living/imp_in = null
- var/obj/item/organ/external/part = null
item_color = "b"
var/allow_multiple = 0
var/uses = -1
@@ -49,10 +48,6 @@
implanted = 1
if(istype(source, /mob/living/carbon/human))
var/mob/living/carbon/human/H = source
- if(user)
- var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
- affected.implants += src
- part = affected
H.sec_hud_set_implants()
if(user)
diff --git a/code/game/objects/items/weapons/implants/implant_death_alarm.dm b/code/game/objects/items/weapons/implants/implant_death_alarm.dm
index 886fd3f1385..58b9de4589a 100644
--- a/code/game/objects/items/weapons/implants/implant_death_alarm.dm
+++ b/code/game/objects/items/weapons/implants/implant_death_alarm.dm
@@ -16,6 +16,10 @@
Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
return dat
+/obj/item/weapon/implant/death_alarm/Destroy()
+ processing_objects.Remove(src)
+ return ..()
+
/obj/item/weapon/implant/death_alarm/process()
if(!implanted)
return
@@ -38,7 +42,7 @@
else
a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm")
qdel(a)
- processing_objects.Remove(src)
+ qdel(src)
if ("emp")
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
var/name = prob(50) ? t.name : pick(teleportlocs)
@@ -48,7 +52,7 @@
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm")
qdel(a)
- processing_objects.Remove(src)
+ qdel(src)
/obj/item/weapon/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this
activate("emp") //let's shout that this dude is dead
diff --git a/code/game/objects/items/weapons/implants/implant_traitor.dm b/code/game/objects/items/weapons/implants/implant_traitor.dm
index ba89e970de8..fdb30eaae8e 100644
--- a/code/game/objects/items/weapons/implants/implant_traitor.dm
+++ b/code/game/objects/items/weapons/implants/implant_traitor.dm
@@ -17,62 +17,64 @@
return dat
/obj/item/weapon/implant/traitor/implant(mob/M, mob/user)
- var/mob/living/carbon/human/H = M
- if(ismindslave(H))
- H.visible_message("[H] seems to resist the implant!", "You feel a strange sensation in your head that quickly dissipates.")
- qdel(src)
- return -1
- if(..())
- var/list/implanters
- var/ref = "\ref[user.mind]"
- if(!ishuman(M))
- return 0
- if(!M.mind)
- return 0
- if(M == user)
- user << "Making yourself loyal to yourself was a great idea! Perhaps even the best idea ever! Actually, you just feel like an idiot."
- if(isliving(user))
- var/mob/living/L = user
- L.adjustBrainLoss(20)
- removed(M)
- qdel(src)
- return -1
- if(isloyal(H))
+ if(!activated) //So you can't just keep taking it out and putting it back into other people.
+ var/mob/living/carbon/human/H = M
+ if(ismindslave(H))
H.visible_message("[H] seems to resist the implant!", "You feel a strange sensation in your head that quickly dissipates.")
- removed(M)
qdel(src)
return -1
- H.implanting = 1
- H << "You feel completely loyal to [user.name]."
- if(!(user.mind in ticker.mode:implanter))
- ticker.mode:implanter[ref] = list()
- implanters = ticker.mode:implanter[ref]
- implanters.Add(H.mind)
- ticker.mode.implanted.Add(H.mind)
- ticker.mode.implanted[H.mind] = user.mind
- //ticker.mode:implanter[user.mind] += H.mind
- ticker.mode:implanter[ref] = implanters
- ticker.mode.traitors += H.mind
- H.mind.special_role = "traitor"
- H << "You're now completely loyal to [user.name]! You now must lay down your life to protect them and assist in their goals at any cost."
- var/datum/objective/protect/p = new
- p.owner = H.mind
- p.target = user:mind
- p.explanation_text = "Obey every order from and protect [user:real_name], the [user:mind:assigned_role=="MODE" ? (user:mind:special_role) : (user:mind:assigned_role)]."
- H.mind.objectives += p
- for(var/datum/objective/objective in H.mind.objectives)
- H << "Objective #1: [objective.explanation_text]"
+ if(..())
+ var/list/implanters
+ var/ref = "\ref[user.mind]"
+ if(!ishuman(M))
+ return 0
+ if(!M.mind)
+ return 0
+ if(M == user)
+ user << "Making yourself loyal to yourself was a great idea! Perhaps even the best idea ever! Actually, you just feel like an idiot."
+ if(isliving(user))
+ var/mob/living/L = user
+ L.adjustBrainLoss(20)
+ removed(M)
+ qdel(src)
+ return -1
+ if(isloyal(H))
+ H.visible_message("[H] seems to resist the implant!", "You feel a strange sensation in your head that quickly dissipates.")
+ removed(M)
+ qdel(src)
+ return -1
+ H.implanting = 1
+ H << "You feel completely loyal to [user.name]."
+ if(!(user.mind in ticker.mode:implanter))
+ ticker.mode:implanter[ref] = list()
+ implanters = ticker.mode:implanter[ref]
+ implanters.Add(H.mind)
+ ticker.mode.implanted.Add(H.mind)
+ ticker.mode.implanted[H.mind] = user.mind
+ //ticker.mode:implanter[user.mind] += H.mind
+ ticker.mode:implanter[ref] = implanters
+ ticker.mode.traitors += H.mind
+ H.mind.special_role = "traitor"
+ H << "You're now completely loyal to [user.name]! You now must lay down your life to protect them and assist in their goals at any cost."
+ var/datum/objective/protect/p = new
+ p.owner = H.mind
+ p.target = user:mind
+ p.explanation_text = "Obey every order from and protect [user:real_name], the [user:mind:assigned_role=="MODE" ? (user:mind:special_role) : (user:mind:assigned_role)]."
+ H.mind.objectives += p
+ for(var/datum/objective/objective in H.mind.objectives)
+ H << "Objective #1: [objective.explanation_text]"
- ticker.mode.update_traitor_icons_added(user.mind)
- ticker.mode.update_traitor_icons_added(H.mind)//handles datahuds/observerhuds
+ ticker.mode.update_traitor_icons_added(user.mind)
+ ticker.mode.update_traitor_icons_added(H.mind)//handles datahuds/observerhuds
- if(user.mind.som)//do not add if not a traitor..and you just picked up an implanter in the hall...
- var/datum/mindslaves/slaved = user.mind.som
- H.mind.som = slaved
- slaved.serv += H
- slaved.add_serv_hud(user.mind,"syndicate")//handles master servent icons
- slaved.add_serv_hud(H.mind,"mindslave")
+ if(user.mind.som)//do not add if not a traitor..and you just picked up an implanter in the hall...
+ var/datum/mindslaves/slaved = user.mind.som
+ H.mind.som = slaved
+ slaved.serv += H
+ slaved.add_serv_hud(user.mind,"syndicate")//handles master servent icons
+ slaved.add_serv_hud(H.mind,"mindslave")
- log_admin("[ckey(user.key)] has mind-slaved [ckey(H.key)].")
- return 1
- return 0
\ No newline at end of file
+ log_admin("[ckey(user.key)] has mind-slaved [ckey(H.key)].")
+ activated = 1
+ return 1
+ return 0
\ No newline at end of file
diff --git a/code/game/response_team.dm b/code/game/response_team.dm
index 68457089d09..b17e51fef19 100644
--- a/code/game/response_team.dm
+++ b/code/game/response_team.dm
@@ -248,6 +248,7 @@ var/send_emergency_team
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)
L.imp_in = M
L.implanted = 1
+ M.sec_hud_set_implants()
switch(officer_type)
if("Engineer")
diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm
index 798dd02b85f..038c9a27b3f 100644
--- a/code/modules/admin/verbs/one_click_antag.dm
+++ b/code/modules/admin/verbs/one_click_antag.dm
@@ -520,12 +520,9 @@ client/proc/one_click_antag()
limb.status &= ~(ORGAN_DESTROYED | ORGAN_ROBOT)
//Now apply cortical stack.
- var/obj/item/organ/external/E = new_vox.get_organ("head")
var/obj/item/weapon/implant/cortical/I = new(new_vox)
I.imp_in = new_vox
I.implanted = 1
- I.part = E
- E.implants += I
cortical_stacks += I
ticker.mode.traitors += new_vox.mind
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index d34b998b39c..955d40c9724 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -160,8 +160,7 @@ var/global/sent_strike_team = 0
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src)//Here you go Deuryn
L.imp_in = src
L.implanted = 1
-
-
+ sec_hud_set_implants()
var/obj/item/weapon/card/id/W = new(src)
W.name = "[real_name]'s ID Card"
diff --git a/code/modules/admin/verbs/vox_raiders.dm b/code/modules/admin/verbs/vox_raiders.dm
index 33854109bc4..c5e370f06f7 100644
--- a/code/modules/admin/verbs/vox_raiders.dm
+++ b/code/modules/admin/verbs/vox_raiders.dm
@@ -63,9 +63,6 @@ var/global/vox_tick = 1
var/obj/item/weapon/implant/cortical/I = new(src)
I.imp_in = src
I.implanted = 1
- var/obj/item/organ/external/affected = src.get_organ("head")
- affected.implants += I
- I.part = affected
if(ticker.mode && ( istype(ticker.mode,/datum/game_mode/vox/heist) ) )
var/datum/game_mode/vox/heist/M = ticker.mode
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index cc1079c21ee..2590051a7fc 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -455,14 +455,6 @@
var/armor_block = run_armor_check(affecting, "melee")
apply_damage(damage, BRUTE, affecting, armor_block)
-/mob/living/carbon/human/proc/is_loyalty_implanted()
- for(var/L in contents)
- if(istype(L, /obj/item/weapon/implant/loyalty))
- for(var/obj/item/organ/external/O in organs)
- if(L in O.implants)
- return 1
- return 0
-
/mob/living/carbon/human/attack_slime(mob/living/carbon/slime/M as mob)
if(M.Victim) return // can't attack while eating!
diff --git a/code/modules/mob/living/carbon/superheroes.dm b/code/modules/mob/living/carbon/superheroes.dm
index 7200ac6fa04..d98a72f8e98 100644
--- a/code/modules/mob/living/carbon/superheroes.dm
+++ b/code/modules/mob/living/carbon/superheroes.dm
@@ -91,9 +91,6 @@
var/obj/item/weapon/implant/freedom/L = new/obj/item/weapon/implant/freedom(H)
L.imp_in = H
L.implanted = 1
- var/obj/item/organ/external/affected = H.organs_by_name["head"]
- affected.implants += L
- L.part = affected
return 1
diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm
index d0638dcc1d4..25ebaf28f6c 100644
--- a/code/modules/surgery/implant.dm
+++ b/code/modules/surgery/implant.dm
@@ -156,7 +156,7 @@
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
-
+ var/obj/item/weapon/implant/I = locate(/obj/item/weapon/implant) in target
if (affected.implants.len)
@@ -166,8 +166,6 @@
"\blue You take [obj] out of [target]'s [affected.name]s with \the [tool]." )
affected.implants -= obj
- target.sec_hud_set_implants()
-
//Handle possessive brain borers.
if(istype(obj,/mob/living/simple_animal/borer))
var/mob/living/simple_animal/borer/worm = obj
@@ -177,26 +175,29 @@
worm.leave_host()
obj.loc = get_turf(target)
- if(istype(obj,/obj/item/weapon/implant))
- var/obj/item/weapon/implant/imp = obj
- imp.removed(target)
- var/obj/item/weapon/implantcase/case
+ else if(I && target_zone == "chest") //implant removal only works on the chest.
+ user.visible_message("[user] takes something out of [target]'s [affected.name] with \the [tool].", \
+ "You take [I] out of [target]'s [affected.name]s with \the [tool]." )
- if(istype(user.get_item_by_slot(slot_l_hand), /obj/item/weapon/implantcase))
- case = user.get_item_by_slot(slot_l_hand)
- else if(istype(user.get_item_by_slot(slot_r_hand), /obj/item/weapon/implantcase))
- case = user.get_item_by_slot(slot_r_hand)
- else
- case = locate(/obj/item/weapon/implantcase) in get_turf(target)
+ I.removed(target)
- if(case && !case.imp)
- case.imp = imp
- imp.loc = case
- case.update_icon()
- user.visible_message("[user] places [imp] into [case]!", "You place [imp] into [case].")
- else
- qdel(imp)
+ var/obj/item/weapon/implantcase/case
+
+ if(istype(user.get_item_by_slot(slot_l_hand), /obj/item/weapon/implantcase))
+ case = user.get_item_by_slot(slot_l_hand)
+ else if(istype(user.get_item_by_slot(slot_r_hand), /obj/item/weapon/implantcase))
+ case = user.get_item_by_slot(slot_r_hand)
+ else
+ case = locate(/obj/item/weapon/implantcase) in get_turf(target)
+
+ if(case && !case.imp)
+ case.imp = I
+ I.loc = case
+ case.update_icon()
+ user.visible_message("[user] places [I] into [case]!", "You place [I] into [case].")
+ else
+ qdel(I)
else if (affected.hidden)
user.visible_message("\blue [user] takes something out of incision on [target]'s [affected.name] with \the [tool].", \
diff --git a/html/changelogs/implant-refactor-II-fox-mccloud.yml b/html/changelogs/implant-refactor-II-fox-mccloud.yml
new file mode 100644
index 00000000000..def9445392b
--- /dev/null
+++ b/html/changelogs/implant-refactor-II-fox-mccloud.yml
@@ -0,0 +1,7 @@
+
+author: Fox McCloud
+
+delete-after: True
+
+changes:
+ - tweaks: "Tweaks implant behavior to be more consistent and unified."
\ No newline at end of file