Commit Graph
31 Commits
Author SHA1 Message Date
68f4deff40 [MIRROR] MODLink System (+ NWTLMM) [MDB IGNORE] (#23199)
* MODLink System (+ NWTLMM) (#77639)

## About The Pull Request
A pact made with `@ Kapu1178`
Small changes you should not care about:
RD MODsuit outfit (admin only) no longer has a beret that blocks the
activation of the suit
The beret used by death squad officers no longer is blocked from being
put on a hat stabilizer module
Admins can now Shear matrices of objects in Modify Transform
Multitool buffers have been a little refactored to use a setter proc
that saves them from causing hard dels
Cooler stuff:
A revival and remake of [Nobody Wants To Learn Matrix
Math](https://github.com/tgstation/tgstation/pull/59103), this time with
additional tooling for quick matrix calculations.

![image](https://github.com/tgstation/tgstation/assets/23585223/eb387738-0839-463a-aed8-4703d139b11a)
The MODLink system, available through every MODsuit and MODLink scryers
(a neck item obtainable from advanced modsuit research or
charliestation)
Let's you make a holographic call with any other MODLink user, where you
can chat in realtime and see what's up with em

![image](https://github.com/tgstation/tgstation/assets/23585223/5a822f9f-e823-497e-b766-40055f2fc0d6)
![image](https://github.com/tgstation/tgstation/assets/23585223/062983ee-6058-4e78-a3aa-bccda1a3e224)

## Why It's Good For The Game
Adds a fun way for the crew to communicate with each other that can be
done in real-time with relative privacy compared to radio.

## Changelog
🆑 Fikou, Armhulen, Sheets (+rep for Mothblocks and Potato)
fix: RD MODsuit outfit (admin only) no longer has a beret that blocks
the activation of the suit
fix: The beret used by death squad officers no longer is blocked from
being put on a hat stabilizer module
admin: Admins can now Shear matrices of objects in Modify Transform
admin: Admins now have access to Test Matrices in the VV dropdown, an
all-in-one tool for editing transforms.
add: MODLink system, available through scryers (from RnD and Charlie
Station) and through MODsuits. Lets you call people with holographs!
/🆑

* MODLink System (+ NWTLMM)

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-19 05:09:31 -04:00
6a5f3c50c4 [MIRROR] Material container & related stuff ui refactors & clean-up [MDB IGNORE] (#22667)
* Material container & related stuff ui refactors & clean-up (#76220)

## About The Pull Request

**1. Material container clean-up & refactor**
- Replaced `total_amount` var with `total_amount()` proc, this var can
be easily computed by summing up all material amounts rather than
storing it as a var which is tedious to update & keep track of when
materials are added/removed
- Removed unused procs `transer_amt_to()`, `can_insert_amount_mat()`,
and `get_categories()`. These procs are not used anywhere in the
codebase so let's remove them & make some space.
- Callbacks are replaced with signals, the callbacks don't need to be
explicitly garbage collected & having macros & procs marked with
`SIGNAL_HANDLER` makes your intentions more readable & explicit.
- Fixes #76151
All material adding, removal, checking operations are "Integer"
operations, i.e. the final value is rounded & them made 1 if the final
value is 0 using the macro `OPTIMIZE_COST`[coudn't come up with a better
name]. No more dealing with decimal value materials
The problem was after the protolathe was upgraded with better parts all
the design costs were multiplied with a decimal `efficiency_coeff`
value, this means even though in the UI the cost was displayed as 60
bluespace crystals its actual cost was `60.0001` something in the
backend causing this check for materials to fail & print the error
message.
- Replaced `GetComponent(/datum/component_material_container)` with just
a simple ref to the material container when adding the component, so we
can save some overhead from calling this proc
- Gave all procs a ton of documentation with documentation having
documentation
- Fixes #76506 RCD and other devices that uses the silo link upgrade now
have the correct material usages
- Fixes #72096. It wasn't just a problem with ancient protolathe but
with all machines that used `datum/component/remote_materials` the
problem was remote materials would add an instance of
`datum/remote/material_container` if it wanted to use local storage but
this component would get added before `datum/component/remote_materials`
could be registered i.e. it comes before remote_materials in the
component list. So when the machine is destroyed it will first destroy
`material_container` & then `remote_materials` therefore destroying the
materials before they could get ejected
- Silo link is established when parent is registered with remote
materials raher than adding an external timer which is faster
- Everything that uses a material container will auto eject their sheets
when destroyed
- Moved this & remote materials into its own folder for better
organization

**2. Material UI Changes**
- Removed the x25 & x50 print buttons from the autolathe, now they just
have x5 & x10 buttons like the protolathe, These buttons were of no use
since you could just type the exact amount you want to print in the
`[Max: <some amount>]` side bar. The code to compute these buttons was
just plain right nasty & some of it unused in the UI.
- The material eject button in the material bar does not gray out when
you can eject exactly one sheet
- All material cost are integer values rounded
- Fixes #76253 Exosuit Fabricator sends the material container static
data to the UI so its material bar is not greyed out when there are
sufficient materials to eject
- Component printer material bar sends the material container static
data to the UI so its material bar is not greyed out when there are
sufficient materials to eject
- Autolathe Material bars now display number of sheets available
- Max printable amount of items are now computed & updated correctly in
the UI. They were displaying wrong values & now get updated when items
are printed, materials are removed
- Silo hold actually works now. When a machine is put on hold it calls
this proc

https://github.com/tgstation/tgstation/blob/e929cf39cded5207d63df1fa8521f41f2816b383/code/datums/components/remote_materials.dm#L78-L87
Notice how the key is `src` so we should be consistent during checking
if a machine is on hold using the same `src` var. But for some reason we
did dumb shit like this

https://github.com/tgstation/tgstation/blob/e929cf39cded5207d63df1fa8521f41f2816b383/code/datums/components/remote_materials.dm#L150-L153
What is category? Why do we care for the area the machine is in? None of
it made sense so i removed all that junk and just made it check for
`src` like it should
- Removed redundant `removable` & `sheets` var from the material
container ui_data. These vars are unused in the UI
- If an item does not have the required materials then upon clicking
that item you will not get any error message but instead nothing happens

## Changelog
🆑
fix: items can be printed from autolathe & protolathe when the exact
material amounts are present in them after upgrading
fix: max printable amount now shows the correct value & updates when
items are printed, materials are removed in the autolathe & protolathe
fix: component printer material bar is not greyed out when there are
sufficient materials to eject
fix: rcd and other devices that uses the silo link upgrade now have the
correct material usages
fix: silo hold actually works
fix: machines using local storage to hold materials will eject it's
materials as sheets when deconstructed/destroyed
refactor: Autolathe Material bars now display number of sheets available
refactor: printing an item that does not have enough materials will fail
silently with no error messages
refactor: Drone dispenser will eject sheets upon deconstruction
refactor: all things that store materials will auto ejects its sheets(if
there is sufficient material) when destroyed
refactor: inserting an item into the material container will display the
units consumed as sheets not absolute units
refactor: removed x25 & x50 print buttons from the autolathe

* Material container & related stuff ui refactors & clean-up

* Update ammo_workbench.dm

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-25 02:53:43 -04:00
2f552919c1 [MIRROR] Icons folder cleaning wave two [MDB IGNORE] (#22454)
* Icons folder cleaning wave two

* Merge conflict resolution

* Modular path hell

* hmm

* Update 2022-10.yml

* Another modular thing

---------

Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-16 00:41:18 -04:00
8f2c771b5f [MIRROR] Autolathe, protolathe, mech fab and comp printer now use defines for matter bins values. Also some production ui do. [MDB IGNORE] (#21953)
* Autolathe, protolathe, mech fab and comp printer now use defines for matter bins values. Also some production ui do. (#76020)

Changed hardcoded matter bins values to use defined
`SHEET_MATERIAL_AMOUNT` for following stuff: autolathe, protolathe, mech
fabricator and component printer.

`Material Access Bar` and `MaterialIcon` used for protolathes, circuit
printers and etc. now also use defined `SHEET_MATERIAL_AMOUNT`, via
static ui data, to prevent same issues in future.

Also changed some notes in /// parts just because why not.

* Autolathe, protolathe, mech fab and comp printer now use defines for matter bins values. Also some production ui do.

---------

Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
2023-06-23 15:34:52 -07:00
649c250702 [MIRROR] JSON Logging Take Two [MDB IGNORE] (#21329)
* JSON Logging Take Two

* Fixes the conflicts and makes our logs all comply with the new logging framework, hopefully.

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-05-28 18:10:07 -04:00
c4d4e1da63 [MIRROR] Minerals have been refactored so costs and minerals in items are now in terms of mineral defines. [MDB IGNORE] (#20916)
* Minerals have been refactored so costs and minerals in items are now in terms of mineral defines.

* AI GEN RUN ONE

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-05-03 22:48:10 +01:00
16b64484e9 [MIRROR] Ore silo will put machines off its level on hold, instead of disconnecting [MDB IGNORE] (#20859)
* Ore silo will put machines off its level on hold, instead of disconnecting (#74990)

## About The Pull Request

There's a problem where people would try to rebuild a whiteship and use
an Ore Silo for it. However, it would automatically unlink everything
when moving, because it's checking for z level as soon as it changes z
level itself, before the Ore silo has 'moved' as well.

~~To fix this, I'm now only disconnecting ore silos when a shuttle
moves. This mostly does the same as before, but technically you can sync
an unwrenchable connected machine and bring it to space with you
(without using a shuttle) to stay connected, but I don't see this as a
problem, and my original point of the PR was to prevent Lavaland ORMs.~~

I decided against this, instead I've made it so machines that aren't on
a valid level (either both on the same z level or both on the station
level) will be considered 'on-hold', much like if the QM has set it to
hold through the silo directly. This means that machines no longer
disconnect from the Ore silo on moving, they just can't access the
materials in it. This affects gameplay in 2 ways:

1. You no longer need to resync when you bring the machine back
2. It won't unsync itself every time you move station z-level with its
silo (such as on a whiteship).

I also made disconnecting from an ore silo actually remove them from the
ore silo's list of connected machines.

## Why It's Good For The Game

Closes https://github.com/tgstation/tgstation/issues/69863

## Changelog

🆑
balance: Machines (such as ORM and Techfabs) will no longer unsync from
Ore silos when it moves Z-level, instead it will prevent materials from
being used, as if it was on hold.
/🆑

* Ore silo will put machines off its level on hold, instead of disconnecting

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-05-02 15:50:25 -04:00
e8df6da548 [MIRROR] Fixes silo logging + add log file based logging to silo [MDB IGNORE] (#20748)
* Fixes silo logging + add log file based logging to silo

* Update logging.dm

* Update logging.dm

---------

Co-authored-by: Gamer025 <33846895+Gamer025@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-26 21:23:25 +01:00
a8c10d1659 [MIRROR] Converts a shitload of istypes to their more concise macros [MDB IGNORE] (#15702)
Converts a shitload of istypes to their more concise macros

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-08-27 16:23:44 -04:00
64b71f7585 [MIRROR] Material holding machines can't connect to ore silos on different z levels [MDB IGNORE] (#14167)
* Material holding machines can't connect to ore silos on different z levels (#66953)

The station's ore silo can't connect to machines that are off the station z-level anymore. This doesn't affect multi-z stations.
Also includes ore silo code improvement because I was unhappy with it.

* Material holding machines can't connect to ore silos on different z levels

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2022-06-07 21:11:42 +01:00
7d1d0e1fad [MIRROR] Refactors most spans into span procs (#6315)
* Refactors most spans into span procs

* AA

* a

* AAAAAAAAAAAAAAAAAAAAAA

* Update species.dm

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-06-16 00:24:49 +01:00
e890b1282b [MIRROR] Replaces intents with combat mode (#3063)
* Replaces intents with combat mode

* updates

* a

* Update living_defense.dm

* https://github.com/tgstation/tgstation/pull/56638/files

* gunsafety!

Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
2021-02-05 16:58:16 +01:00
94f9a384b0 [MIRROR] [READY] Bespoke Datum Mats (#2737)
* [READY] Bespoke Datum Mats

* Update sheetifier.dm

Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2021-01-17 13:25:04 +01:00
8158c64115 [MIRROR] minor material_container args/vars refactor and Mk-honk shoes peeve. (#1755)
* minor material_container args/vars refactor and Mk-honk shoes peeve. (#54863)

My original intention was just fixing an issue with the Mk-honk banana shoes but, considering I didn't want to add two new variables to a component with already lot of args and lengthy AddComponent() calls in term of text, I had to merge some TRUE/FALSE variable/args into the breakdown_flags bitfield (now named mat_container_flags) in the process.

* minor material_container args/vars refactor and Mk-honk shoes peeve.

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2020-11-21 16:20:29 +00:00
cae0e4cb5c [MIRROR] Adds Alloy Materials (#1228)
* Adds Alloy Materials (#53623)

Adds and implements alloy materials

Takes several materials that were mostly fluff and converts them into actual usable materials.
Messes with material code a bit to make alloys recycle back into their component materials.
Adds the alloy materials to their in-game stacks.

Materials added:
    Plasteel
    Plastitanium
    Plasmaglass
    Titaniumglass
    Plastitanium Glass
    Alien Alloy

Makes plasteel/plastitanium/plasmaglass and the rest able to have separate properties from their component materials. It doesn't make much sense that the materials used to seal off the supermatter chamber from the rest of the station would be prone to exploding when heated.

Allows for further expansion of materials, possibly including actual functional metallurgy and smelting at some point in the very distant future.

(Lemons note: Adds a regeneration component, used for alien alloy)

* Adds Alloy Materials

Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
2020-10-10 00:29:56 +01:00
2e5de54f90 [MIRROR] Deconstruct ore silo (#375)
* deconstruct silo (#52923)

* Deconstruct ore silo

Co-authored-by: NightRed <nightred@gmail.com>
2020-08-17 23:32:48 +02:00
ShizCalev 7209ac3c93 Removes unnessacary math defines 2020-02-17 23:09:09 -05:00
Emmett GainesandGitHub 9e34b3d6a1 Supports named arguments in AddComponent and AddElement (#49098)
AddComponent/AddElement now support named arguments. This requires passing around an argument list instead of using actual proc args which a bit gross but we can blame byond for forcing this.

InheritComponent uses mirrored init arguments instead of an argument list which means no more accessing it via index to get to the same arguments as in init.

As a small bonus I restructured dcs defines to be a bit more manageable. Mainly just splits them into separate files and gives them their own folder.
2020-02-17 17:57:52 +13:00
AnturKandTad Hardesty b2fc68db32 Fix ore silo runtime (#48976)
Unicode change revealed another material nonsense, who'd expect that.
2020-01-25 15:56:15 -08:00
MrPersonandoranges f7eb2c905b Unicode awareness Part 2 -- copytext() (#48512)
* Unicode support Part 2 -- copytext()

This is the transition of all copytext() calls to be unicode aware and also some nearby calls in the same functions. Most things are just replacing copytext() with copytext_char() as a terrible character limiter but a few others were slightly more involved.

I replaced a ton of
````
var/something = sanitize(input())
something = copytext(something, 1, MAX_MESSAGE_LEN)
````

with a single stripped_input() call. stripped_input() already calls html_encode(), trim(), and some other sanitization so there shouldn't be any major issues there.

This is still VERY rough btw; DNA is a mess, the status displays are complete ass, there's a copytext() in code\datums\shuttles.dm that I'm not sure what to do with, and I didn't touch anything in the tools folder. I haven't tested this much at all yet, I only got it to compile earlier this morning. There's also likely to be weird bugs until I get around to fixing length(), findtext(), and the rest of the string procs.

* Makes the code functional

* Assume color hex strings are always # followed by ascii.
Properly encodes and decodes the stuff in mob_helpers.dm which fixes some issues there.

* Removes ninjaspeak since it's unused
2020-01-18 13:07:22 +13:00
Emmett GainesandAnturK 041322f222 Cleans up some destroy procs related to remote_materials (#47601) 2019-11-08 22:15:50 +01:00
QustinnusandEmmett Gaines a394ccdc2b Material datum chairs & tables and applies materials to all items (Now with less pain for mining & RnD) (#46525)
removes materials list from items, uses custom_materials instead. This might introduce some bugs so we should testmerge this for a while (and Ill test stuff locally as much as I can)

this also adds material crafting to sheets. Test case being chairs. In the future we can add stuff like tables, walls, doors etc.

also applies materials to everything, with fixes, which can close #46299
2019-10-08 11:06:02 -04:00
nemvarandRob Bailey e587b970da Adds parent calls to almost all tool_acts (#45582)
* Adds parent calls to almost all tool_acts

* actually compiles
2019-08-03 22:25:57 -07:00
QustinnusandEmmett Gaines b33d1c49a3 [READY] Floydmats (Datum materials) & custom toolboxes (#45118)
* Initial work

* more

* ass

* wsedfwedff

* asss

* test

* stuff

* fuck

* sss

a

* kms

* asdadwedwdfwefwef

* start

* test

* dwwdew

* ewefwfef

* Redemption machine (#8)

* Redemption machine

* Removes debug messages

* changes

* fuckmyshitup

* coin mint works with new material shenanigans (#10)

* Auto stash before merge of "materials" and "origin/materials"

* woops

* furnace (#11)

* autolathe manufacturing of toolboxes

* eggs in a basket

* some small changes

* matcolors

* documentation

* more documentation and effects

* done

* Color man bad (#12)

* fixes designs

* ass

* more fixes

* fuck me

* firestacks adder

* epic fixes

* fixes designs

* DONE DIDDILY DOO

* removes category macro

* ch-ch-ch-changes

* fixes some stuff

* Fixes display of ore values (#9)

* Redemption machine

* Removes debug messages

* Re-adds value display

* Replaces the fire stacking component with an element instead (#13)

* fixes examine

* fixes ligma bugs

* double ligma boofus

* fix

* misses some defines

* fixes ORM

* Update code/datums/components/material_container.dm

Co-Authored-By: Emmett Gaines <ninjanomnom@gmail.com>

* fixes

* Makes glass objects weaker (#14)

* Makes glass objects weaker

* uses correct proc

* fixes shit

* honk honk

* better

* oh shit oh fuck

* fixes

* fuck ORMs

* fixes the biogen

* documentation

* ass (#15)

* component

* changes

* ass

* ass

* doc

* Auto stash before merge of "materials-plasmacomponent" and "origin/materials-plasmacomponent"

* fixes rounding

* fixed
2019-07-24 11:27:01 -04:00
vuonojenmustaturskaandAnturK 8ddc9677c7 examine-code refactor (#44636)
* 1/4 done? maybe?

* more

* stuff

* incremental stuff

* stuff

* stuff & things

* mostly done but not yet

* stuffing

* stuffing 2: electric boogaloo

* Git Commit and the Kingdom of the Crystal Skull

* make it actually compile

* found more stuff

* fixes

* fix AI laws appearing out of order

* fix windows

* should be the remaining stuff

* this time for real

* i guess it should compile too

* fix sechuds
2019-06-19 22:07:57 +02:00
Emmett GainesandAnturK c3f95024b2 Gets rid of the GetComponent macros (#44220)
* Removes the GetComponent macros

* Regex replacement for GET_COMPONENT

Search: `GET_COMPONENT\( *(.+?) *, *(.+?) *\)`
Replace: `var$2/$1 = GetComponent($2)`

* Regex replacement for GET_COMPONENT_FROM

Search: `GET_COMPONENT_FROM\( *(.+?) *, *(.+?) *, *(.+?) *\)`
Replace: `var$2/$1 = $3.GetComponent($2)`
2019-06-04 17:39:58 +02:00
Tad HardestyandAnturK 40cfebf2b0 Add some additional type annotations to lists (#43087) 2019-03-17 12:18:23 +01:00
vuonojenmustaturska daba3009ba Eliminate some duplicate typecaches 2018-08-24 00:33:21 +03:00
81DentonandTad Hardesty 7a52e44b0d Add ore silo examine message, add it to runtimestation (#39792)
I added an examine message to the ore silo:

    [src] can be linked to techfabs, circuit printers and protolathes with a
    multitool.

Also added it to runtimestation, which required me to expand the area a little.
2018-08-20 23:24:36 -07:00
MrDoomBringerandTad Hardesty 454aab9f98 Add ore silo sprite (#39768)
after 8 billion years i get around to PRing the ore silo icon

shout out to space maniac
2018-08-18 15:02:31 -07:00
Tad Hardestyandoranges 59fa61113f [Ready] Communal Resource Storage II (#39118)
add: The vault now contains an ore silo where the station's minerals are stored.
add: The station's ORM, recycling, and the labor camp send materials to the silo via bluespace.
add: Protolathes, techfabs, and circuit imprinters all pull materials from the silo via bluespace.
add: Those with vault access can view mineral logs and pause or remove any machine's access, or add machines with a multitool.
tweak: The ORM's alloy recipes are now available in engineering and science protolathes.
2018-07-25 22:58:11 +12:00