Commit Graph

13243 Commits

Author SHA1 Message Date
Arkatos1
dede4f9376 tgui: RCD Access Control (#50600)
* First version

* Integrated electronics version

* Access Control naming
2020-04-25 11:13:19 +03:00
LemonInTheDark
02ecf7f3d4 RSF PR but again because github is **** (#50646)
* first step

* Thank you for all your work, time to go rest...

* Woop

* nightcode.mp4, docs to come

* docs

* There we go

* so uhhhh test your code kids

* Update code/game/objects/items/RSF.dm

Co-Authored-By: Rohesie <rohesie@gmail.com>

* Update code/game/objects/items/RSF.dm

Co-Authored-By: Rohesie <rohesie@gmail.com>

* handles some cleanup, makes the processing sane

* Changes changes changes!

* Makes a define, cleans up some dumb mistakes

Co-authored-by: Rohesie <rohesie@gmail.com>
2020-04-25 00:43:39 -03:00
LemonInTheDark
006cc4947d An attempt to clean up tesla code (#50530)
* An attempt to clean up tesla code

* macro-op

* there we go
2020-04-24 21:34:40 -03:00
Archanial
83f369b5e9 Fixes stasis bed runtimes (#50525)
* fix

* suggested changes

* Theresnotwoargument

* changes

* okay

* Update code/game/objects/structures/tables_racks.dm

Co-Authored-By: Rohesie <rohesie@gmail.com>

Co-authored-by: Rohesie <rohesie@gmail.com>
2020-04-24 17:35:35 -03:00
SomeoneYouProbablyKnow
7ce87578a1 Adds the detective wardrobe (#50564)
* Adds the det vendor and map changes

* Revert "Adds the det vendor and map changes"

This reverts commit 8c9c59935fbfe1a6e858f69d16684a21f911b093.

* Unfucks the mapmege expect box. box soon tm

* Literally A newline

* Box and other stuff

* Changes the sprite

* Kilo and donut

Co-authored-by: J? the J man <Zeldin.nick@gmai.com>
2020-04-24 17:04:36 -03:00
zxaber
1a5540723f Borgs can no longer be synced to AIs on other Z levels (#50609)
* please check your connection and try again

* please check your EOF and try again

* forgot this one
2020-04-24 22:30:24 +08:00
spookydonut
9db363b992 Merge pull request #50627 from willox/dupe_fixes
Fix instances of duplicate variable definitions in types
2020-04-24 22:27:15 +08:00
ArcaneMusic
b30eb7e32e Take2 (#50655) 2020-04-24 09:46:22 -03:00
Arkatos1
280e7e2c0e Cardboard cutouts now use a radial menu to choose their skins (#50617)
* Cutout radials

* Cleanup
2020-04-24 01:10:21 +08:00
spookydonut
9bcea78f22 Merge pull request #50512 from Arkatos1/nullrod_radial
Nullrods now use a radial menu to choose their skins
2020-04-24 00:57:18 +08:00
Fikou
0ec86b44b1 adds new stamps, resprites old ones, various cool stuff (#50573)
* adds new stamps, resprites old ones, various cool stuff

* FUCK

* fix

* today i will forget a comma

* ok i guess
2020-04-24 00:43:12 +08:00
spookydonut
2303d750cf Merge pull request #50604 from ArcaneMusic/cashlogging
Basic economy logging.
2020-04-24 00:38:08 +08:00
spookydonut
a00778f16e Add EYE_STAB to item_flags (#50556)
* Add EYE_STAB to item_flags

* add to surgicaldrill and scalpel
2020-04-23 12:28:37 +02:00
William Wallace
7ad88d8e3c remove duplicate var definitions in donkpockets 2020-04-23 04:00:48 +01:00
William Wallace
1d593bc2e3 'box of beanbags' now has rubbershot box icon (fixing typo) 2020-04-23 03:58:09 +01:00
tralezab
f1d5fd2d79 way overtuned (#50399) 2020-04-22 12:15:51 -03:00
Fikou
564620c14d changes cult sprites + radials (#50620)
* makes cult sexy

* turns cult sprites into sex

* gurgr

* hola

* final commit maybe

* FUCK

* shit

* a

* walla walla bing bong

* man fuck

* i didnt even know you could do this wtf

* new sounds from actioninja

* ahoy spongebob

* yeah

* bazinga

* should be finished

* oops
2020-04-22 11:57:00 -03:00
spookydonut
1dc685af42 Merge pull request #50578 from trollbreeder/mapeditoricons
Adds icons for gibspawners and mob_spawns to help with mapmaking
2020-04-22 18:57:02 +08:00
ArcaneMusic
b20683b1e0 Merge remote-tracking branch 'upstream/master' into cashlogging 2020-04-21 21:02:38 -04:00
ArcaneMusic
0e2dfb6cc3 I think this is the thing for public logging? 2020-04-21 20:28:38 -04:00
ArcaneMusic
ddee742ad9 Basic econ logging 2020-04-21 17:37:15 -04:00
Arkatos
3f4c8f529c Cleanup 2020-04-21 13:28:53 +02:00
Arkatos
bc50efd601 Autodoc fix 2020-04-21 13:24:15 +02:00
Arkatos
a1fd74b195 Autodoc 2020-04-21 13:23:52 +02:00
Arkatos
3a3059dd92 Fixes and further cleanup 2020-04-21 12:59:16 +02:00
Arkatos
6bb4c0c2f2 Merge branch 'master' of https://github.com/tgstation/tgstation into papersack_radial 2020-04-21 12:07:34 +02:00
ArcaneMusic
dc89ef0239 Turbotany version 1.2 (#50513)
* EVERYTHING. Check the changelog.

* Minor species change, spade fits on plant belt.

* Local man blind, news at 11.

* Longrange pollenation, and fixes pill composting.
2020-04-21 02:12:49 -07:00
Ghilker
9532dbd2a8 Hydrogen Gas (#50510)
* new PR no tgui bundle build yet

* tgui bundle built

* atmos.dmi conflict fix 2

* balancing

* tgui bundle fix
2020-04-20 14:47:22 -03:00
oranges
218512451d Merge pull request #50497 from stylemistake/tgui-3.0
About The Pull Request

This is a massive rework that is coming down the pipe.
Removal of routes.js

This PR removes routes.js file in favor of filename-based routing. DM-code will now reference components directly.

For example, previously, DM code would use "ntos_main" as a key. Now you need to use "NtosMain" as a key, and it should match both the exported name and a file name of your component.
Flexible Layout System

As a result of the above, interfaces are now top-level components. To accomodate this change, we have created a new abstraction for the layout: the Window component.

You will now see, that interfaces, instead of returning window contents directly, return a tree that starts with a <Window /> component:
export const Apc = (props, context) => {
  return (
    <Window resizable>
      <Window.Content scrollable>
        <ApcContent />
      </Window.Content>
    </Window>
  );
};

Metadata, which was previously added to routes.js (things like theme, wrapper, scrollable) can now be declared on the Window.

This also eliminates the need for a concept called wrapper, because now you can directly control where you render <Window.Content />, which allows adding things like toolbars, status bars, and modal windows.

We also have <NtosWindow /> for NtOS interfaces, and <Layout /> for completely custom, non window-based layouts. (Side-panel tguis, or maybe even goonchat or stat panel replacement, wink wink, nudge nudge, WYCI).
Modals

Now since we have a new layout system, modals are now easier to implement than ever! This is because now we have a clear slot for them, which would cover all area above the content with a Dimmer.

This avoids issues like Dimmer being scrollable together with the content, or covering content only partially, and things like that.

export const Apc = (props, context) => {
  return (
    <Window resizable>
      {/* Dimmer/Modal slot starts here */}
      {showModal && (
        <Modal>
          {...}
        </Modal>
      )}
      {/* Dimmer/Modal slot ends here */}
      <Window.Content scrollable>
        <ApcContent />
      </Window.Content>
    </Window>
  );
};

React Context

You have probably noticed, that we have a second argument to components: context.

This is a "magical" state container, that is available on all components without you doing anything extra to support it. It carries the Redux store and all tgui backend related data, meaning that things like useBackend(context) will now use context instead of props.

This also means, that you no longer have to pass around the state via the props:

<AnotherNestedComponent state={state} />

With context available on all components, this is all you need to do:

<AnotherNestedComponent />

Shared TGUI states

We introduce a new abstraction, that eliminates all previous use-cases for class-based React components - local component state.

You can now achieve the same thing with help of a useLocalState() function:

const AirAlarmControl = (props, context) => {
  const [screen, setScreen] = useLocalState(context, 'screen');
  // Use `screen` to access current screen.
  // Use `setScreen(nextValue)` function to set screen to a new value.
};

This also removes the redundant tgui:view action, and config.ui_screen variable, because now this thingie can achieve the same thing in a more generic way.

But wait, there's more!

You can use useSharedState() function, to not only create a piece of state, but also sync it across all clients, which is a fantastic way to allow observers see how user interacts with the UI.

const AirAlarmControl = (props, context) => {
  const [screen, setScreen] = useSharedState(context, 'screen');
  // Now screen will change for everyone who observes the UI.
};

useSharedState() is JSON-serializable, which means you can use anything as a state, not only strings and primitive values.
Performance Improvements

We have sped up the initial render by about a full frame.

Miscellaneous
    Fixed operating computer getting stuck on last step of the surgery.
    All UIs refactored to use new Tabs API
    Formatters
        formatPower, outputs watts with SI units, kilo, mega, etc.
        formatMoney, formats cash with thousand separators and shit. Code for this is stolen from real business applications.
    Number helpers
        round(number, precision) helper, with correct 0.5 rounding, and with other float nonsense fixed.
        toFixed(number, precision) won't throw an exception on negative values
    Moving stuff around in webpack
        DOM polyfills get their own directory, and are bundled together with the rest of the code. 60KB -> 20KB, indirectly adds speed to initial render.
        Stylesheets are now imported in index.js (well, everything is now imported in index.js now).
    Achievements UI cleaned up, smaller, neater UI.
    Black Market Uplink cleaned up
    Generalized Uplinks, Malf Module Picker now uses this generic uplink UI, with custom theme still applied. Saved a few kilobytes.
    Uplinks limit search results to 25, which helps reduce lag while typing into the search box.
    Added padding props to Box, aka all this crap: p, px, py, pt, pr, pl, pb.
    Reduced stats while building the bundle, now you can actually see the meaningful green text in console instead of all the child module spam.

Flattened Crafting Categories

New Kiosk UI

Modal Tweaks

You can track progress of other tgui ideas here: tgui: Roadmap

Information for downstreams

Your tgui modifications will not be easily mergeable because we have effectively shifted indentation of all interfaces by two, and added a new wrapping component called <Window />.

This will be a lot of manual work, but it's not that terrible though. If you can isolate your local contributions to tgui, you can just copy-paste them into the new tgui where needed, and it should just work.

If you're not yet using tgui 2.0 (or tgui-next) in your project - great news, this is the final big refactor, and everything will be quieter after this PR. Things are looking really solid now. This will serve as a great base for your future UI work.
Acknowledgements

Big thanks to @actioninja for converting half of the interfaces, that's a lot of work!
2020-04-20 20:52:04 +12:00
trollbreeder
111860c9b3 La la la, maphelpers ftagn!
Gibspawners and mob_spawn objects now have icons. There's also unique icons for assistant, cook, engineer, miner, etc. corpses. Also sets the invisibility of delayed mob spawns to 101 so it doesn't show up. Also adds a name for basetype mob spawns.
2020-04-19 20:48:01 +02:00
spookydonut
a67e89e312 Merge pull request #50539 from bobbahbrown/dumb-robots-stop-it
Fixes Peacekeeper Borgs Keeping Dampening Fields After Damage / Death
2020-04-20 02:21:41 +08:00
spookydonut
e4f1f58793 Stasis bed/Operating Computers now consider diagonals for linking (#50443)
* stasis bed takes diagonals

* op computers also account diagonals

* optable initialize too
2020-04-20 02:11:40 +08:00
Fikou
a2de4d3546 you can now make shuttle seats with titanium (#50455)
* adds shuttle seats to titanium recipes

* shuttle seats now deconstruct into titanium
2020-04-20 02:07:29 +08:00
actioninja
b5dfd8880d id to component name 2020-04-19 19:36:35 +03:00
ominousgrace
42af788a4b Created a sub type of Wormhole Gun with pre loaded anomaly core (#50438)
Added this Wormhole Gun to the Mad Scientist traitor Kit
2020-04-19 13:07:47 -03:00
Arkatos
d11cebea2f Cleanup 2020-04-19 16:34:10 +02:00
Arkatos
6ba0857abf Papersack radial 2020-04-19 13:46:00 +02:00
Brett Williams
1a1d7d0a97 fix 2020-04-18 13:14:19 -03:00
EgorDinamit
3dc4ae7bc7 [Ready] Forgottenship Ruin - rebalance, config update, uplink item. (#50529)
* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Update code/modules/ruins/spaceruin_code/forgottenship.dm

Co-Authored-By: TiviPlus <57223640+TiviPlus@users.noreply.github.com>

* Lowered Cybersun hardsuit armour values.

* Upgrading energy armour value.

* Now captain isn't male-only.

* Turrets

shot_delay changed from 0.8 seconds to 1.0 second.

* Adds 3 encryption keys for cyborgs and AIs to use

* Syndi-captain gets loud-voice headset.

* Policy config

* Define space syndies

* Added Robotics access for syndies

It's really useful for when they create cyborgs.

* Adds special version of medivend instead of normal one

* Replaces basic syndi-vend with special one

* Update forgottenship.dm

* Cybersun hardsuit doesn't slow you down as said in uplink desc.

* NPC + Area sounds.

Elite Assault Officer projectile sound changed from pulse.ogg to laser.ogg.
Added ambient sounds for all areas.

* Good day sir

Lowered the amount of ores you get.

* assignedrole

Let admins know that this particular shitter is the cybersun captain!

* Weight'n'Cost of ruins fixed in another PR

* Update code/modules/uplink/uplink_items.dm

Co-Authored-By: Bobbahbrown <bobbahbrown@gmail.com>

* Cost/Weight of ALL space ruins changed

* Thanks to fikou

* Only cap's spawner leaves empty-sleeper now

* if(policy)

* Revert "Cost/Weight of ALL space ruins changed"

This reverts commit fa343547f0dcf225710895f50ac2bbf32dc07b5d.

* Fixup

* Minor fix in attempt to fix some stuff

* Update code/modules/ruins/spaceruin_code/forgottenship.dm

Thanks trollbreeder.

Co-Authored-By: trollbreeder <trollbreeder@users.noreply.github.com>

* Update code/modules/ruins/spaceruin_code/forgottenship.dm

Co-Authored-By: trollbreeder <trollbreeder@users.noreply.github.com>

* [Grammar] THE captain!

Co-Authored-By: trollbreeder <trollbreeder@users.noreply.github.com>

* grammar review man

Co-Authored-By: trollbreeder <trollbreeder@users.noreply.github.com>

* "A" vs "The"

Co-Authored-By: trollbreeder <trollbreeder@users.noreply.github.com>

* [Grammar] "an"

Co-Authored-By: trollbreeder <trollbreeder@users.noreply.github.com>

* Update uplink_items.dm

* Update code/modules/ruins/spaceruin_code/forgottenship.dm

Co-Authored-By: trollbreeder <trollbreeder@users.noreply.github.com>

Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
Co-authored-by: trollbreeder <trollbreeder@users.noreply.github.com>
2020-04-18 11:16:27 +02:00
Ghilker
4449196201 Tiered canisters (#50330)
This PR will add 3 tiers (expandable) to the atmos canisters
Each tier will have a maximum temperature and pressure threshold that will cause the canister to burst if going over them.
How to build each tier

    Tier 1: With 5 metal sheets you make a canister frame tier 0 (similar way of the old canister making) and then you put 5 more metal sheets onto the frame (similar to when building windows on grilles) to finish it and build a tier 1 canister
    Tier 2: You first make the tier 0 canister frame, you put onto it 5 sheets of plasteel to make a tier 1 canister frame and you complete the tier 2 canister by using 5 sheets of titanium onto it
    Tier 3: Make a tier 0 and then a tier 1 canister frame like shown above, then you put 1 bluespace crystal onto the canister frame to make it tier 2 and complete it with plastitanium for a tier 3 canister.
    The maximum temperature and pressure that each canister can hold are:
    Tier 1 5000 K and 50000 kPa
    Tier 2 500000 K and 5e6 kPa
    Tier 3 1e12 K and 1e14 kPa
    All those are calculated based on a filled canister

The canisters won't instantly rupture when reached the temperature, instead they'll start to take damage (10, 5, 3 per tier for the time above the thresholds) untill rupture, so recovery is doable since the damage taken can be heard (is burn damage)
canister-tiers

Why It's Good For The Game

First there is more interaction between departments, then there is a stop to exploitable start round fusion and 50K bombs, since at least you have to wait for mining.
No more you can have the Sun heat inside of a normal canister.
Changelog

🆑
add: Added 3 tiers to the canisters
add: added canister frames (also tiered)
add: canisters rupture if there is too much pressure or heat inside (higher tiers have higher thresholds)
imageadd: added images for frames and overlays
/🆑
2020-04-18 11:20:57 +12:00
Thunder12345
aa9be6154a Removes cryo syringes and cryo shotgun darts (#50471)
Purges cryo syringes and cryo shotgun darts, and all references to them from the code.
Why It's Good For The Game

Cryo syringes are, to put it mildly, a blight on chemistry and its balance. Every single design decision around the difficulty of using pyrotechnic chemicals can be sidestepped by heating the ingredients to max temperature and putting them in a single cryo syringe. This leads to instant kill weapons like RDX+teslium or TATP syringes, which mix their ingredients and instantly explode as soon as the syringe makes contact with something.

Nuke ops have to cough up 8 telecrystals for a rocket launcher that causes a roughly similar explosion, plus 4 more for each subsequent rocket, all with the cost of the launcher being a bulky item. Based on this, it seems like it should be inconceivable for chemists to have access to the same firepower with only a syringe gun that fits in a backpack, their chem dispenser available from roundstart and a single techweb node.

Removing these syringes will prevent chemists from evading the dangers of working with explosive chemicals, and should have little to no impact on other applications since very few other reactions exist which need to take place on being injected into a person.

Cryo shotgun darts present an identical problem, and are only not seen in the wild due to their smaller capacity and position far into the techweb making them comparatively undesirable at a point when rapid syringe guns are likely already researched.
Changelog

🆑 Thunder12345
del: Cryo syringes and cryo shotgun darts have been removed from the game
/🆑
2020-04-18 11:10:01 +12:00
Akrilla
555b156edc Virgin immovable rods are no longer stopped by the chad railing (#50349)
Fixes #50288

Railings are also the only thing that has a snowflake canpass
2020-04-18 11:00:02 +12:00
Arkatos
70de177f31 Saner sorting 2020-04-17 16:45:12 +02:00
Arkatos
2698ee3ef6 Cleanup and sorting 2020-04-17 16:14:28 +02:00
Arkatos
b31d20b0ad Nullrod radials 2020-04-17 16:01:09 +02:00
Akrilla
8b69eba77c Equipment Swapping (#50294)
About The Pull Request

Adds a new hotkey, defaulted to V, which allows for swapping out equipment after a small delay. After the delay, you'll equip the currently held item into it's most preferred slot, and swapping out what was worn/equipped currently. This also allows for swapping out jumpsuits without dropping your pocket contents, belt, etc.
Why It's Good For The Game

QoL change that feels intuitive, and helps equipping feel more fluid.
Changelog

🆑
add: Equipment swapping, defaulted to V. Allows you to equip items while swapping out what you're already wearing after a small delay.
/🆑
2020-04-17 20:33:05 +12:00
spookydonut
8dbf1cf4ec Changes to comply with GitHub TOS
Further changes to comply with the ToS

More ToS cleanup

Bye bye George Melons

Better to be safe than sorry
2020-04-14 21:24:50 +00:00
PKPenguin321
f9d79b43ab optable initialize too 2020-04-06 18:01:50 -07:00
TiviPlus
8bf449ca67 Ports Not-Uno and changes card stacks (#50357)
* I GOT MINE ON DAY ONE

* I have the oldest xbox known to man

* e

* whee

* shits broke

* lol

* Update code/game/objects/items/toys.dm

Co-Authored-By: Bobbahbrown <bobbahbrown@gmail.com>

Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
2020-04-06 19:39:04 -04:00
Jordan Brown
833446fd1f Merge pull request #50420 from ArcaneMusic/slowerprocessing
Properly removes the leftovers of the gene modifier from the techtree.
2020-04-06 19:33:35 -04:00