Adds a Material Stack manipulation apparatus for Engineer Cyborgs, replaces the R-Glass tool (#74297)

## About The Pull Request
- Adds a new apparatus for Engineer Cyborgs that can pick up and
manipulate material sheet stacks. Once holding a stack, interactions are
passed to the stack.
- Sheets in the new apparatus will always show as single sheets while
held, regardless of the actual count.
- Removes the R-Glass tool from Engineer Cyborgs.
- Sabotage borgs have the same changes
## Why It's Good For The Game
Allows Engiborgs to repair or build with various materials, without
(further) destroying the concept of material economy.

The R-Glass tool, in my experience, is generally unused, as the RCD can
create R-Windows and that's the main use for the sheets. So the tool has
been removed to keep the Engineer Borg Toolkit from exploding. The new
tool can also pick up R-Glass, if a need for it arises.
## Changelog
🆑
balance: Engineer Borgs now have a tool to manipulate material stacks
(and also tile stacks). This replaces the R-Glass tool.
/🆑
Pictured: Apparatus carrying titanium.

![image](https://user-images.githubusercontent.com/37497534/228021045-0f5a6c76-9caa-47de-ad0a-d20e7e1f4eb2.png)
This commit is contained in:
zxaber
2023-04-15 18:23:02 -07:00
committed by GitHub
parent 15576f0de5
commit 697c8fdc40
5 changed files with 39 additions and 30 deletions
@@ -167,29 +167,6 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
add_fingerprint(user)
..()
/obj/item/stack/sheet/rglass/cyborg
mats_per_unit = null
cost = 250
source = /datum/robot_energy_storage/iron
/// What energy storage this draws glass from as a robot module.
var/datum/robot_energy_storage/glasource = /datum/robot_energy_storage/glass
/// The amount of energy this draws from the glass source per stack unit.
var/glacost = 500
/obj/item/stack/sheet/rglass/cyborg/get_amount()
return min(round(source.energy / cost), round(glasource.energy / glacost))
/obj/item/stack/sheet/rglass/cyborg/use(used, transfer = FALSE, check = TRUE) // Requires special checks, because it uses two storages
if(get_amount(used)) //ensure we still have enough energy if called in a do_after chain
source.use_charge(used * cost)
glasource.use_charge(used * glacost)
return TRUE
/obj/item/stack/sheet/rglass/cyborg/add(amount)
source.add_charge(amount * cost)
glasource.add_charge(amount * glacost)
/obj/item/stack/sheet/rglass/get_main_recipes()
. = ..()
. += GLOB.reinforced_glass_recipes