mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 01:49:19 +00:00
94 lines
3.2 KiB
Plaintext
94 lines
3.2 KiB
Plaintext
/// Cargo Borg Items ///
|
|
#define MAX_PAPER_INTEGRATED_CLIPBOARD 10
|
|
|
|
/obj/item/clipboard/cyborg
|
|
name = "\improper integrated clipboard"
|
|
desc = "A clipboard with built-in paper synthesizer"
|
|
integrated_pen = TRUE
|
|
/// When was the last time the printer was used?
|
|
COOLDOWN_DECLARE(printer_cooldown)
|
|
/// How long is the integrated printer's cooldown?
|
|
var/printer_cooldown_time = 10 SECONDS
|
|
/// How much charge is required to print a piece of paper?
|
|
var/paper_charge_cost = 25
|
|
|
|
/obj/item/clipboard/cyborg/Initialize()
|
|
. = ..()
|
|
pen = new /obj/item/pen
|
|
|
|
/obj/item/clipboard/cyborg/examine()
|
|
. = ..()
|
|
. += "Alt-click to synthetize a piece of paper."
|
|
if(!COOLDOWN_FINISHED(src, printer_cooldown))
|
|
. += "Its integrated paper synthetizer seems to still be on cooldown."
|
|
|
|
|
|
/obj/item/clipboard/cyborg/AltClick(mob/user)
|
|
if(!iscyborg(user))
|
|
to_chat(user, span_warning("You do not seem to understand how to use [src]."))
|
|
return
|
|
var/mob/living/silicon/robot/cyborg_user = user
|
|
// Not enough charge? Tough luck.
|
|
if(cyborg_user?.cell.charge < paper_charge_cost)
|
|
to_chat(user, span_warning("Your internal cell doesn't have enough charge left to use [src]'s integrated printer."))
|
|
return
|
|
// Check for cooldown to avoid paper spamming
|
|
if(COOLDOWN_FINISHED(src, printer_cooldown))
|
|
// If there's not too much paper already, let's go
|
|
if(!toppaper_ref || length(contents) < MAX_PAPER_INTEGRATED_CLIPBOARD)
|
|
cyborg_user.cell.use(paper_charge_cost)
|
|
COOLDOWN_START(src, printer_cooldown, printer_cooldown_time)
|
|
var/obj/item/paper/new_paper = new /obj/item/paper
|
|
new_paper.forceMove(src)
|
|
if(toppaper_ref)
|
|
var/obj/item/paper/toppaper = toppaper_ref?.resolve()
|
|
UnregisterSignal(toppaper, COMSIG_ATOM_UPDATED_ICON)
|
|
RegisterSignal(new_paper, COMSIG_ATOM_UPDATED_ICON, .proc/on_top_paper_change)
|
|
toppaper_ref = WEAKREF(new_paper)
|
|
update_appearance()
|
|
to_chat(user, span_notice("[src]'s integrated printer whirs to life, spitting out a fresh piece of paper and clipping it into place."))
|
|
else
|
|
to_chat(user, span_warning("[src]'s integrated printer refuses to print more paper, as [src] already contains enough paper."))
|
|
else
|
|
to_chat(user, span_warning("[src]'s integrated printer refuses to print more paper, its bluespace paper synthetizer not having finished recovering from its last synthesis."))
|
|
|
|
/obj/item/hand_labeler/cyborg
|
|
name = "integrated hand labeler"
|
|
labels_left = 9999 // Recharge code is a bitch, apparently
|
|
|
|
// Package Wrapping Synthesizer
|
|
|
|
/datum/robot_energy_storage/packageWrap
|
|
name ="package wrapper synthetizer"
|
|
max_energy = 25
|
|
recharge_rate = 2
|
|
|
|
/obj/item/stack/packageWrap/cyborg
|
|
name = "integrated package wrapper"
|
|
is_cyborg = TRUE
|
|
source = /datum/robot_energy_storage/packageWrap
|
|
|
|
/datum/robot_energy_storage/wrapping_paper
|
|
name ="wrapping paper synthetizer"
|
|
max_energy = 25
|
|
recharge_rate = 2
|
|
|
|
/obj/item/stack/wrapping_paper/xmas/cyborg
|
|
name = "integrated wrapping paper"
|
|
is_cyborg = TRUE
|
|
source = /datum/robot_energy_storage/wrapping_paper
|
|
|
|
/// End Cargo Borg Items ///
|
|
|
|
|
|
/obj/item/gripper/service
|
|
name = "service gripper"
|
|
desc = "A simple grasping tool for interacting with food and condiments."
|
|
can_hold = list(
|
|
/obj/item/reagent_containers/glass,
|
|
/obj/item/reagent_containers/food,
|
|
/obj/item/kitchen,
|
|
/obj/item/storage/bag/tray
|
|
)
|
|
|