mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 23:17:02 +01:00
Makes borgs require to refill their metal, glass and reinforced glass manually instead of automatically from a cyborg recharger (#23944)
* Makes some borg sheet types require manual refilling * Oopsie * Fixes ORM deductions + Reverts changes for drones * Contra review * Fixes module logic * Update code/modules/mining/machine_redemption.dm Co-authored-by: Farie82 <farie82@users.noreply.github.com> * Update code/modules/mining/machine_redemption.dm Co-authored-by: Farie82 <farie82@users.noreply.github.com> * Update code/game/objects/items/stacks/sheets/sheet_types.dm * Farie review * Update code/modules/mining/machine_redemption.dm Co-authored-by: Farie82 <farie82@users.noreply.github.com> * Update code/modules/mining/machine_redemption.dm Co-authored-by: Farie82 <farie82@users.noreply.github.com> * Farie review * I am an idiot * Fixes a comment * Update code/modules/mining/machine_redemption.dm Co-authored-by: Farie82 <farie82@users.noreply.github.com> * Farie Review --------- Co-authored-by: Farie82 <farie82@users.noreply.github.com>
This commit is contained in:
@@ -192,11 +192,11 @@
|
||||
dynamic_icon_state = FALSE
|
||||
|
||||
/obj/item/stack/medical/bruise_pack/advanced/cyborg
|
||||
energy_type = /datum/robot_energy_storage/medical/adv_brute_kit
|
||||
energy_type = /datum/robot_storage/energy/medical/adv_brute_kit
|
||||
is_cyborg = TRUE
|
||||
|
||||
/obj/item/stack/medical/bruise_pack/advanced/cyborg/syndicate
|
||||
energy_type = /datum/robot_energy_storage/medical/adv_brute_kit/syndicate
|
||||
energy_type = /datum/robot_storage/energy/medical/adv_brute_kit/syndicate
|
||||
|
||||
//Ointment//
|
||||
|
||||
@@ -260,11 +260,11 @@
|
||||
dynamic_icon_state = FALSE
|
||||
|
||||
/obj/item/stack/medical/ointment/advanced/cyborg
|
||||
energy_type = /datum/robot_energy_storage/medical/adv_burn_kit
|
||||
energy_type = /datum/robot_storage/energy/medical/adv_burn_kit
|
||||
is_cyborg = TRUE
|
||||
|
||||
/obj/item/stack/medical/ointment/advanced/cyborg/syndicate
|
||||
energy_type = /datum/robot_energy_storage/medical/adv_burn_kit/syndicate
|
||||
energy_type = /datum/robot_storage/energy/medical/adv_burn_kit/syndicate
|
||||
|
||||
//Medical Herbs//
|
||||
/obj/item/stack/medical/bruise_pack/comfrey
|
||||
@@ -345,11 +345,11 @@
|
||||
use(1)
|
||||
|
||||
/obj/item/stack/medical/splint/cyborg
|
||||
energy_type = /datum/robot_energy_storage/medical/splint
|
||||
energy_type = /datum/robot_storage/energy/medical/splint
|
||||
is_cyborg = TRUE
|
||||
|
||||
/obj/item/stack/medical/splint/cyborg/syndicate
|
||||
energy_type = /datum/robot_energy_storage/medical/splint/syndicate
|
||||
energy_type = /datum/robot_storage/energy/medical/splint/syndicate
|
||||
|
||||
/obj/item/stack/medical/splint/tribal
|
||||
name = "tribal splints"
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
H.bleed_rate = 0
|
||||
|
||||
/obj/item/stack/nanopaste/cyborg
|
||||
energy_type = /datum/robot_energy_storage/medical/nanopaste
|
||||
energy_type = /datum/robot_storage/energy/medical/nanopaste
|
||||
is_cyborg = TRUE
|
||||
|
||||
/obj/item/stack/nanopaste/cyborg/attack(mob/living/M, mob/user)
|
||||
@@ -77,4 +77,4 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/nanopaste/cyborg/syndicate
|
||||
energy_type = /datum/robot_energy_storage/medical/nanopaste/syndicate
|
||||
energy_type = /datum/robot_storage/energy/medical/nanopaste/syndicate
|
||||
|
||||
@@ -47,7 +47,7 @@ GLOBAL_LIST_INIT(rod_recipes, list (
|
||||
|
||||
|
||||
/obj/item/stack/rods/cyborg
|
||||
energy_type = /datum/robot_energy_storage/rods
|
||||
energy_type = /datum/robot_storage/energy/rods
|
||||
is_cyborg = TRUE
|
||||
materials = list()
|
||||
|
||||
|
||||
@@ -49,14 +49,18 @@ GLOBAL_LIST_INIT(glass_recipes, list (
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/sheet/glass/cyborg
|
||||
energy_type = /datum/robot_energy_storage/glass
|
||||
energy_type = /datum/robot_storage/material/glass
|
||||
is_cyborg = TRUE
|
||||
materials = list()
|
||||
|
||||
/obj/item/stack/sheet/glass/cyborg/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>As a synthetic, you can regain sheets of glass by recharging in a <b>cyborg recharger</b>.</span>"
|
||||
var/mob/living/silicon/robot/robot = user
|
||||
if(!istype(robot.module, /obj/item/robot_module/drone))
|
||||
. += "<span class='notice'>You can refill your glass by using your <b>magnetic gripper</b> on the Ore Redemption machine, or by picking it up from the ground.</span>"
|
||||
|
||||
/obj/item/stack/sheet/glass/cyborg/drone
|
||||
energy_type = /datum/robot_storage/energy/glass
|
||||
|
||||
/obj/item/stack/sheet/glass/New(loc, amount)
|
||||
recipes = GLOB.glass_recipes
|
||||
@@ -136,13 +140,18 @@ GLOBAL_LIST_INIT(pglass_recipes, list (
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/rglass/cyborg
|
||||
energy_type = /datum/robot_energy_storage/rglass
|
||||
energy_type = /datum/robot_storage/material/rglass
|
||||
is_cyborg = TRUE
|
||||
materials = list()
|
||||
|
||||
/obj/item/stack/sheet/rglass/cyborg/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>As a synthetic, you can regain sheets of reinforced glass by recharging in a <b>cyborg recharger</b>.</span>"
|
||||
var/mob/living/silicon/robot/robot = user
|
||||
if(!istype(robot.module, /obj/item/robot_module/drone))
|
||||
. += "<span class='notice'>You can refill your reinforced glass by picking it up from the ground.</span>"
|
||||
|
||||
/obj/item/stack/sheet/rglass/cyborg/drone
|
||||
energy_type = /datum/robot_storage/energy/rglass
|
||||
|
||||
/obj/item/stack/sheet/plasmaglass
|
||||
name = "plasma glass"
|
||||
|
||||
@@ -136,13 +136,18 @@ GLOBAL_LIST_INIT(metal_recipes, list(
|
||||
. += "<span class='notice'>Metal is used in various different construction sequences.</span>"
|
||||
|
||||
/obj/item/stack/sheet/metal/cyborg
|
||||
energy_type = /datum/robot_energy_storage/metal
|
||||
energy_type = /datum/robot_storage/material/metal
|
||||
is_cyborg = TRUE
|
||||
materials = list()
|
||||
|
||||
/obj/item/stack/sheet/metal/cyborg/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>As a synthetic, you can regain sheets of reinforced glass by recharging in a <b>cyborg recharger</b>.</span>"
|
||||
var/mob/living/silicon/robot/robot = user
|
||||
if(!istype(robot.module, /obj/item/robot_module/drone))
|
||||
. += "<span class='notice'>You can refill your metal by using your <b>magnetic gripper</b> on the Ore Redemption machine, or by picking it up from the ground.</span>"
|
||||
|
||||
/obj/item/stack/sheet/metal/cyborg/drone
|
||||
energy_type = /datum/robot_storage/energy/metal
|
||||
|
||||
/obj/item/stack/sheet/metal/fifty
|
||||
amount = 50
|
||||
@@ -196,7 +201,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list(
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/wood/cyborg
|
||||
energy_type = /datum/robot_energy_storage/wood
|
||||
energy_type = /datum/robot_storage/energy/wood
|
||||
is_cyborg = TRUE
|
||||
|
||||
/*
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
origin_tech = "materials=1"
|
||||
/// Whether this stack is a `/cyborg` subtype or not.
|
||||
var/is_cyborg = FALSE
|
||||
/// The energy storage datum that will be used with this stack. Used only with `/cyborg` type stacks.
|
||||
var/datum/robot_energy_storage/source
|
||||
/// The storage datum that will be used with this stack. Used only with `/cyborg` type stacks.
|
||||
var/datum/robot_storage/source
|
||||
/// Which `robot_energy_storage` to choose when this stack is created in cyborgs. Used only with `/cyborg` type stacks.
|
||||
var/energy_type
|
||||
/// How much energy using 1 sheet from the stack costs. Used only with `/cyborg` type stacks.
|
||||
@@ -250,8 +250,8 @@
|
||||
return amount
|
||||
|
||||
if(!source) // The energy source has not yet been initializied
|
||||
return 0
|
||||
return round(source.energy / cost)
|
||||
return FALSE
|
||||
return round(source.amount / cost)
|
||||
|
||||
/obj/item/stack/proc/get_max_amount()
|
||||
return max_amount
|
||||
@@ -321,7 +321,7 @@
|
||||
// Also qdels the stack gracefully if it is.
|
||||
/obj/item/stack/proc/zero_amount()
|
||||
if(is_cyborg)
|
||||
return source.energy < cost
|
||||
return source.amount < cost
|
||||
if(amount < 1)
|
||||
if(ismob(loc))
|
||||
var/mob/living/L = loc // At this stage, stack code is so horrible and atrocious, I wouldn't be all surprised ghosts can somehow have stacks. If this happens, then the world deserves to burn.
|
||||
@@ -339,7 +339,7 @@
|
||||
return FALSE
|
||||
var/transfer = get_amount()
|
||||
if(S.is_cyborg)
|
||||
transfer = min(transfer, round((S.source.max_energy - S.source.energy) / S.cost))
|
||||
transfer = min(transfer, round((S.source.max_amount - S.source.amount) / S.cost))
|
||||
else
|
||||
transfer = min(transfer, S.max_amount - S.amount)
|
||||
if(transfer <= 0)
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/stack/tile/wood/cyborg
|
||||
energy_type = /datum/robot_energy_storage/wood_tile
|
||||
energy_type = /datum/robot_storage/energy/wood_tile
|
||||
is_cyborg = TRUE
|
||||
|
||||
//Carpets
|
||||
@@ -186,7 +186,7 @@
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/stack/tile/plasteel/cyborg
|
||||
energy_type = /datum/robot_energy_storage/metal_tile
|
||||
energy_type = /datum/robot_storage/energy/metal_tile
|
||||
is_cyborg = TRUE
|
||||
|
||||
//Light
|
||||
@@ -290,5 +290,5 @@
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/stack/tile/catwalk/cyborg
|
||||
energy_type = /datum/robot_energy_storage/catwalk
|
||||
energy_type = /datum/robot_storage/energy/catwalk
|
||||
is_cyborg = TRUE
|
||||
|
||||
@@ -207,6 +207,12 @@
|
||||
user.visible_message("<span class='notice'>[user] inserts [I] into [src].</span>",
|
||||
"<span class='notice'>You insert [I] into [src].</span>")
|
||||
return
|
||||
|
||||
else if(istype(I, /obj/item/gripper_engineering))
|
||||
if(!try_refill_storage(user))
|
||||
to_chat(user, "<span class='notice'>You fail to retrieve any sheets from [src].</span>")
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/mineral/ore_redemption/crowbar_act(mob/user, obj/item/I)
|
||||
@@ -506,6 +512,38 @@
|
||||
"<span class='notice'>You insert [I] into [src].</span>")
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/mineral/ore_redemption/proc/try_refill_storage(mob/living/silicon/robot/robot)
|
||||
. = FALSE
|
||||
if(!istype(robot))
|
||||
return
|
||||
if(!istype(robot.module, /obj/item/robot_module/engineering)) // Should only happen for drones
|
||||
return
|
||||
|
||||
for(var/datum/robot_storage/material/mat_store in robot.module.material_storages)
|
||||
if(mat_store.amount == mat_store.max_amount) // Already full, no need to run a check
|
||||
to_chat(robot, "<span class='notice'>[mat_store] could not be filled due to it already being full.</span>")
|
||||
continue
|
||||
var/datum/component/material_container/container_component = GetComponent(/datum/component/material_container)
|
||||
for(var/mat_id in container_component.materials)
|
||||
var/datum/material/stack = container_component.materials[mat_id] // Should have only `/datum/material` in the list
|
||||
var/obj/item/stack/sheet/sheet = stack.sheet_type
|
||||
if(ispath(mat_store.stack, sheet))
|
||||
var/amount_to_add
|
||||
var/total_stacks = stack.amount / MINERAL_MATERIAL_AMOUNT // To account for 1 sheet being 2000 units of metal
|
||||
if(total_stacks >= (mat_store.max_amount - mat_store.amount))
|
||||
amount_to_add = round(mat_store.max_amount - mat_store.amount)
|
||||
to_chat(robot, "<span class='notice'>You refill [mat_store] to full.</span>")
|
||||
else
|
||||
amount_to_add = round(total_stacks) // In case we have half a sheet stored
|
||||
to_chat(robot, "<span class='notice'>You refill [amount_to_add] sheets to [mat_store].</span>")
|
||||
mat_store.amount += amount_to_add
|
||||
remove_from_storage(stack, amount_to_add)
|
||||
. = TRUE
|
||||
break // We found our match for this material storage, so we go to the next one
|
||||
|
||||
/obj/machinery/mineral/ore_redemption/proc/remove_from_storage(datum/material/stack, sheet_amount)
|
||||
return stack.amount -= sheet_amount * MINERAL_MATERIAL_AMOUNT
|
||||
|
||||
/**
|
||||
* Called when an item is inserted manually as material.
|
||||
*
|
||||
|
||||
@@ -772,8 +772,8 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
|
||||
var/turf/turf = get_turf(src)
|
||||
return list("GPS:", "[COORD(turf)]")
|
||||
|
||||
/mob/living/silicon/robot/proc/show_stack_energy(datum/robot_energy_storage/robot_energy_storage)
|
||||
return list("[robot_energy_storage.statpanel_name]:", "[robot_energy_storage.energy] / [robot_energy_storage.max_energy]")
|
||||
/mob/living/silicon/robot/proc/show_stack_energy(datum/robot_storage/robot_storage)
|
||||
return list("[robot_storage.statpanel_name]:", "[robot_storage.amount] / [robot_storage.max_amount]")
|
||||
|
||||
// update the status screen display
|
||||
/mob/living/silicon/robot/get_status_tab_items()
|
||||
@@ -788,8 +788,8 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
|
||||
if(locate(/obj/item/gps/cyborg) in module.modules)
|
||||
status_tab_data[++status_tab_data.len] = show_gps_coords()
|
||||
|
||||
for(var/datum/robot_energy_storage/robot_energy_storage in module.storages)
|
||||
status_tab_data[++status_tab_data.len] = show_stack_energy(robot_energy_storage)
|
||||
for(var/datum/robot_storage/robot_storage in module.storages)
|
||||
status_tab_data[++status_tab_data.len] = show_stack_energy(robot_storage)
|
||||
|
||||
/mob/living/silicon/robot/restrained()
|
||||
return 0
|
||||
|
||||
@@ -24,8 +24,10 @@
|
||||
var/list/malf_modules = list()
|
||||
/// A list of modules that require special recharge handling. Examples include things like flashes, sprays and welding tools.
|
||||
var/list/special_rechargables = list()
|
||||
/// A list of all "energy stacks", i.e metal, glass, brute kits, splints, etc.
|
||||
/// A list of all "energy stacks", i.e cables, brute kits, splints, etc.
|
||||
var/list/storages = list()
|
||||
/// A list of all "material stacks", i.e. metal, glass, and reinforced glass
|
||||
var/list/material_storages = list()
|
||||
/// Special actions this module will gain when chosen such as meson vision, or thermal vision.
|
||||
var/list/module_actions = list()
|
||||
/// Available tools given in the verb tab such as a crew monitor, or power monitor.
|
||||
@@ -143,17 +145,20 @@
|
||||
* Returns a `robot_energy_strage` datum of type `storage_type`. If one already exists, it returns that one, otherwise it create a new one.
|
||||
*
|
||||
* Arguments:
|
||||
* * storage_type - the subtype of `datum/robot_energy_storage` to fetch or create.
|
||||
* * storage_type - the subtype of `datum/robot_storage` to fetch or create.
|
||||
*/
|
||||
/obj/item/robot_module/proc/get_or_create_estorage(storage_type)
|
||||
for(var/e_storage in storages)
|
||||
var/datum/robot_energy_storage/S = e_storage
|
||||
var/datum/robot_storage/energy/S = e_storage
|
||||
if(istype(S, storage_type))
|
||||
return S
|
||||
var/datum/robot_storage/material/M = e_storage
|
||||
if(istype(M, storage_type))
|
||||
return M
|
||||
return new storage_type(src)
|
||||
|
||||
/**
|
||||
* Adds the item `I` to our `modules` list, and sets up an `/datum/robot_energy_storage` if its a stack.
|
||||
* Adds the item `I` to our `modules` list, and sets up an `/datum/robot_storage/energy` if its a stack.
|
||||
*
|
||||
* Arugments:
|
||||
* * I - the item to add to our modules.
|
||||
@@ -230,7 +235,7 @@
|
||||
*/
|
||||
/obj/item/robot_module/proc/recharge_consumables(mob/living/silicon/robot/R, coeff = 1)
|
||||
for(var/e_storage in storages)
|
||||
var/datum/robot_energy_storage/E = e_storage
|
||||
var/datum/robot_storage/energy/E = e_storage
|
||||
E.add_charge(max(1, coeff * E.recharge_rate))
|
||||
for(var/item in special_rechargables)
|
||||
var/obj/item/I = item
|
||||
@@ -791,13 +796,13 @@
|
||||
/obj/item/t_scanner,
|
||||
/obj/item/rpd,
|
||||
/obj/item/analyzer,
|
||||
/obj/item/stack/sheet/metal/cyborg,
|
||||
/obj/item/stack/sheet/metal/cyborg/drone,
|
||||
/obj/item/stack/rods/cyborg,
|
||||
/obj/item/stack/tile/plasteel/cyborg,
|
||||
/obj/item/stack/tile/catwalk/cyborg,
|
||||
/obj/item/stack/cable_coil/cyborg,
|
||||
/obj/item/stack/sheet/glass/cyborg,
|
||||
/obj/item/stack/sheet/rglass/cyborg,
|
||||
/obj/item/stack/sheet/glass/cyborg/drone,
|
||||
/obj/item/stack/sheet/rglass/cyborg/drone,
|
||||
/obj/item/stack/sheet/wood/cyborg,
|
||||
/obj/item/stack/tile/wood/cyborg
|
||||
)
|
||||
@@ -832,116 +837,153 @@
|
||||
* The `recharge_rate` will be affected by the charge rate of a borg recharger, depending on the level of parts. By default it is 1.
|
||||
* This amount will be given every 2 seconds. So at round start, rechargers will give 1 energy back every 2 seconds, to each stack the borg has.
|
||||
*/
|
||||
/datum/robot_energy_storage
|
||||
/// The name of the energy storage.
|
||||
var/name = "Generic energy storage"
|
||||
|
||||
/datum/robot_storage
|
||||
/// The name of the storage.
|
||||
var/name = "Generic storage"
|
||||
/// The name that will be displayed in the status panel.
|
||||
var/statpanel_name = "Statpanel name"
|
||||
/// The max amount of energy the stack can hold at once.
|
||||
var/max_energy = 50
|
||||
/// The amount of energy the stack will regain while charging.
|
||||
var/recharge_rate = 1
|
||||
/// Current amount of energy.
|
||||
var/energy
|
||||
/// The max amount of materials the stack can hold at once.
|
||||
var/max_amount = 50
|
||||
/// Current amount of materials.
|
||||
var/amount
|
||||
|
||||
/datum/robot_energy_storage/New(obj/item/robot_module/R = null)
|
||||
if(!energy)
|
||||
energy = max_energy
|
||||
if(R)
|
||||
R.storages += src
|
||||
/datum/robot_storage/New(obj/item/robot_module/R)
|
||||
if(!amount)
|
||||
amount = max_amount
|
||||
|
||||
/**
|
||||
* Called whenever the cyborg uses one of its stacks. Subtract the amount used from this datum's `energy` variable.
|
||||
* Called whenever the cyborg uses one of its stacks. Subtract the amount used from this datum's `amount` variable.
|
||||
*
|
||||
* Arguments:
|
||||
* * amount - the number to subtract from the `energy` var.
|
||||
* * reduction - the number to subtract from the `amount` var.
|
||||
*/
|
||||
/datum/robot_energy_storage/proc/use_charge(amount)
|
||||
if(energy < amount)
|
||||
/datum/robot_storage/proc/use_charge(reduction)
|
||||
if(amount < reduction)
|
||||
return FALSE // If we have more energy that we're about to drain, return
|
||||
|
||||
energy -= amount
|
||||
amount -= reduction
|
||||
return TRUE
|
||||
|
||||
/**
|
||||
* Called whenever the cyborg is recharging and gains charge on its stack, or when clicking on other same-type stacks in the world.
|
||||
*
|
||||
* Arguments:
|
||||
* * amount - the number to add to the `energy` var.
|
||||
* * addition - the number to add to the `energy` var.
|
||||
*/
|
||||
/datum/robot_energy_storage/proc/add_charge(amount)
|
||||
energy = min(energy + amount, max_energy)
|
||||
/datum/robot_storage/proc/add_charge(addition)
|
||||
amount = min(amount + addition, max_amount)
|
||||
|
||||
/datum/robot_energy_storage/metal
|
||||
/datum/robot_storage/energy
|
||||
name = "Generic energy storage"
|
||||
/// The amount of energy the stack will regain while charging.
|
||||
var/recharge_rate = 1
|
||||
|
||||
/datum/robot_storage/energy/New(obj/item/robot_module/R)
|
||||
. = ..()
|
||||
if(R)
|
||||
R.storages += src
|
||||
|
||||
/datum/robot_storage/energy/metal
|
||||
name = "Metal Synthesizer"
|
||||
statpanel_name = "Metal"
|
||||
|
||||
/datum/robot_energy_storage/metal_tile
|
||||
/datum/robot_storage/energy/metal_tile
|
||||
name = "Floor tile Synthesizer"
|
||||
statpanel_name = "Floor tiles"
|
||||
max_energy = 60
|
||||
max_amount = 60
|
||||
|
||||
/datum/robot_energy_storage/rods
|
||||
/datum/robot_storage/energy/rods
|
||||
name = "Rod Synthesizer"
|
||||
statpanel_name = "Rods"
|
||||
|
||||
/datum/robot_energy_storage/catwalk
|
||||
/datum/robot_storage/energy/catwalk
|
||||
name= "Catwalk Synthesizer"
|
||||
statpanel_name = "Catwalk Tiles"
|
||||
max_energy = 60
|
||||
max_amount = 60
|
||||
|
||||
/datum/robot_energy_storage/glass
|
||||
/datum/robot_storage/energy/glass
|
||||
name = "Glass Synthesizer"
|
||||
statpanel_name = "Glass"
|
||||
|
||||
/datum/robot_energy_storage/rglass
|
||||
/datum/robot_storage/energy/rglass
|
||||
name = "Reinforced glass Synthesizer"
|
||||
statpanel_name = "Reinforced glass"
|
||||
|
||||
/datum/robot_energy_storage/wood
|
||||
/datum/robot_storage/energy/wood
|
||||
name = "Wood Synthesizer"
|
||||
statpanel_name = "Wood"
|
||||
|
||||
/datum/robot_energy_storage/wood_tile
|
||||
/datum/robot_storage/energy/wood_tile
|
||||
name = "Wooden tile Synthesizer"
|
||||
statpanel_name = "Wooden tiles"
|
||||
max_energy = 60
|
||||
max_amount = 60
|
||||
|
||||
/datum/robot_energy_storage/cable
|
||||
/datum/robot_storage/energy/cable
|
||||
name = "Cable Synthesizer"
|
||||
statpanel_name = "Cable"
|
||||
|
||||
// For the medical stacks, even though the recharge rate is 0, it will be set to 1 by default because of a `max()` proc.
|
||||
// It will always take ~12 seconds to fully recharge these stacks beacuse of this. This time does not apply to the syndicate storages.
|
||||
/datum/robot_energy_storage/medical
|
||||
/datum/robot_storage/energy/medical
|
||||
name = "Medical Synthesizer"
|
||||
max_energy = 6
|
||||
max_amount = 6
|
||||
recharge_rate = 0
|
||||
|
||||
/datum/robot_energy_storage/medical/splint
|
||||
/datum/robot_storage/energy/medical/splint
|
||||
name = "Splint Synthesizer"
|
||||
statpanel_name = "Splints"
|
||||
|
||||
/datum/robot_energy_storage/medical/splint/syndicate
|
||||
max_energy = 25
|
||||
/datum/robot_storage/energy/medical/splint/syndicate
|
||||
max_amount = 25
|
||||
|
||||
/datum/robot_energy_storage/medical/adv_burn_kit
|
||||
/datum/robot_storage/energy/medical/adv_burn_kit
|
||||
name = "Burn kit Synthesizer"
|
||||
statpanel_name = "Burn kits"
|
||||
|
||||
/datum/robot_energy_storage/medical/adv_burn_kit/syndicate
|
||||
max_energy = 25
|
||||
/datum/robot_storage/energy/medical/adv_burn_kit/syndicate
|
||||
max_amount = 25
|
||||
|
||||
/datum/robot_energy_storage/medical/adv_brute_kit
|
||||
/datum/robot_storage/energy/medical/adv_brute_kit
|
||||
name = "Trauma kit Synthesizer"
|
||||
statpanel_name = "Brute kits"
|
||||
|
||||
/datum/robot_energy_storage/medical/adv_brute_kit/syndicate
|
||||
max_energy = 25
|
||||
/datum/robot_storage/energy/medical/adv_brute_kit/syndicate
|
||||
max_amount = 25
|
||||
|
||||
/datum/robot_energy_storage/medical/nanopaste
|
||||
/datum/robot_storage/energy/medical/nanopaste
|
||||
name = "Nanopaste Synthesizer"
|
||||
statpanel_name = "Nanopaste"
|
||||
|
||||
/datum/robot_energy_storage/medical/nanopaste/syndicate
|
||||
max_energy = 25
|
||||
/datum/robot_storage/energy/medical/nanopaste/syndicate
|
||||
max_amount = 25
|
||||
|
||||
/// This datum is an alternative to the energy storages, instead being recharged in different ways
|
||||
/datum/robot_storage/material
|
||||
name = "Generic material storage"
|
||||
/// What stacktype do we originally have
|
||||
var/stack
|
||||
/// Does this get added to the autorefill from the ORM
|
||||
var/add_to_storage = FALSE
|
||||
|
||||
/datum/robot_storage/material/New(obj/item/robot_module/R)
|
||||
if(R && add_to_storage)
|
||||
R.material_storages += src
|
||||
..()
|
||||
|
||||
/datum/robot_storage/material/glass
|
||||
name = "Glass Storage"
|
||||
statpanel_name = "Glass"
|
||||
stack = /obj/item/stack/sheet/glass
|
||||
add_to_storage = TRUE
|
||||
|
||||
/datum/robot_storage/material/rglass
|
||||
name = "Reinforced glass Storage"
|
||||
statpanel_name = "Reinforced glass"
|
||||
stack = /obj/item/stack/sheet/rglass
|
||||
|
||||
/datum/robot_storage/material/metal
|
||||
name = "Metal Storage"
|
||||
statpanel_name = "Metal"
|
||||
stack = /obj/item/stack/sheet/metal
|
||||
add_to_storage = TRUE
|
||||
|
||||
@@ -388,7 +388,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain
|
||||
update_wclass()
|
||||
|
||||
/obj/item/stack/cable_coil/cyborg
|
||||
energy_type = /datum/robot_energy_storage/cable
|
||||
energy_type = /datum/robot_storage/energy/cable
|
||||
is_cyborg = TRUE
|
||||
|
||||
/obj/item/stack/cable_coil/cyborg/update_icon_state()
|
||||
|
||||
Reference in New Issue
Block a user