Files
S.P.L.U.R.T-Station-13/modular_splurt/code/game/objects/items/robot/robot_items.dm
2023-01-23 03:54:38 -05:00

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
)