diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index d3e7d7c395..4659c907a6 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -146,11 +146,9 @@
has_snowflake_deadsprite = TRUE
cyborg_pixel_offset = -16
hat_offset = INFINITY
- var/obj/item/I = new /obj/item/analyzer/nose/flavour(src)
- basic_modules += I
- I = new /obj/item/soap/tongue/flavour(src)
- basic_modules += I
- I = new /obj/item/dogborg/sleeper/K9/flavour(src)
+ basic_modules += new /obj/item/dogborg_nose(src)
+ basic_modules += new /obj/item/dogborg_tongue(src)
+ var/obj/item/dogborg/sleeper/K9/flavour/I = new(src)
if(istype(src, /obj/item/robot_module/engineering))
I.icon_state = "decompiler"
if(istype(src, /obj/item/robot_module/security))
diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
index 0a3bdb727d..b0b18e63a0 100644
--- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
+++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
@@ -265,20 +265,22 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
R.cell.give(500)
return
R.visible_message("[R] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...")
- else if(ishuman(target))
+ else if(isliving(target))
var/mob/living/L = target
- if(status == 0 && check_zone(R.zone_selected) == "head")
- R.visible_message("\the [R] affectionally licks \the [L]'s face!", "You affectionally lick \the [L]'s face!")
- playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
- if(istype(L) && L.fire_stacks > 0)
- L.adjust_fire_stacks(-10)
- return
- else if(status == 0)
- R.visible_message("\the [R] affectionally licks \the [L]!", "You affectionally lick \the [L]!")
- playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
- if(istype(L) && L.fire_stacks > 0)
- L.adjust_fire_stacks(-10)
- return
+ if(!status)
+ if(L.ckey && !(L.client?.prefs.lickable))
+ to_chat(R, "ERROR ERROR: Target not lickable. Aborting display-of-affection subroutine.")
+ return
+ if(check_zone(R.zone_selected) == "head")
+ R.visible_message("\the [R] affectionally licks \the [L]'s face!", "You affectionally lick \the [L]'s face!")
+ playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
+ if(istype(L) && L.fire_stacks > 0)
+ L.adjust_fire_stacks(-10)
+ else
+ R.visible_message("\the [R] affectionally licks \the [L]!", "You affectionally lick \the [L]!")
+ playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
+ if(istype(L) && L.fire_stacks > 0)
+ L.adjust_fire_stacks(-10)
else
if(R.cell.charge <= 800)
to_chat(R, "Insufficent Power!")
@@ -310,35 +312,43 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
return
//Nerfed tongue for flavour reasons (haha geddit?). Used for aux skins for regular borgs
-/obj/item/soap/tongue/flavour
+/obj/item/dogborg_tongue
+ name = "synthetic tongue"
+ desc = "Useful for slurping mess off the floor before affectionally licking the crew members in the face."
+ icon = 'icons/mob/dogborg.dmi'
+ icon_state = "synthtongue"
+ hitsound = 'sound/effects/attackblob.ogg'
desc = "For giving affectionate kisses."
+ item_flags = NOBLUDGEON
-/obj/item/soap/tongue/flavour/attack_self(mob/user)
- return
-
-/obj/item/soap/tongue/flavour/afterattack(atom/target, mob/user, proximity)
- if(!proximity)
+/obj/item/dogborg_tongue/afterattack(atom/target, mob/user, proximity)
+ . = ..()
+ if(!proximity || !isliving(target))
return
var/mob/living/silicon/robot/R = user
- if(ishuman(target))
- var/mob/living/L = target
- if(status == 0 && check_zone(R.zone_selected) == "head")
- R.visible_message("\the [R] affectionally licks \the [L]'s face!", "You affectionally lick \the [L]'s face!")
- playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
- return
- else if(status == 0)
- R.visible_message("\the [R] affectionally licks \the [L]!", "You affectionally lick \the [L]!")
- playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
- return
+ var/mob/living/L = target
+ if(L.ckey && !(L.client?.prefs.lickable))
+ to_chat(R, "ERROR ERROR: Target not lickable. Aborting display-of-affection subroutine.")
+ return
-//Same as above but for noses
-/obj/item/analyzer/nose/flavour/AltClick(mob/user)
- return
+ if(check_zone(R.zone_selected) == "head")
+ R.visible_message("\the [R] affectionally licks \the [L]'s face!", "You affectionally lick \the [L]'s face!")
+ playsound(R, 'sound/effects/attackblob.ogg', 50, 1)
+ else
+ R.visible_message("\the [R] affectionally licks \the [L]!", "You affectionally lick \the [L]!")
+ playsound(R, 'sound/effects/attackblob.ogg', 50, 1)
-/obj/item/analyzer/nose/flavour/attack_self(mob/user)
- return
-/obj/item/analyzer/nose/flavour/afterattack(atom/target, mob/user, proximity)
+/obj/item/dogborg_nose
+ name = "boop module"
+ icon = 'icons/mob/dogborg.dmi'
+ icon_state = "nose"
+ desc = "The BOOP module"
+ flags_1 = CONDUCT_1|NOBLUDGEON
+ force = 0
+
+/obj/item/dogborg_nose/afterattack(atom/target, mob/user, proximity)
+ . = ..()
if(!proximity)
return
do_attack_animation(target, null, src)