Adds the bluespace anchor cybernetic implant (#26978)

* Anchor? I hardly know her!

* biochip code my hated

* yeah that's fair

* Apply suggestions from code review

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com>

---------

Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com>
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
This commit is contained in:
Qwertytoforty
2024-10-25 18:20:45 +00:00
committed by GitHub
co-authored by Luc
parent 8202e9a438
commit dc7d24c28c
21 changed files with 132 additions and 7 deletions
@@ -734,6 +734,51 @@
if(H.stat == CONSCIOUS)
to_chat(H, "<span class='notice'>You feel your heart beating again!</span>")
/obj/item/organ/internal/cyberimp/chest/bluespace_anchor
name = "bluespace anchor implant"
desc = "This large cybernetic implant anchors you in bluespace, preventing almost any teleportation effects from working. It disrupts GPS systems however."
icon_state = "bluespace_anchor"
implant_overlay = null
slot = "bluespace_anchor"
origin_tech = "bluespace=6;biotech=4"
/obj/item/organ/internal/cyberimp/chest/bluespace_anchor/insert(mob/living/carbon/M, special = FALSE)
..()
RegisterSignal(M, COMSIG_MOVABLE_TELEPORTING, PROC_REF(on_teleport))
RegisterSignal(M, COMSIG_MOB_PRE_JAUNT, PROC_REF(on_jaunt))
for(var/obj/item/bio_chip/tracking/T in M)
if(T && T.implanted)
qdel(T)
/obj/item/organ/internal/cyberimp/chest/bluespace_anchor/remove(mob/living/carbon/M, special = FALSE)
UnregisterSignal(M, COMSIG_MOVABLE_TELEPORTING)
UnregisterSignal(M, COMSIG_MOB_PRE_JAUNT)
return ..()
/// Blocks teleports and stuns the would-be-teleportee.
/obj/item/organ/internal/cyberimp/chest/bluespace_anchor/proc/on_teleport(mob/living/teleportee, atom/destination, channel)
SIGNAL_HANDLER // COMSIG_MOVABLE_TELEPORTED
to_chat(teleportee, "<span class='userdanger'>You feel yourself teleporting, but are suddenly flung back to where you just were!</span>")
teleportee.Weaken(5 SECONDS)
var/datum/effect_system/spark_spread/spark_system = new()
spark_system.set_up(5, TRUE, teleportee)
spark_system.start()
return COMPONENT_BLOCK_TELEPORT
/// Prevents a user from entering a jaunt.
/obj/item/organ/internal/cyberimp/chest/bluespace_anchor/proc/on_jaunt(mob/living/jaunter)
SIGNAL_HANDLER // COMSIG_MOB_PRE_JAUNT
to_chat(jaunter, "<span class='userdanger'>As you attempt to jaunt, you slam directly into the barrier between realities and are sent crashing back into corporeality!</span>")
jaunter.Weaken(5 SECONDS)
var/datum/effect_system/spark_spread/spark_system = new()
spark_system.set_up(5, TRUE, jaunter)
spark_system.start()
return COMPONENT_BLOCK_JAUNT
/obj/item/organ/internal/cyberimp/chest/ipc_repair
name = "Reactive Repair Implant"
desc = "This implant reworks the IPC frame, in order to incorporate materials that return to their original shape after being damaged. Requires power to function."