* species now correctly do not include organs they do not use (#53030)
* species now correctly do not include organs they do not use
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Adds Hypernoblium interactions with Plasmamans to stop self combustion. (#52942)
Plasmamen won't interact with O2 if there is also Hypernoblium in the air and if already on fire, will get extinguished.
Adds Hypernoblium as a reagent when inhaled, having Hypernoblium in your system as a Plasmamen will also stop combustion.
* Adds Hypernoblium interactions with Plasmamans to stop self combustion.
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
* New breathtaking medical stack: the mourning poultice! (#52968)
New type of medical stack, obtainable from botany: the mourning poultice.
These poultices convert 10 brute and 10 burn into oxy per application, and can be used on corpses as well as the living.
It takes 20u bungotoxin, 20u aloe juice and 20u cellulose to create one stack.
I have split all the existing medical stacks into their own dmi, stacks_medical.dmi.
* New breathtaking medical stack: the mourning poultice!
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
* Chemistry machines drop beakers on floor if you are not beside them (#52922)
When ejecting a beaker it would teleport to your hand.
This checks that you are in range, if not the beaker drops at the machine.
Fixes#52882
* Chemistry machines drop beakers on floor if you are not beside them
Co-authored-by: NightRed <nightred@gmail.com>
* tgui: Yarn Berry (#53026)
This pull request upgrades Yarn to version 2 (also known as Yarn Berry).
* Update build validator
* Provide inferno in the root level package
* Remove type module from package.json
* Powershell build script
* tgui: Yarn Berry
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Reworks the Hierophant Club as a general utility item and removes attacks. (#52880)
This PR reworks the Hierophant Club into a utility item. Mining? Gone. Attacks? Gone.
In their place? 5-tile range point-and-click instant teleport similar to the ninja. Max charge is 1. Recharge time is 15 seconds.
With the removal of this bloat, the item is now small enough to fit in the average backpack.
The hiero club establishes itself as the entry-level megafauna drop from the entry-level megafauna.
* Reworks the Hierophant Club as a general utility item and removes attacks.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* General nanite nerfs. (#52937)
Nanites have recieved a general nerf, mostly in the healing department. This is probably not enough nerfs, actually.
* General nanite nerfs.
Co-authored-by: CRITAWAKETS <sebastienracicot@hotmail.com>
* Opacity refactor (#52881)
Moves all opacity var manipulation to a proc which sends a signal.
light_blocker element for movable opaque atoms made, which tracks its movement and updates the affected turfs for proper lighting updates.
has_opaque_atom boolean replaced by the opacity_sources lazylist to keep track of the sources, and a directional_opacity which serves a similar function but also allows for future expansion with on-border opaque objects (not yet implemented).
Some opacity-related sight procs optimized as a result of this.
Some variables moved to the object's definition.
A define or two added into the mix for clarity.
Some code cleaning, like turning booleans into their defines.
One file renamed for clarity.
Changelog
cl
balance: Mechs no longer block sight. It's a non-trivial cost for the lighting system with little to no gain.
/cl
* Opacity refactor
Co-authored-by: Rohesie <rohesie@gmail.com>
* Adds reminders as to which cult structures make which cult items (#52637)
Said reminders are present in both the descriptions of those cult structures and in the stack recipe menu for runed metal.
* Adds reminders as to which cult structures make which cult items
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* cleanup the corpse file, cleanup stationstuck component, adds stationstuck to the reanimated skeleton (and zombie, why not) (#52940)
all living spawners in corpse.dm are now in ghost_role_spawners. I hate having to search two different files to HOPEFULLY find which ghost role I need to edit.
Added a disclaimer about giving guidance or at least stationstuck component to stuff so this doesn't happen again
Cleaned up stationstuck. Man, I know I made this, but damn I did kind of a shit job
* cleanup the corpse file, cleanup stationstuck component, adds stationstuck to the reanimated skeleton (and zombie, why not)
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Cleaning machines and the cleanbot now scrubs instead of washes, wiping forensics (#52983)
* Cleaning machines and the cleanbot now scrubs instead of washes, wiping forensics
Co-authored-by: Donkie <daniel.cf.hultgren@gmail.com>
* Fix the poll menu from breaking the join menu when the DB is misconfigured (#52949)
The returns if the DB is connected but the query errors mean the new player panel is never shown. This is a problem.
* Fix new player panel not showing if the DB is misconfigured
Co-authored-by: Tad Hardesty <tad@platymuus.com>
* Adds an admin force wardec button to the antag panel. (#52967)
If nukies have spawned, the war button exists and war has not been declared, the check antag panel now has a button to force war. This bypasses the crew and time limit. Made by admin request.
* Adds an admin force wardec button to the antag panel.
Co-authored-by: skoglol <33292112+kriskog@users.noreply.github.com>
* New Event: Shuttle Catastrophe (#53003)
The shuttle runs into some kind of horrible event, and is no longer servicable. The station is given a new one!
* New Event: Shuttle Catastrophe
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Fixes holodeck making invisible tables.
* Removes comment.
* Remove extra space.
* Just gets rid of overlays from forbidden vars list.
* Small map fixes for the lounge sim.
Co-authored-by: uomo <51800976+uomo91@users.noreply.github.com>
* Clown's Tears take one bananium sheet instead of one bananium ore (#53004)
* Clown's Tears take one bananium sheet instead of one bananium ore
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Fixes a runtime caused by examining a modular computer with no primary ID slot (#53009)
* Fixes a runtime caused by examining a modular computer with no primary ID slot
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Flyperson organs are all completely unidentifiable (#53008)
All flyperson organs have the same, generic name and description, and their icon is picked from a pool of gross, blackened organ sprites.
There's also a new organ they have that just does completely nothing. It is also disguised and looks the same as all the other organs.
* Flyperson organs are all completely unidentifiable
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Patches a shuttle curse orb exploit, increases the amount of uses from 2 to 3 (#52635)
* curse you, perry the emergency escape shuttle!
* Update code/modules/antagonists/cult/cult_items.dm
Co-authored-by: Rob Bailey <actioninja@gmail.com>
Co-authored-by: Rob Bailey <actioninja@gmail.com>
* Patches a shuttle curse orb exploit, increases the amount of uses from 2 to 3
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
Co-authored-by: Rob Bailey <actioninja@gmail.com>
* Removes organ accidental consumption (#52411)
* i dedicate this one to goof
* snip
* how'd this get past
* Removes organ accidental consumption
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* tgchat: Hotfixes, Message Annotations (#52947)
This PR changes the message pipeline a little bit to support list-based messages, which can be annotated with custom data. Function signature of to_chat was slightly changed as well:
// Plain text message
to_chat(client,
type = MESSAGE_TYPE_INFO,
text = "foo")
// HTML message
to_chat(client,
type = MESSAGE_TYPE_INFO,
html = "<span class='notice'>foo</span>")
Old to_chat format is still supported, but handle_whitespace, trailing_newline and confidential flags have no effect. confidential flag could still be revived though, if there is enough merit in it, for example to filter out confidential messages when saving a chat log.
The reason for using /list and not /datum, is because lists are plain faster, and there are minimal data transformations - these lists are fed directly to json_encode and sent to tgchat.
Plain text messages do not need to be HTML-escaped, which makes them safer and more performant than HTML messages. Plain text messages can be made interactive (or formatted with CSS) by custom-handling them in javscript based on message type and annotations.
It would be impossible to annotate every single message in the game (at the moment of writing, there are 9447 to_chat calls in the code), but it could be done selectively, for only those messages that are hard to classify by span classes (and there are still A LOT of them).
Please annotate more messages. Thank you.
Fixes#52943Fixes#52908Fixes#52816
Changelog
cl
add: tgchat: Unread message count is now smarter and won't increase on other tabs if you have already read the same message in the active tab.
add: tgchat: Admin PMs are now properly annotated and can be filtered into separate tabs.
fix: tgchat: Fix: Highlighted message overlay no longer blocks clicks. Clicking a highlighted (F) link should work as it should.
fix: tgui: Fixed NTOS bluescreen due to calling .includes() on a stylesheet href which could be null on certain browsers.
code: tgchat: Chat schema bumped to version 5. All chat-related settings were reset to avoid breakage.
/cl
* tgchat: Hotfixes, Message Annotations
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Adds an admin-only version of the chef's hat that allows mice inside of the hat to have a 100% chance to relay their movements to the person wearing the hat (#52641)
* muahahahahahahahahaaaaa
* snake case
* shivcalev's suggestions
* Adds an admin-only version of the chef's hat that allows mice inside of the hat to have a 100% chance to relay their movements to the person wearing the hat
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Baystruments - I had two tgstation forks for some reason and had to delete one and that nuked the last PR (#51459)
Instruments and sound channels refactor.
* Baystruments - I had two tgstation forks for some reason and had to delete one and that nuked the last PR
* Fixes dme dupe
* Fixes dme dupe (#52954)
Co-authored-by: silicons <2003111+silicons@users.noreply.github.com>
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Fixes Virology Civilian Bounties. (#52905)
* Fixes Virology Civilain Bounties.
* Don't you hate when you're like 30 commits deep into another branch but there;s no quick alternative to get back onto your old branch because you've been debugging a single issue for the past 3 days and you WANT to work on something else but if you just commit what you got now it'll be a waste and you'll forget what and why you made those choices? Wow same, relatable
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Rohesie <rohesie@gmail.com>
* Fixes Virology Civilian Bounties.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Rohesie <rohesie@gmail.com>
* Removes singularity, tesla, TEG and Mrs. Pacman. Changes supermatter overcharge delam. (#52873)
About The Pull Request
This PR removes the tesla and Mrs. Pacman from the game. The title is actually misleading, the TEG and singularity are still in the game but inaccessible and the singularity no longer has its generator.
Field generators and tesla coils have been kept because shocking your fellow man is the greatest sensation of power in the world.
The overcharging delamination for the supermatter has been replaced by the release of 2500 mols of tritium at 500,000 kelvin. An engineer who's really hateful of the station can use this for fusion, if they desire. Otherwise, its a tritium fire in engineering alongside the explosion. This will probably be changed in the future to be more potent since the explosion will pretty much just space all the tritium away.
Singularities no longer produce radiation. Now, keeping one is less about making power and more about making a statement, especially since you need to delaminate an SM shard for it.
Why It's Good For The Game
Having power optimized for one generator (SM+Turbine) will allow balancing to be feasible, also oranges wanted this. The other generators may later return but with tweaked values and different roles.
Changelog
🆑
del: Nanotrasen has removed their outdated teslas, singularities, TEGs and Mrs. Pacman generators from their servers and warehouse.
/🆑
* Removes singularity, tesla, TEG and Mrs. Pacman. Changes supermatter overcharge delam.
Co-authored-by: CRITAWAKETS <sebastienracicot@hotmail.com>
* fixes arnold pizza not checking for TRAIT_NODISMEMBER (#52771)
Fixed Arnold pizza not checking for TRAIT_NODISMEMBER, resulting in a message being sent to the user even if they were fine after eating it.
* fixes arnold pizza not checking for TRAIT_NODISMEMBER
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* tgchat (#52426)
Replaces goonchat with a tgui based chat panel
Fixes#52898Fixes#52663
It is as fast as goonchat was (if not faster in certain circumstances), and is very extensible. It has all the necessary code for sorting messages into categories, which means that one of the next features will be multiple tab support.
Additional features that you will get with tgchat right now:
Massively faster server-side performance compared to goonchat, especially if batching multiple messages to one client.
Message persistence across rounds and reconnects. (All messages are stored client-side in IndexedDB)
More robust scroll tracking. If you scroll up, it will not change the scroll position on new messages like goonchat did.
Multiple message combining. (Currently set to combine up to 5 messages over last 5 seconds).
If using the highlighting feature, it highlights the whole message as well as the matching word.
"Now playing" widget, with preview of the song title, a knob for adjusting the volume and a stop button.
Architecture is as following:
```
to_chat() -+
|
SSchat
(queue, batching)
|
window.send_message()
|
v
+-------------+
| tgui-panel |
|+-----------+|
|| tgchat ||
|+-----------+|
+-------------+
```
Subsystem is basically goonchat, but without all the garbage that slows the servers down (string concatenation, double urlencoding, sanitizing, etc). Now, instead of all that, it's being slowed down by json_encode in /datum/tgui_window/proc/send_message, which IMO is completely worth it, and allows sending various templates and widgets to tgchat.
/datum/tgui_window abstracts the whole window away from you, establishes a nice message-passing interface between DM and JS, with two message queues on each side, automatically loads js/css assets for you, basically does everything. You as a developer only have to worry about sending/receiving messages and write javascript.
tgui-panel is a slimmed down version of tgui, and functions as a container for various widgets, and tgchat is one of them. It of course can be expanded with more stuff.
It's also a separate entry point and a JS bundle, so it's not bloating the main tgui bundle, and is currently sitting at about 230kB.
* tgchat
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Personalized combat messages part 2 (#52890)
Adds more "personalized" combat messages for all participants in a fight: the attacker, the victim and the spectators
* Personalized combat messages part 2
* Update misc.dm
Co-authored-by: kingofkosmos <riki.sundberg@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* TGUI Photocopier (#52831)
Converts photocopier UI to TGUI.
Initially I tried to make it so you could select to make a color or greyscale copy of paper's but I couldn't really figure it out, so I decided to hide those two buttons if the inserted item isn't a photo.
Something not shown in the pictures below is that if you don't have a toner cartridge or the cartridge doesn't have enough charge, the "Copy" button is greyed out, likewise for the AI's print button.
cl
refactor: Photocopiers now use TGUI
tweak: You can insert any type of toner cartridge into photocopiers, and regardless of the currently inserted toner's charge level.
tweak: Toner cartridges can be ejected from photocopiers at any time
/cl
* TGUI Photocopier
Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>
* fixes goliath tentacle crusher trophy not working (#52893)
it checked for health - max health instead of max health - health, so it would never pass the > 0 check and even if that wasnt a thing it would just heal
* fixes goliath tentacle crusher trophy not working
Co-authored-by: Fikou <piotrbryla@onet.pl>