mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 15:17:01 +01:00
+37






![tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>](/assets/img/avatar_default.png)


Alexis
GitHub
tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
ArcaneMusic
MrMelbert
Rhials
rageguy505
LemonInTheDark
John Willard
Aliceee2ch
Time-Green
Tsar-Salat
SmArtKar
Maxipat
SyncIt21
deltanedas
SimplyLogan
loganuk
Leland Kemble
FalloutFalcon
Roxy
Lucy
siliconOpossum
Isratosh
TheRyeGuyWhoWillNowDie
Neocloudy
Alexander V.
ElGitificador
Twaticus
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bloop
Cameron Lennox
Tim
Iamgoofball
Layzu666
Arturlang
_0Steven
mrmanlikesbt
Ben10Omintrix
John F. Kennedy
Cursor
Josh
Josh Powell
Yobrocharlie
Hardly3D
shayoki
LT3
21b4095dfd
Upstream 04/17/2026 fixes https://github.com/Bubberstation/Bubberstation/issues/5549 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com> Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: loganuk <fakeemail123@aol.com> Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> Co-authored-by: Lucy <lucy@absolucy.moe> Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com> Co-authored-by: Isratosh <Isratosh@hotmail.com> Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com> Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com> Co-authored-by: Alexander V. <volas@ya.ru> Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com> Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Tim <timothymtorres@gmail.com> Co-authored-by: Iamgoofball <iamgoofball@gmail.com> Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com> Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com> Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com> Co-authored-by: Josh <josh.adam.powell@gmail.com> Co-authored-by: Josh Powell <josh.powell@softwire.com> Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com> Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com> Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com> Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
150 lines
7.1 KiB
Plaintext
150 lines
7.1 KiB
Plaintext
|
|
//monkey sentience caps
|
|
/* SKYRAT EDIT REMOVAL
|
|
/obj/item/clothing/head/helmet/monkey_sentience
|
|
name = "monkey mind magnification helmet"
|
|
desc = "A fragile, circuitry embedded helmet for boosting the intelligence of a monkey to a higher level. You see several warning labels..."
|
|
icon_state = "monkeymind"
|
|
inhand_icon_state = null
|
|
strip_delay = 10 SECONDS
|
|
var/mob/living/carbon/human/magnification = null ///if the helmet is on a valid target (just works like a normal helmet if not (cargo please stop))
|
|
var/polling = FALSE///if the helmet is currently polling for targets (special code for removal)
|
|
var/light_colors = 1 ///which icon state color this is (red, blue, yellow)
|
|
/// This chance is increased by 7 every time the helmet fails to get a host, to dissuade spam. starts negative to add 1 safe reuse
|
|
var/rage_chance = -7
|
|
/// Currently used particle type
|
|
var/particle_path
|
|
|
|
/obj/item/clothing/head/helmet/monkey_sentience/Initialize(mapload)
|
|
. = ..()
|
|
light_colors = rand(1,3)
|
|
update_appearance()
|
|
|
|
/obj/item/clothing/head/helmet/monkey_sentience/examine(mob/user)
|
|
. = ..()
|
|
. += span_boldwarning("---WARNING: REMOVAL OF HELMET ON SUBJECT, OR REPEATED SENTIENCE GENERATION FAILURES MAY LEAD TO:---")
|
|
. += span_warning("BLOOD RAGE")
|
|
. += span_warning("BRAIN DEATH")
|
|
. += span_warning("PRIMAL GENE ACTIVATION")
|
|
. += span_warning("GENETIC MAKEUP MASS SUSCEPTIBILITY")
|
|
. += span_notice("Warranty voided if helmet is placed after more than ") + span_boldnotice("two") + span_notice(" mind magnification failures.")
|
|
. += span_boldnotice("Ask your CMO if mind magnification is right for you!")
|
|
|
|
/obj/item/clothing/head/helmet/monkey_sentience/update_icon_state()
|
|
. = ..()
|
|
icon_state = "[initial(icon_state)][light_colors][magnification ? "up" : null]"
|
|
|
|
/obj/item/clothing/head/helmet/monkey_sentience/equipped(mob/user, slot)
|
|
. = ..()
|
|
if(!(slot & ITEM_SLOT_HEAD))
|
|
return
|
|
if(!ismonkey(user) || user.ckey)
|
|
var/mob/living/something = user
|
|
to_chat(something, span_boldnotice("You feel a stabbing pain in the back of your head for a moment."))
|
|
something.apply_damage(5,BRUTE,BODY_ZONE_HEAD,FALSE,FALSE,FALSE) //notably: no damage resist (it's in your helmet), no damage spread (it's in your helmet)
|
|
playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
|
|
return
|
|
if(!(GLOB.ghost_role_flags & GHOSTROLE_STATION_SENTIENCE))
|
|
say("ERROR: Central Command has temporarily outlawed monkey sentience helmets in this sector. NEAREST LAWFUL SECTOR: 2.537 million light years away.")
|
|
return
|
|
magnification = user //this polls ghosts
|
|
visible_message(span_warning("[src] powers up!"))
|
|
playsound(src, 'sound/machines/ping.ogg', 30, TRUE)
|
|
RegisterSignal(magnification, COMSIG_SPECIES_LOSS, PROC_REF(make_fall_off))
|
|
polling = TRUE
|
|
var/mob/chosen_one = SSpolling.poll_ghosts_for_target(check_jobban = ROLE_SENTIENCE, poll_time = 5 SECONDS, checked_target = magnification, ignore_category = POLL_IGNORE_MONKEY_HELMET, alert_pic = magnification, role_name_text = "mind-magnified monkey")
|
|
polling = FALSE
|
|
if(!magnification)
|
|
return
|
|
if(isnull(chosen_one))
|
|
UnregisterSignal(magnification, COMSIG_SPECIES_LOSS)
|
|
magnification = null
|
|
visible_message(span_notice("[src] falls silent and drops on the floor. Maybe you should try again later?"))
|
|
if (particle_path)
|
|
remove_shared_particles(particle_path)
|
|
switch(rage_chance)
|
|
if(-7 to 0)
|
|
user.visible_message(span_notice("[src] falls silent and drops on the floor. Try again later?"))
|
|
playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
|
|
particle_path = null
|
|
if(7 to 13)
|
|
user.visible_message(span_notice("[src] sparkles momentarily, then falls silent and drops on the floor. Maybe you should try again later?"))
|
|
playsound(src, SFX_SPARKS, 30, TRUE)
|
|
do_sparks(2, FALSE, src)
|
|
particle_path = /particles/smoke/steam/mild
|
|
if(14 to 21)
|
|
user.visible_message(span_notice("[src] sparkles and shatters ominously, then falls silent and drops on the floor. Maybe you shouldn't try again later."))
|
|
do_sparks(4, FALSE, src)
|
|
playsound(src, SFX_SPARKS, 15, TRUE)
|
|
playsound(src, SFX_SHATTER, 30, TRUE)
|
|
particle_path = /particles/smoke/steam/bad
|
|
if(21 to INFINITY)
|
|
user.visible_message(span_notice("[src] buzzes and smokes heavily, then falls silent and drops on the floor. This is clearly a bad idea."))
|
|
do_sparks(6, FALSE, src)
|
|
playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE)
|
|
particle_path = /particles/smoke/steam
|
|
rage_chance += 7
|
|
if(particle_path)
|
|
add_shared_particles(particle_path)
|
|
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, remove_shared_particles), particle_path), 2 MINUTES)
|
|
addtimer(VARSET_CALLBACK(src, particle_path, null), 2 MINUTES)
|
|
|
|
if((rage_chance > 0) && prob(rage_chance)) // too much spam means agnry gorilla running at you
|
|
malfunction(user)
|
|
user.dropItemToGround(src)
|
|
return
|
|
|
|
magnification.PossessByPlayer(chosen_one.key)
|
|
playsound(src, 'sound/machines/microwave/microwave-end.ogg', 100, FALSE)
|
|
to_chat(magnification, span_notice("You're a mind magnified monkey! Protect your helmet with your life- if you lose it, your sentience goes with it!"))
|
|
var/policy = get_policy(ROLE_MONKEY_HELMET)
|
|
if(policy)
|
|
to_chat(magnification, policy)
|
|
icon_state = "[icon_state]up"
|
|
|
|
/obj/item/clothing/head/helmet/monkey_sentience/Destroy()
|
|
disconnect()
|
|
return ..()
|
|
|
|
/obj/item/clothing/head/helmet/monkey_sentience/proc/disconnect()
|
|
if(!magnification) //not put on a viable head
|
|
return
|
|
if(!polling)//put on a viable head, but taken off after polling finished.
|
|
if(magnification.client)
|
|
to_chat(magnification, span_userdanger("You feel your flicker of sentience ripped away from you, as everything becomes dim..."))
|
|
magnification.ghostize(FALSE)
|
|
if(prob(10))
|
|
malfunction(magnification)
|
|
//either used up correctly or taken off before polling finished (punish this by destroying the helmet)
|
|
UnregisterSignal(magnification, COMSIG_SPECIES_LOSS)
|
|
playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
|
|
playsound(src, SFX_SPARKS, 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
|
|
visible_message(span_warning("[src] fizzles and breaks apart!"))
|
|
magnification = null
|
|
new /obj/effect/decal/cleanable/ash(drop_location()) //just in case they're in a locker or other containers it needs to use crematorium ash, see the path itself for an explanation
|
|
|
|
/obj/item/clothing/head/helmet/monkey_sentience/proc/malfunction(mob/living/carbon/target)
|
|
switch(rand(1,4))
|
|
if(1) //blood rage
|
|
var/datum/ai_controller/monkey/monky_controller = target.ai_controller
|
|
monky_controller.set_trip_mode(mode = FALSE)
|
|
monky_controller.set_blackboard_key(BB_MONKEY_AGGRESSIVE, TRUE)
|
|
if(2) //brain death
|
|
target.apply_damage(500,BRAIN,BODY_ZONE_HEAD,FALSE,FALSE,FALSE)
|
|
if(3) //primal gene (gorilla)
|
|
target.gorillize()
|
|
if(4) //genetic mass susceptibility (gib)
|
|
target.gib(DROP_ALL_REMAINS)
|
|
|
|
/obj/item/clothing/head/helmet/monkey_sentience/dropped(mob/user)
|
|
. = ..()
|
|
if(magnification || polling)
|
|
qdel(src)//runs disconnect code
|
|
|
|
/obj/item/clothing/head/helmet/monkey_sentience/proc/make_fall_off()
|
|
SIGNAL_HANDLER
|
|
if(magnification)
|
|
visible_message(span_warning("[src] falls off of [magnification]'s head as it changes shape!"))
|
|
magnification.dropItemToGround(src)
|
|
*/
|