Adds a flipping skillchip, the Chipped quirk, a chip connector implant, and a quirk to spawn with it. (#87082)

## About The Pull Request

Added the FOSBURY skillchip, found in hacked toy vendors.
This skillchip allows you to bypass the emote cooldown when flipping or
spinning. However, if used too often, it will lower the chip's
integrity. At first, this is harmless, emitting sparks only, but at a
certain point, your head starts smoking, your brain begins
short-circuiting, and once the chip has lost all integrity your head
will explode in a shower of gore, giving you a cranial fissure!

Added the Chipped quirk. It allows you to spawn with one skillchip. Of
note here is that the only chips you can spawn with are the 'default'
skillchips found in the toy vendor, you can NOT spawn in with the
fosbury chip or with the musical one.

Added the Chip Connector quirk. It contains a new implant, the chip
connector, which allows you to install and take out skillchips at any
time. Being EMPed will cause it to drop one random skillchip, and if you
try using it while it's malfunctioning you'll take out a bit of your
brain instead. It can also be made at the exosuit fabricator after basic
research.

Renamed the organ slots for brain implants and made the connector
implant take the CNS slot.
## Why It's Good For The Game

> Added the FOSBURY skillchip, found in hacked toy vendors.
This skillchip allows you to bypass the emote cooldown when flipping or
spinning. However, if used too often, it will lower the chip's
integrity. At first, this is harmless, emitting sparks only, but at a
certain point, your head starts smoking, your brain begins
short-circuiting, and once the chip has lost all integrity your head
will explode in a shower of gore, giving you a cranial fissure!

During the time flipping was bugged to have no cooldown or delay, it was
really funny seeing people flip at increasingly higher speeds. Many
people miss it, and to be honest, so do I. But everything needs limits
or it stops being funny and ends up being overdone. To this end this
skillchip lets people relive those days of glory, until they go out in a
beautiful explosion. The chip will last a very long while if well taken
care of, and there are plenty of warning signs before it gets too risky
to use, but we know what players are actually gonna do, and I am looking
forward to it.

> Added the Chipped quirk. It allows you to spawn with one skillchip. Of
note here is that the only chips you can spawn with are the 'default'
skillchips found in the toy vendor, you can NOT spawn in with the
fosbury chip or with the musical one.

Chips can be kind of neat sometimes, and I think always having one as
part of your character can make for some fun things as the consistency
of it makes it more likely to stick in your mind to do stuff with.
> 'but can't you just go to the vendor at the start of every shift?'
Sure. But we have loadouts. We have tagger, musician, and many other
things that are 'roundstart bloat', and while that by itself is not an
excuse, it's part of the design of character setup: Minimizing the time
spent running around the station for things your character is supposed
to have for their personality/roleplay/gimmick. They're paying the cost
of quirk points for it, anyways.

> Added the Chip Connector quirk. It contains a new implant, the chip
connector, which allows you to install and take out skillchips at any
time. Being EMPed will cause it to drop one random skillchip, and if you
try using it while it's malfunctioning you'll take out a bit of your
brain instead. It can also be made at the exosuit fabricator after basic
research.

I like the idea of having a gross usb drive on the back of your brain
that you shove chips into and out of, especially if it drops pieces of
your brain when malfunctioning. It also adds a little bit of extra
relevance to skillchips now that you don't need to spend 15 (!!!)
seconds inside a skillstation to add one. The cost is, as stated, quite
literally losing your brain on EMP's and the moderately expensive sum of
4 points.

> Renamed the organ slots for brain implants and made the connector
implant take the CNS slot.

It annoys me that there were organ slots for 'anti drop implant'. Now
they're just slots for anything meant to connect to the
cerebellum/central nervous system, making it less brute forcey and also
adding the start of some fun exclusivity between brain implants.
## Changelog
🆑
add: Added the FOSBURY skillchip, found in hacked toy vendors. This
skillchip allows you to bypass the emote cooldown when flipping or
spinning. However, if used too often, it will lower the chip's integrity
and cause malfunctions.
add: Added the Chipped quirk. It allows you to spawn with one base
skillchip. (not the one above)
add: Added the Chip Connector quirk. It contains a new implant, the chip
connector, which allows you to install and take out skillchips at any
time.
code: Renamed the organ slots for brain implants and made the connector
implant take the CNS slot.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
# Conflicts:
#	code/datums/emotes.dm
This commit is contained in:
carlarctg
2024-10-14 05:47:43 -03:00
committed by lessthanthree
parent 2727bb4fb4
commit 85d32d85a0
21 changed files with 531 additions and 17 deletions

View File

@@ -40,7 +40,7 @@
icon_state = "brain_implant_antidrop"
var/active = FALSE
var/list/stored_items = list()
slot = ORGAN_SLOT_BRAIN_ANTIDROP
slot = ORGAN_SLOT_BRAIN_CEREBELLUM
actions_types = list(/datum/action/item_action/organ_action/toggle)
/obj/item/organ/internal/cyberimp/brain/anti_drop/ui_action_click()
@@ -100,7 +100,7 @@
name = "CNS rebooter implant"
desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned."
icon_state = "brain_implant_rebooter"
slot = ORGAN_SLOT_BRAIN_ANTISTUN
slot = ORGAN_SLOT_BRAIN_CNS
var/static/list/signalCache = list(
COMSIG_LIVING_STATUS_STUN,
@@ -179,6 +179,107 @@
organ_flags &= ~ORGAN_FAILING
implant_ready()
/obj/item/organ/internal/cyberimp/brain/connector
name = "CNS skillchip connector implant"
desc = "This cybernetic adds a port to the back of your head, where you can remove or add skillchips at will."
icon_state = "brain_implant_connector"
slot = ORGAN_SLOT_BRAIN_CNS
actions_types = list(/datum/action/item_action/organ_action/use)
/obj/item/organ/internal/cyberimp/brain/connector/ui_action_click()
to_chat(owner, span_warning("You start fiddling around with [src]..."))
playsound(owner, 'sound/items/taperecorder/tape_flip.ogg', 20, vary = TRUE) // asmr
if(!do_after(owner, 1.5 SECONDS, owner)) // othwerwise it doesnt appear
to_chat(owner, span_warning("You were interrupted!"))
return
if(organ_flags & ORGAN_FAILING)
var/holy_shit_my_brain = remove_brain()
if(holy_shit_my_brain)
to_chat(owner, span_warning("You take [holy_shit_my_brain] out of [src]. You stare at it for a moment in confusion."))
return
var/obj/item/skillchip/skillchip = owner.get_active_held_item()
if(skillchip)
if(istype(skillchip, /obj/item/skillchip))
insert_skillchip(skillchip)
else
to_chat(owner, span_warning("You try to insert [owner.get_active_held_item()] into [src], but it won't fit!")) // make it kill you if you shove a crayon inside or something
else // no inhand item, assume removal
var/obj/item/organ/internal/brain/chippy_brain = owner.get_organ_by_type(/obj/item/organ/internal/brain)
if(!chippy_brain)
CRASH("we using a brain implant wit no brain")
remove_skillchip(chippy_brain)
/obj/item/organ/internal/cyberimp/brain/connector/proc/insert_skillchip(obj/item/skillchip/skillchip)
var/fail_string = owner.implant_skillchip(skillchip, force = FALSE)
if(fail_string)
to_chat(owner, span_warning(fail_string))
playsound(owner, 'sound/machines/buzz/buzz-sigh.ogg', 10, vary = TRUE)
return
var/refail_string = skillchip.try_activate_skillchip(silent = FALSE, force = FALSE)
if(refail_string)
to_chat(owner, span_warning(fail_string))
playsound(owner, 'sound/machines/buzz/buzz-two.ogg', 10, vary = TRUE)
return
// success!
playsound(owner, 'sound/machines/chime.ogg', 10, vary = TRUE)
/obj/item/organ/internal/cyberimp/brain/connector/proc/remove_skillchip(obj/item/organ/internal/brain/chippy_brain)
var/obj/item/skillchip/skillchip = show_radial_menu(owner, owner, chippy_brain.skillchips)
if(skillchip)
owner.remove_skillchip(skillchip, silent = FALSE)
skillchip.forceMove(owner.drop_location())
owner.put_in_hands(skillchip, del_on_fail = FALSE)
playsound(owner, 'sound/machines/click.ogg', 10, vary = TRUE)
to_chat(owner, span_warning("You take [skillchip] out of [src]."))
return
to_chat(owner, span_warning("Your brain is empty!")) // heh
/obj/item/organ/internal/cyberimp/brain/connector/emp_act(severity)
. = ..()
if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF)
return
organ_flags |= ORGAN_FAILING
var/loops = 1
if(severity != EMP_LIGHT)
loops = 2
for(var/i in 1 to loops)
// you either lose a chip or a bit of your brain
owner.visible_message(span_warning("Something falls to the ground from behind [owner]'s head."),\
span_boldwarning("You feel something fall off from behind your head."))
var/obj/item/organ/internal/brain/chippy_brain = owner.get_organ_by_type(ORGAN_SLOT_BRAIN)
var/obj/item/skillchip/skillchip = chippy_brain?.skillchips[1]
if(skillchip)
owner.remove_skillchip(skillchip, silent = TRUE)
skillchip.forceMove(owner.drop_location())
playsound(owner, 'sound/machines/terminal/terminal_eject.ogg', 25, TRUE)
else
remove_brain()
addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity)
/obj/item/organ/internal/cyberimp/brain/connector/proc/remove_brain(obj/item/organ/internal/brain/chippy_brain, severity = 1)
playsound(owner, 'sound/effects/meatslap.ogg', 25, TRUE)
if(!chippy_brain)
return
chippy_brain.apply_organ_damage(20 * severity)
chippy_brain.maxHealth -= 15 * severity // a bit of your brain fell off. again.
if(chippy_brain.damage >= chippy_brain.maxHealth)
chippy_brain.forceMove(owner.drop_location())
owner.visible_message(span_userdanger("[owner]'s brain falls off the back of [owner.p_their()] head!!!"), span_boldwarning("You feel like you're missing something."))
return chippy_brain
new /obj/effect/decal/cleanable/blood/gibs/up(get_turf(owner))
return FALSE
/obj/item/organ/internal/cyberimp/brain/connector/proc/reboot()
organ_flags &= ~ORGAN_FAILING
//[[[[MOUTH]]]]
/obj/item/organ/internal/cyberimp/mouth
zone = BODY_ZONE_PRECISE_MOUTH