Commit Graph

12270 Commits

Author SHA1 Message Date
Jared-Fogle 45c14f6330 Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking (#52761)
Adds SIGNAL_HANDLER, a macro that sets SHOULD_NOT_SLEEP(TRUE). This should ideally be required on all new signal callbacks.

Adds BLOCKING_SIGNAL_HANDLER, a macro that does nothing except symbolize "this is an older signal that didn't necessitate a code rewrite". It should not be allowed for new work.

This comes from discussion around #52735, which yields by calling input, and (though it sets the return type beforehand) will not properly return the flag to prevent attack from slapping.

To fix 60% of the yielding cases, WrapAdminProcCall no longer waits for another admin's proc call to finish. I'm not an admin, so I don't know how many behinds this has saved, but if this is problematic for admins I can just make it so that it lets you do it anyway. I'm not sure what the point of this babysitting was anyway.

Requested by @optimumtact.
Changelog

cl
admin: Calling a proc while another admin is calling one will no longer wait for the first to finish. You will simply just have to call it again.
/cl
2020-08-20 09:11:28 +12:00
skoglol d4d754a107 Adds nekomimetic, the felinid language (#52958)
Currently felinids are the only roundstart species without a language, this sees to that.
Changelog

cl Skoglol
add: Adds nekomimetic.
/cl
2020-08-20 09:09:53 +12:00
tralezab 6a25b30b12 Removes "availible" mispellings in codebase (#53046)
* AVAILABLE

* Rebuild tgui

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-08-19 23:57:37 +03:00
uomo afb9a1d9aa Removes double space from health doll examining. (#53025) 2020-08-19 16:05:12 -03:00
GuillaumePrata 83a921f67b 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.
2020-08-19 15:40:23 -03:00
Timberpoes 288bc5234b 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.
2020-08-18 22:42:35 -03:00
TiviPlus 0ab4f38605 Diagonal macro thingu (#52927) 2020-08-18 22:35:33 -03:00
Rohesie 25f670f8de 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
2020-08-19 13:24:20 +12:00
tralezab 728d1ca524 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
2020-08-18 22:20:25 -03:00
Donkie 9ed2bc5dae Cleaning machines and the cleanbot now scrubs instead of washes, wiping forensics (#52983) 2020-08-18 22:17:51 -03:00
Tad Hardesty 291d7ac376 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.
2020-08-18 22:08:27 -03:00
WarlockD 6d578a39cc Fixes eye damage overlay (#52980) 2020-08-18 21:55:12 -03:00
WarlockD 5c6da83db9 Update stat panel to give round time days. (#52986) 2020-08-18 21:52:35 -03:00
tralezab 6c79ec5823 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.
2020-08-18 20:50:35 -03:00
Qustinnus f54de4a2b8 refactors resist act to be on atom level (#53016) 2020-08-18 20:30:44 -03:00
tralezab f1541d82d4 Removes Corporate Species (#53018)
* sike! i removed corporate!

* b'gone sprites
2020-08-18 12:38:03 -04:00
Jared-Fogle fa11c9c7be Messages sent by yourself no longer highlight (#52991) 2020-08-18 05:54:29 +03:00
silicons 16eb86ddcf 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.
2020-08-15 10:39:46 +02:00
Aleksej Komarov 0e1b20e6db tgchat (#52426)
Replaces goonchat with a tgui based chat panel

    Fixes #52898
    Fixes #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.
2020-08-14 13:21:40 +12:00
Arkatos1 359265caba pAIs now use a radial menu to choose their holochassis skins (#52879)
This PR makes pAIs use a radial menu for choosing their holochassis skins, instead of navigating in the input menu with no preview of how given skin even looks like.
2020-08-13 11:53:18 -03:00
kingofkosmos 3263decaad Personalized combat messages part 2 (#52890)
Adds more "personalized" combat messages for all participants in a fight: the attacker, the victim and the spectators
2020-08-13 11:34:57 -03:00
LemonInTheDark f66dc66ae5 Fixes tesla coil hell contraptions (#52889)
Removes the ability for tesla coils to generate power with more then 85% efficiency.
Cleans up the remainder of my zap_act refactor, making the proc better fit its usecase and removing some unneeded code.
Adds a check in the tesla coil zap() proc that makes sure we're not trying to use power that's not there.
Removes some seemingly complex math from said proc, replaces it with a static 20% draw * the efficiency.
2020-08-13 11:32:27 -03:00
Rohesie 7586d20c23 Fixes staminacrit not paralyzing (#52906)
Additionally removes the now-superfluous stam_paralyzed variable. We can already track this with the incapacitated effect from the stamina source.
2020-08-13 14:51:56 +12:00
Rohesie c5feef02df Fixes a slime emote runtime (#52896)
It wasn't checking the parent call return value.
This is the runtime:
2020-08-13 14:05:13 +12:00
Rohesie 14f5c6f918 Floored trait (#52884)
Refactors mobility, so we respond to more things as events.
One has_legs and has_arms are turned into events we'll be close to be able to eschew update_mobility()
2020-08-13 14:04:33 +12:00
Rohesie b0726e032b Icon smooth refactor (#52864)
bitflag list construct added: an associative list of bitflags for cheap and quick element comparison between two lists using the same system.

    canSmoothWith list turned into a bitflag list.

    smoothing_groups list added to substitute the type path list.

    smoothing procs turned into atom procs, refactored and optimized a bit.

    smooth directions redefined in order to fit in 8 bits for a future smoothing system

    some variable names changed, foreseeing a second smoothing system

    SMOOTH_OBJ flag added, for things that need to scan turfs for smoothing. The old locate() optimization has the risk of returning false negatives by finding a child and returning null while there might be one of the wanted type as well, as it doesn't match the type exactly.

    SMOOTH_TRUE and SMOOTH_MORE condensed into SMOOTH_CORNERS. The old behavior can be replicated using smoothing groups without loss.

    Does very minor code cleanup.

    Processing-wise didn't find a noticeable difference. The system loses on init a bit by setting the bitflag_lists, and by scanning whole turf contents for object smoothing (increasing accuracy), and gains by making less checks per target to smooth, through the same bitflag_lists.

    Memory-wise there should be a small improvement, given that on the old system we had 63512 canSmoothWith lists (a few typelists, most unique), and on this new system canSmoothWith + smoothing_groups are both bitflag_lists from the same pool, totaling 46 in number.

Could be tested a bit to see if I missed any icons not properly smoothing.
2020-08-13 14:03:49 +12:00
Kyle Spier-Swenson 8df93ba39e [Ready] CDN browser assets! (#52681)
Rewrites the asset_cache system to handle sending assets to a CDN via a webroot.

see https://github.com/MrStonedOne/tgstation/blob/asset-cdn/code/modules/asset_cache/readme.md

Fixed a lot of bugs with assets, removed some dead code.

Changes:
    Moved asset cache code to transport datums, the currently loaded one is located at SSassets.transport, asset cache calls made before the config is loaded use the simple browse_rsc transport.
    Added subsystem call for when the config loads or reloads.
    Added a webroot CDN asset transport. assets are saved to a file in a format based on the file's hash (currently md5).
    Assets that don't use get_asset_url or get_url_mappings (such as browser assets referred to by static html files like changelog.html or static css files) can be saved to browse_rsc even when in cdn asset mode by setting legacy to TRUE on the datum returned by register_assets
    Added a system for saving assets on a cdn in a hash based namespace (folder), assets within the same namespace will always be able to refer to each other by relative names. (used to allow cdn'ing font awesome without having to make something that regenerates it's css files.).
    The simple/namespaced asset cache datum helper will handle generating a namespace composed of the combined md5 of everything in the same datum, as well as registering them properly.
    Moved external resource from a snowflake loaded file to a config entry, added it to resources.txt
    To ensure the system breaks in local testing in any situation that wouldn't work in cdn mode, the simple transport will mutate the filenames of non-legacy and non-namespaced assets and return this with get_asset_url.
    Simple transport's passive send of all roundstart assets to all clients is now a config that defaults to off. this is to break race conditions during local testings from devs accidentally relying on this instead of using send() properly.

cl
refactor: Interface assets (js/css/images) can now be managed using an external webserver instead of byond's one at a time file transfer queue.
admin: Adds admin verb toggle-cdn that allows admins to disable the external webserver asset transport and revert to the old system. Useful if the webserver backing this goes down (thanks cloudflare).
config: New config file, resources.txt, (must be loaded by an $include statement from the main config)
server: The external_rsc_urls.txt config has been moved to the main config system.
/cl
Porting notes:

Interface webpages must refer to their assets (css/js/image/etc) by a generated url, or the asset must register itself as a legacy asset. The system is designed to break in localtest (on simple/legacy mode) in most situations that would break in cdn mode.

Requires latest tgui.

The webserver must set the proper CORS headers for font files or font awesome (and other fonts) won't load.

/tg/'s webserver config: https://gist.github.com/MrStonedOne/523388b2f161af832292d98a8aad0eae
2020-08-12 13:51:43 +12:00
Timberpoes d2fa99ff76 Telekinesis works on interacting with items. (#52834)
Rolls TK checks into baseline mob can_interact_with code.

TK check code unashamedly stolen from /mob/living/carbon/human/shared_living_ui_distance

This change touches every single can_interact interaction involving a mob and an atom, except /obj/machine which overrides can_interact without calling the parent and thus is unaffected by this change.

It enables any functionality that would require a can_interact() check to return TRUE. It effectively works alongside the adjacency check and comes into play if the adjacency check would fail.
2020-08-11 15:51:33 -03:00
Jared-Fogle 3cf450d564 Give mood buff for defibbing someone (#52798) 2020-08-11 11:55:46 -03:00
Timberpoes 215f036bb9 TRAIT_NODEATH blocks succumbing (#52836) 2020-08-11 11:13:17 -03:00
zxaber 94c4367ede Support for expansion-class modPC hardware (#52644)
* Support for expansion-class modPC hardware

* end of the line

* As requested

Did anyone know that the tablet vendor was attaching the wrong ModPC printer? I bet no one knew that.

* update
2020-08-11 13:40:05 +03:00
Rohesie 8f917ff1d9 immobilized (#52578)
Adds an immobilized trait.
    Adds procs for several variable changes so we can respond to their events.
    Adds some signals for said variables changing.

Need to turn the variation in number of usable legs and arms (get_num_legs() and get_num_arms()) into events we can respond to, but they are pretty annoying to do so. Probably for a different PR.
2020-08-11 14:44:01 +12:00
uomo c3bae86da9 Fixing icon state. (#52829) 2020-08-10 21:32:03 -03:00
uomo 52a090af65 Consistency for station pets. (#52717)
* Station pets!

* Makes Lia and Sgt Araneus actual subtypes.

* Fixes some vars.

* Turns on AI for Cayenne and Lia, makes Lia neutral faction.

* Gives Lamarr a description.

* Pettable status and emotes for HoS and syndicate pet..

* Tom the mouse consistency.

* Comment correction.
2020-08-10 17:46:03 -03:00
Timberpoes 26afd77419 Species code can go fellate itself (#52774)
Fixes #51787
Fixes #44981

Species code is the fucking worst.

Lizard tails and spikes are broken outside of admin intervention and neither work nor apply when spawning into the game from the main menu.

Functionality was broken in #49062
Functionality was further broken in #49771

This code makes my soul hurt. I don't have the time or patience to refactor it. This should work around all the functionality broken in the above two PRs until such a time as someone fixes this mess.

If anyone does that, may God have mercy on their soul, for this code has none.
2020-08-10 17:09:11 -03:00
ShizCalev a611971abe Fixes floorbots potentially ending up with negative tiles in their inventory. (#52772) 2020-08-10 17:03:43 -03:00
Jared-Fogle 82125e06eb CPR will now automatically repeat, but you can no longer do it multiple times at once (#52521)
* CPR will now automatically repeat

* Fix being able to do multiple CPRs at once, styling

* Make changes as per review

* Refactor into loop

* Change while TRUE to do while

* Change conditional

* Explicitly set 3 SECONDS
2020-08-10 16:34:01 -03:00
TiviPlus b4fe4f717b Refactors area stuff (#52751)
-bitfielded a bunch of bools on /area, I left some untouched cus they get called a lot
-Unused vars
-Fixed a var pretending to be a fake bool
-Probably more
2020-08-10 16:31:59 -03:00
Ryll Ryll b7ae6fc64d Refactors Temporal Scarring, changes how it works, removes longtimer quirk (#52688)
* changes temporal scarring

* hhh why is there no ckey

* note

* oops

* fixed
2020-08-10 16:29:27 -03:00
tralezab 63382211d8 Mafia Lobby Reworks, Panel Redesign, Abstaining, and More
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-08-08 23:36:37 +03:00
Timberpoes c3f23edfc0 Re-enables cyborg cameras through camera consoles and AI eye vision. (#52767)
* Better camera logic

* AI eye cameras can see through borgo cams

* Switch that to being able to see through any silicon's camera

* Switch that to being able to see through any silicon's camera

* Disable borgo camera at high damage

* Rohesie-proof some code
2020-08-08 16:52:00 +02:00
uomo 358e549229 Petting more animals now causes floating hearts and a moodlet, borgs can now pet animals. (#52594)
* Petting.

* Oops.

* Update code/modules/mob/living/simple_animal/friendly/penguin.dm

Co-authored-by: Fikou <piotrbryla@onet.pl>

* Working on underlying redo.

* More.

* Fixing to work with new emote system.

* Move proc and defines to living instead of mob.

* ...Moves it to simple_animal instead.

* Revert cat crate fix (other PR handling), fixes emote thing.

* Appveyor did not care for that.

* Comment typo.

* Very descriptive var name.

* Borgs can now commit pet.

* sweeps up missing manual_emotes, adds a hop to link for ghosts, and moves the name preface to ghost only

* More descriptive vars and proc name.

* Better descriptive vars.

* Making the borg code slightly nicer.

Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2020-08-07 20:46:49 -04:00
Timberpoes 19c3bbde31 Cleanup up all instances of using var/ definitions in proc parameters. (#52728)
* var/list cleanup

* The rest of the owl

* plushvar bad

* Can't follow my own advice.
2020-08-07 12:23:42 -03:00
TiviPlus 8d72c64910 Lazylists some /mob and /living stuff (#52750)
* lazy

* Apply suggestions from code review

Co-authored-by: Rohesie <rohesie@gmail.com>

Co-authored-by: TiviPlus <TiviPlus>
Co-authored-by: Rohesie <rohesie@gmail.com>
2020-08-07 12:09:16 -03:00
skoglol 4b7eeef8e3 Merge pull request #52725 from ShizCalev/pai-fixes
Pai cable fix, adds icon for when new personalities show up
2020-08-07 08:39:10 +02:00
skoglol 9ce3040f81 Merge pull request #52727 from MrMelbert/touchyfeely
Allows blind people to touch things to examine them
2020-08-07 08:35:23 +02:00
tralezab c26a134945 Ghost Pool Protection Admin Button (#52683)
* Ghost Pool Protection

* okay

* Update tgui.bundle.js

* just a bit of feedback

* temporarily

Co-authored-by: Emmanuel S. <emmanuelssr@gmail.com>

* Update GhostPoolProtection.js

* Update tgui.bundle.js

* my devserver broke

* okay done for real

* conflict resolution bundle

* Rohesies dope review

Co-authored-by: Rohesie <rohesie@gmail.com>

Co-authored-by: Emmanuel S. <emmanuelssr@gmail.com>
Co-authored-by: Rohesie <rohesie@gmail.com>
2020-08-06 18:00:55 -03:00
ShizCalev b4121e4746 Sharpness fixes (#52720)
* Sharpness fixes

* fix
2020-08-06 15:05:27 -03:00
Fikou 310024066d repaths the demons (#52716)
* repaths the demons

* tweaks

* sprite tweak to imp

* adresses review

* Update code/modules/antagonists/slaughter/slaughter.dm

Co-authored-by: Rohesie <rohesie@gmail.com>

* Update _maps/RandomZLevels/Academy.dmm

Co-authored-by: Rohesie <rohesie@gmail.com>

Co-authored-by: Rohesie <rohesie@gmail.com>
2020-08-06 12:49:25 -03:00
MrMelbert f14abf747b no more help 2020-08-05 21:06:12 -05:00