* overhauls the crap out of a lot of antag guns and their ammo
* Should probably shoot an additional bullet per squeeze at this point
* nyoops
* So travis will stop yelling at me for new lines
* Should be all I need to fix for maps
* Touches up the stechkin sprite again
* Increased the fire rate and spread of the APS and the spread of the m90, added additional magazine types for the APS and added incendiary mags into the Spetznaz bundle to retain the fire theme, added phasic m90 ammo that penetrates through all surfaces but does significantly less damage available to ops for 8 tc, tided up the code for the aps a little more and also it's sprite.
* fixes some stuff
* So travis will cease screaming
* Changed how the phasic bullets work to being closer to xray beams, added additional flags to allow the bullets to pass through structures and machinery
* Update code/game/machinery/_machinery.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/game/machinery/_machinery.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/game/machinery/doors/door.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/modules/projectiles/boxes_magazines/external/pistol.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/game/objects/structures.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* updated the gun sprites a bit more
* Hopefully this fixes the conflicts?
* Update code/game/machinery/doors/door.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* More updating, fatter stechkin sprite
Co-authored-by: Rohesie <rohesie@gmail.com>
* Sorts quirks into medical record categories
Removes Allergens from med record, still need to squash a bug.
* Makes Rohesie's requested changes
* typo
* Replaces magic numbers with defines
About The Pull Request
Extools maptick stuff is in the game. Stolen from BeeStation/BeeStation-Hornet#1119, improves performance. Requires ex-tools on the server, though.
Explosions have been refactored to do the actual exploding in a subsystem.
Credit to goon.
Here's some videos!
Why It's Good For The Game
Basically instant max-caps now.
We can now give more of a tick over to the sending of map updates
Changelog
cl Goonstation Coders, Beestation, Extools devs
refactor: Explosions have been heavily optimized.
/cl
* Oh God I hope this works...
* It didn't work.
* Making things better.
* Making things even better.
* That made things worse.
* Sorting works! \o/
* Tidying some thing ups.
* Adding a custom plaque to the game.
* Some plaque tweaks.
* Makes plaques more durable than signs.
* Adds the stack crafting.
* Plaques take a little time to engrave, signs can't be changed instantly anymore.
* Comments, and renamed the global list to avoid confusion.
* Appends "sign" to every name, makes department signs not all caps, fixes some names and descriptions.
* Touching up plaque customization and display, removing one last all caps.
* Plaques can now be engraved in hand too.
* Newline.
* Update code/game/objects/structures/customplaque.dm
Co-Authored-By: Rohesie <rohesie@gmail.com>
* Update code/game/objects/structures/customplaque.dm
Co-Authored-By: Rohesie <rohesie@gmail.com>
* Mirroring some fixes from customplaque.dm
* A bunch of stuff.
* Unwrenched signs now lay horizontal.
* A lot more stuff, turned a negative variable into a positive.
* Fix chat inconsistency, remove deprecated and unused variable.
* Apparently buildable_sign is used elsewhere, whoops.
* Adding documentation to this, fixing a bool being 0 in another file.
* Don't know why this was here, sign dir is 100% irrelevant.
* Fixes some sound malarkey.
* Changes delays to be readable, removes unneeded return.
* Fixes these two early returns, it needed return TRUE at the end to work.
* Trying to fix a revert I messed up...
* Moving plaques to a directory, moving old sign plaque types into it. Map changes.
* Rename since I relocated this object entirely.
* Signs (and plaques) now properly place, and aren't visible through walls.
* Comment to help people in the future.
* Signs and plaques can be placed diagonally now.
* Removes duplicated code line.
* Blank signs now commonly spawn in maint, blank plaques uncommonly.
* Repairing signs & plaques with a welder is now good to go.
* Moves the GLOB, makes it start as an empty list.
* Update code/game/objects/structures/plaques/_plaques.dm
Co-Authored-By: Rohesie <rohesie@gmail.com>
* Gets rid of some oldcode.
* Apply suggestions from code review
Co-Authored-By: tralezab <40974010+tralezab@users.noreply.github.com>
* Simplifying dir switch to two if elses.
* Plaques take one sheet of gold to graft instead of five.
* Just making this wording in crafting a little clearer.
* They can be removed with wrenches, so I don't think this is proper.
* Makes variables descriptive.
* More descriptive variables, a little dmdoc, move things around to be next to like things.
* Remove a redundant definition.
* Apply suggestions from code review
Co-Authored-By: Rohesie <rohesie@gmail.com>
* Fixes mapping path, rename sign_backing to just sign.
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
About The Pull Request
Cryptographic sequencers can no longer open airlocks
The Airlock Authentication Override Card can open airlocks (3 charges, each charge refills over the course of a couple minutes)
Why It's Good For The Game
@optimumtact said it was good for the game
The data says the emag is the most bought traitor item. This is because the emag has too much bloat. To help mitigate this this we've taken away airlock hacking from the emag, however instead of removing the feature outright (as in #50632) we move the feature to a new item, for those who really still want to be able to hack doors
Changelog
cl MrDoomBringer with some code stolen from itseasytosee
add: added the Airlock Authentication Override Card. Use it to open airlocks!
add: added Syndicate Jaws of Life to the nuke op uplink. Use it in it's crowbar configuration to open as many doors as you'd like!
del: The cryptographic sequencer can no longer open airlocks :(
/cl
Closes#50632
* 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>
* EVERYTHING. Check the changelog.
* Minor species change, spade fits on plant belt.
* Local man blind, news at 11.
* Longrange pollenation, and fixes pill composting.
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!
* 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>