Files
Bubberstation/code/modules/modular_computers/computers/item/role_tablet_presets.dm
SkyratBot 199feff17d [MIRROR] [no gbp] Golem mineral functionality tweaks/fixes [MDB IGNORE] (#21121)
* [no gbp] Golem mineral functionality tweaks/fixes (#75343)

## About The Pull Request

Fixes a couple of things people have pointed out about golem
transformations.

- Diamond golems now stop being invisible when they attack or throw
something, they also turn invisible a bit slower.
- Using a bluespace knot takes 2 seconds instead of 3 seconds.
- Bananium Golems only slip you if they are lying down.

In order to achieve that last one I refactored the slipperiness
component to take an optional extra callback, and then killed a subtype
of it which could be replaced with passing in a callback. I tested it
and it seems to work the same as it used to.

These are largely how things were supposed to work and I just overlooked
them.
I am sure this won't be the last PR of a similar vein while people try
these out, provided that I actually hear anything they are saying about
it.

## Why It's Good For The Game

Diamond golems shouldn't be able to attack you while remaining invisible
and untargetable even if it is funny.
Clown golems aren't supposed to be able to slip you by swapping places
with you even if it is funny.
The bluespace hand was basically just worse than using the crystal and
not eating it, maybe still needs another buff after this one.

## Changelog

🆑
fix: Diamond Golems can no longer attack or throw things and remain
invisible.
fix: Bananium Golems are only slippery if you actually tread on them
(aka: while they are resting).
balance: Golem bluespace teleportation is slightly quicker.
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* [no gbp] Golem mineral functionality tweaks/fixes

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-05-14 16:05:27 -07:00

415 lines
13 KiB
Plaintext

/**
* Command
*/
/obj/item/modular_computer/pda/heads
greyscale_config = /datum/greyscale_config/tablet/head
greyscale_colors = "#67A364#a92323"
starting_programs = list(
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
)
/obj/item/modular_computer/pda/heads/captain
name = "captain PDA"
greyscale_config = /datum/greyscale_config/tablet/captain
greyscale_colors = "#2C7CB2#FF0000#FFFFFF#FFD55B"
inserted_item = /obj/item/pen/fountain/captain
/obj/item/modular_computer/pda/heads/captain/Initialize(mapload)
. = ..()
RegisterSignal(src, COMSIG_TABLET_CHECK_DETONATE, PROC_REF(tab_no_detonate))
for(var/datum/computer_file/program/messenger/messenger_app in stored_files)
messenger_app.spam_mode = TRUE
/obj/item/modular_computer/pda/heads/captain/proc/tab_no_detonate()
SIGNAL_HANDLER
return COMPONENT_TABLET_NO_DETONATE
/obj/item/modular_computer/pda/heads/hop
name = "head of personnel PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#374f7e#a52f29#a52f29"
starting_programs = list(
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/records/security,
/datum/computer_file/program/job_management,
)
/obj/item/modular_computer/pda/heads/hos
name = "head of security PDA"
greyscale_config = /datum/greyscale_config/tablet/head
greyscale_colors = "#EA3232#0000CC"
starting_programs = list(
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/records/security,
)
/obj/item/modular_computer/pda/heads/ce
name = "chief engineer PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#D99A2E#69DBF3#FAFAFA"
starting_programs = list(
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/atmosscan,
/datum/computer_file/program/alarm_monitor,
/datum/computer_file/program/supermatter_monitor,
)
/obj/item/modular_computer/pda/heads/cmo
name = "chief medical officer PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#FAFAFA#000099#3F96CC"
starting_programs = list(
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/maintenance/phys_scanner,
/datum/computer_file/program/records/medical,
)
/obj/item/modular_computer/pda/heads/rd
name = "research director PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#FAFAFA#000099#B347BC"
inserted_item = /obj/item/pen/fountain
starting_programs = list(
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/signal_commander,
)
/obj/item/modular_computer/pda/heads/quartermaster
name = "quartermaster PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#D6B328#6506CA#927444"
inserted_item = /obj/item/pen/survival
stored_paper = 20
starting_programs = list(
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/status,
/datum/computer_file/program/science,
/datum/computer_file/program/robocontrol,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/shipping,
/datum/computer_file/program/robocontrol,
)
/**
* Security
*/
/obj/item/modular_computer/pda/security
name = "security PDA"
greyscale_colors = "#EA3232#0000cc"
starting_programs = list(
/datum/computer_file/program/records/security,
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/robocontrol,
)
/obj/item/modular_computer/pda/detective
name = "detective PDA"
greyscale_colors = "#805A2F#990202"
starting_programs = list(
/datum/computer_file/program/records/security,
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/robocontrol,
)
/obj/item/modular_computer/pda/warden
name = "warden PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_split
greyscale_colors = "#EA3232#0000CC#363636"
starting_programs = list(
/datum/computer_file/program/records/security,
/datum/computer_file/program/crew_manifest,
/datum/computer_file/program/robocontrol,
)
/**
* Engineering
*/
/obj/item/modular_computer/pda/engineering
name = "engineering PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#D99A2E#69DBF3#E3DF3D"
starting_programs = list(
/datum/computer_file/program/supermatter_monitor,
)
/obj/item/modular_computer/pda/atmos
name = "atmospherics PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#EEDC43#00E5DA#727272"
starting_programs = list(
/datum/computer_file/program/atmosscan,
/datum/computer_file/program/alarm_monitor,
)
/**
* Science
*/
/obj/item/modular_computer/pda/science
name = "scientist PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#000099#B347BC"
starting_programs = list(
/datum/computer_file/program/atmosscan,
/datum/computer_file/program/signal_commander,
)
/obj/item/modular_computer/pda/roboticist
name = "roboticist PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_split
greyscale_colors = "#484848#0099CC#D94927"
starting_programs = list(
/datum/computer_file/program/robocontrol,
)
/obj/item/modular_computer/pda/geneticist
name = "geneticist PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_split
greyscale_colors = "#FAFAFA#000099#0097CA"
starting_programs = list(
/datum/computer_file/program/records/medical,
)
/**
* Medical
*/
/obj/item/modular_computer/pda/medical
name = "medical PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#000099#3F96CC"
starting_programs = list(
/datum/computer_file/program/records/medical,
/datum/computer_file/program/robocontrol,
)
/obj/item/modular_computer/pda/medical/paramedic
name = "paramedic PDA"
starting_programs = list(
/datum/computer_file/program/records/medical,
/datum/computer_file/program/radar/lifeline,
)
/obj/item/modular_computer/pda/viro
name = "virology PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_split
greyscale_colors = "#FAFAFA#355FAC#57C451"
starting_programs = list(
/datum/computer_file/program/records/medical,
/datum/computer_file/program/robocontrol,
)
/obj/item/modular_computer/pda/chemist
name = "chemist PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#355FAC#EA6400"
/obj/item/modular_computer/pda/coroner
name = "coroner PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#000099#1f2026"
starting_programs = list(
/datum/computer_file/program/records/medical,
/datum/computer_file/program/crew_manifest,
)
/**
* Supply
*/
/obj/item/modular_computer/pda/cargo
name = "cargo technician PDA"
greyscale_colors = "#D6B328#6506CA"
stored_paper = 20
starting_programs = list(
/datum/computer_file/program/shipping,
/datum/computer_file/program/budgetorders,
/datum/computer_file/program/robocontrol,
)
/obj/item/modular_computer/pda/shaftminer
name = "shaft miner PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#927444#D6B328#6C3BA1"
/**
* Service
*/
/obj/item/modular_computer/pda/janitor
name = "janitor PDA"
greyscale_colors = "#933ea8#235AB2"
starting_programs = list(
/datum/computer_file/program/radar/custodial_locator,
)
/obj/item/modular_computer/pda/chaplain
name = "chaplain PDA"
greyscale_config = /datum/greyscale_config/tablet/chaplain
greyscale_colors = "#333333#D11818"
/obj/item/modular_computer/pda/lawyer
name = "lawyer PDA"
greyscale_colors = "#4C76C8#FFE243"
inserted_item = /obj/item/pen/fountain
starting_programs = list(
/datum/computer_file/program/records/security,
)
/obj/item/modular_computer/pda/lawyer/Initialize(mapload)
. = ..()
for(var/datum/computer_file/program/messenger/messenger_app in stored_files)
messenger_app.spam_mode = TRUE
/obj/item/modular_computer/pda/botanist
name = "botanist PDA"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#50E193#E26F41#71A7CA"
/obj/item/modular_computer/pda/cook
name = "cook PDA"
greyscale_colors = "#FAFAFA#A92323"
/obj/item/modular_computer/pda/bar
name = "bartender PDA"
greyscale_colors = "#333333#C7C7C7"
inserted_item = /obj/item/pen/fountain
/obj/item/modular_computer/pda/clown
name = "clown PDA"
inserted_disk = /obj/item/computer_disk/virus/clown
icon_state = "pda-clown"
greyscale_config = null
greyscale_colors = null
inserted_item = /obj/item/toy/crayon/rainbow
/obj/item/modular_computer/pda/clown/Initialize(mapload)
. = ..()
AddComponent(\
/datum/component/slippery,\
knockdown = 12 SECONDS,\
lube_flags = NO_SLIP_WHEN_WALKING,\
on_slip_callback = CALLBACK(src, PROC_REF(AfterSlip)),\
can_slip_callback = CALLBACK(src, PROC_REF(try_slip)),\
slot_whitelist = list(ITEM_SLOT_ID, ITEM_SLOT_BELT),\
)
AddComponent(/datum/component/wearertargeting/sitcomlaughter, CALLBACK(src, PROC_REF(after_sitcom_laugh)))
/// Return true if our wearer is in a position to slip someone
/obj/item/modular_computer/pda/clown/proc/try_slip(mob/living/slipper, mob/living/slippee)
if(!istype(slipper.get_item_by_slot(ITEM_SLOT_FEET), /obj/item/clothing/shoes/clown_shoes))
to_chat(slipper,span_warning("[src] failed to slip anyone. Perhaps I shouldn't have abandoned my legacy..."))
return FALSE
return TRUE
/obj/item/modular_computer/pda/clown/update_overlays()
. = ..()
. += mutable_appearance(icon, "pda_stripe_clown") // clowns have eyes that go over their screen, so it needs to be compiled last
/obj/item/modular_computer/pda/clown/proc/AfterSlip(mob/living/carbon/human/M)
if (istype(M) && (M.real_name != saved_identification))
var/obj/item/computer_disk/virus/clown/cart = inserted_disk
if(istype(cart) && cart.charges < 5)
cart.charges++
playsound(src,'sound/machines/ping.ogg',30,TRUE)
/obj/item/modular_computer/pda/clown/proc/after_sitcom_laugh(mob/victim)
victim.visible_message("[src] lets out a burst of laughter!")
/obj/item/modular_computer/pda/mime
name = "mime PDA"
inserted_disk = /obj/item/computer_disk/virus/mime
greyscale_config = /datum/greyscale_config/tablet/mime
greyscale_colors = "#FAFAFA#EA3232"
inserted_item = /obj/item/toy/crayon/mime
starting_programs = list(
/datum/computer_file/program/emojipedia,
)
/obj/item/modular_computer/pda/mime/Initialize(mapload)
. = ..()
for(var/datum/computer_file/program/messenger/msg in stored_files)
msg.mime_mode = TRUE
msg.ringer_status = FALSE
/obj/item/modular_computer/pda/curator
name = "curator PDA"
desc = "A small experimental microcomputer."
greyscale_config = null
greyscale_colors = null
icon_state = "pda-library"
inserted_item = /obj/item/pen/fountain
long_ranged = TRUE
starting_programs = list(
/datum/computer_file/program/emojipedia,
/datum/computer_file/program/newscaster,
)
/* // SKYRAT EDIT REMOVAL BEGIN - Mutes the Curator's ringer on spawn
/obj/item/modular_computer/pda/curator/Initialize(mapload)
. = ..()
for(var/datum/computer_file/program/messenger/msg in stored_files)
msg.ringer_status = FALSE
*/ // SKYRAT EDIT REMOVAL END
/**
* No Department
*/
/obj/item/modular_computer/pda/assistant
name = "assistant PDA"
starting_programs = list(
/datum/computer_file/program/bounty_board,
)
/**
* Non-roles
*/
/obj/item/modular_computer/pda/syndicate
name = "military PDA"
greyscale_colors = "#891417#80FF80"
saved_identification = "John Doe"
saved_job = "Citizen"
device_theme = PDA_THEME_SYNDICATE
/obj/item/modular_computer/pda/syndicate/Initialize(mapload)
. = ..()
var/datum/computer_file/program/messenger/msg = locate() in stored_files
if(msg)
msg.invisible = TRUE
/obj/item/modular_computer/pda/clear
name = "clear PDA"
icon_state = "pda-clear"
greyscale_config = null
greyscale_colors = null
long_ranged = TRUE