Commit Graph

499 Commits

Author SHA1 Message Date
nevimer
ba2b366c7d Storyteller port from horizon [DNM] (#456)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request
Ports storyteller from horizon, who deleted their repo. 

### How it works

_Written by Majkl-J_

Basically, the storyteller runs several "Tracks" that slowly fill up
with points. Upon reaching their set limit, an event is chosen and
spawned, and the storyteller takes a somewhat-random amount of points
from that track.


![image](https://github.com/Bubberstation/Bubberstation/assets/49160555/23b6f7ba-4d5a-45dc-9ed6-e88ed02ee019)

In this example, the moderate track will soon spawn an event.

Each track has its own sets of events it can spawn, sorted by intensity
(Roleset is midround and roundstart antags). Every event also has little
tags that the storyteller can be made to prioritize.

As with dynamic, events have a certain weight that determines the chance
they roll. Prioritized events get a multiplier to this weight.


![image](https://github.com/Bubberstation/Bubberstation/assets/49160555/136374ac-feb0-408f-89bf-c862167e2d47)

In this example, we can see some of the tags. Some storytellers can be
made to increase/decrease the weight of these events.

#### Extra stuff it does

Keeps track of med, engineering, and sec players. Whilst this still has
no actual usage, it is good to know it is capable of this.

## Why It's Good For The Game

Storyteller is an alternate event controller, in my opinion, superior to
dynamic.

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑 Nevimer, Majkl-J, BurgerBB, Azarak
add: Ported the storyteller event system from horizon
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

---------

Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
Co-authored-by: iero <>
Co-authored-by: Waterpig <wtryoutube@seznam.cz>
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
Co-authored-by: Return <donwest947@gmail.com>
Co-authored-by: BurgerLUA <8602857+BurgerLUA@users.noreply.github.com>
2024-06-03 17:24:04 +02:00
san7890
5a6ff98e2a Cleans up some admin-related stuff in client Destroy() and adminGreet() (#83427)
## About The Pull Request

It made me really mad to see a huge list in the middle of client/Destroy
for something that doesn't even run for 95% of users so I split it out
into another proc so the fingerprint of the very important `Destroy()`
stuff could be as minimal as possible without a big `pick()` so the
server can send the "I need a man 🥺" message could be punted off to
where no-one would care for it. It was already doing the async TGS
operation so it doesn't matter anyways as far as proc overhead in my
books.

I also fixed up the code for `adminGreet()` as well because that was
being really weird with not having proper booleans and running `pick()`
on things with literally one value (as well as excess
stringification)... it wasn't good so I just cleaned all that up too.
Ideally this all means we take up a little less CPU time but the aim of
this PR is to just clean it all up for modern coding standards.
alphabetized lists and early returns galore.

## Why It's Good For The Game

Code is better to read and less idented, and better yet it's no longer
necessary to read all the softie messages in the middle of `Destroy()`

## Changelog

Irrelevant
2024-05-25 19:00:12 -04:00
SpaceLoveSs13
a9ff046352 Administrator Cherrypick (#27405)
* Admin Verb Datums MkIII | Now with functional command bar (#82511)

* Modular stuffs

* Put some admin jump verbs back into the context menu | sorts area jump list again (#82647)

## About The Pull Request

See title.

## Why It's Good For The Game

Some admins wanted all the jump verbs back, aswell as making them not
AGhost you.
Also make the Jump To Area verb use a sorted list again

* Hey what if admins were allowed to use the player panel (#82682)

Re-adds the player panel verb to the verb panel.

* Controller Overview UI (#82739)

* Fixes a minor spelling mistake on the admin panel/verb list (#82747)

## About The Pull Request

Corrects `inisimin` to `invisimin`. This addresses #82728, but only
fixes one of the two issues mentioned

## Why It's Good For The Game

-1 spelling mistake

## Changelog
🆑
spellcheck: 'inisimin' verb corrected to 'invisimin'
/🆑

* Player Panel-age (#82757)

* Admin Forced Mob Rename and Preference Update (#82715)

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Co-authored-by: chel <64568243+iliyaxox@users.noreply.github.com>
2024-04-23 20:43:45 +02:00
SkyratBot
d21f0a63f5 [MIRROR] Remove /datum/game_mode, we SSdynamic now [again] [MDB IGNORE] (#25371)
* Remove /datum/game_mode, we SSdynamic now [again]

* Modular

* OLD CODE + repath

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 22:57:35 +00:00
SkyratBot
84e42fd0eb [MIRROR] Removes some code soul (IF YOU ARE COPY PASTING THIS...), replaces it with a macro [MDB IGNORE] (#25272)
* Removes some code soul (`IF YOU ARE COPY PASTING THIS...`), replaces it with a macro (#79935)

## About The Pull Request

Replaces all instances of `SSblackbox.record_feedback\("tally",
"admin_verb", 1, (.+)\)` with `BLACKBOX_LOG_ADMIN_VERB($1)`

This makes so the funny comment isn't necessary.

It also reveals one location which someone did not heed the comment, the
`debug_controller` proc copy+pasted the line but did not change the
fourth argument. PEOPLE DON'T READ!

* Removes some code soul (`IF YOU ARE COPY PASTING THIS...`), replaces it with a macro

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-11-27 01:02:37 -05:00
SkyratBot
1c78880cd6 [MIRROR] Admin dynamic rule management [MDB IGNORE] (#24101)
* Admin dynamic rule management (#78720)

## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/7483112/a538643e-8d84-48b1-9dc0-c29a90d3a46c)
This PR adds a very ugly menu which allows admins to force dynamic
rulesets to be enabled or disabled.
Some admins asked if someone could add this and it seems reasonably
useful.

![image](https://github.com/tgstation/tgstation/assets/7483112/2a88cceb-0cdc-4d92-b688-19cd7daf31ae)

The information you have available becomes slightly more detailed once
the game is actually running, because then we know how many players and
how much threat there is.

![image](https://github.com/tgstation/tgstation/assets/7483112/91fdc7e7-dc3e-4b56-a2db-a33cb241e39b)

I don't know why the weight of every midround is 0 when I run locally.
It's fine.
Unfortunately, the interface I have crafted is hideous. This is because
it's not part of tgui and I am not very good at working with byond UIs
without my beautiful typescript. It functions though.
If anyone has any pointers I'll take 'em.

"Force disabling" a ruleset simply ensures it will never run.
"Force enabling" a ruleset disregards minimum population and minimum
threat rules, but doesn't ensure that the ruleset will run. It might
still be skipped due to low weight, insufficient threat to _buy_ it, or
other disqualifying factors.

## Why It's Good For The Game

It was an admin request so presumably they have some plans for it.
It's a less-intrusive way of theming a round than disabling dynamic and
running all the midround rules yourself.
If they want to temporarily set the game to traitorling I guess they can
do that. Or only heretic/cult.

## Changelog

🆑
admin: Admins can turn off dynamic rulesets (or force them on despite
not meeting the qualification criteria) on a per-round basis.
/🆑

* Admin dynamic rule management

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-10-03 22:01:15 -07:00
SkyratBot
ae475697c0 [MIRROR] Corrects record_feedback()'s copy/paste comment [MDB IGNORE] (#20777)
* Corrects record_feedback()'s copy/paste comment (#74962)

## About The Pull Request

Corrects `record_feedback()`'s copy/paste comment.

## Pointless history

Originally being added in e2a8a5e, it kept its name and args for quite a
few years, that was until #32188 which had it renamed to
`record_feedback` and its args pretty much doubled. In between these
times the known copy/paste comment was already around, but that wasn't
updated, until now apparently.

* Corrects record_feedback()'s copy/paste comment

---------

Co-authored-by: Zandario <zandarioh@gmail.com>
2023-04-25 22:38:37 -07:00
SkyratBot
1fe0d145a3 [MIRROR] Converts blindness and nearsightedness to status effects, scratches some VERY dumb blindness handling that resulted in mobs becoming "incurably" blind [MDB IGNORE] (#18760)
* Converts blindness and nearsightedness to status effects, scratches some VERY dumb blindness handling that resulted in mobs becoming "incurably" blind

* Fixes the conflicts and makes shit compile!

* Fixes other things that didn't show up because I hadn't updated

* Fixes the lints.

* Okay NOW it's ready (please don't add anything else that touches blindness I beg you)

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-02-03 16:08:32 -05:00
SkyratBot
375fea374a [MIRROR] Optimizes qdel related things (slight init time savings) [MDB IGNORE] (#17240)
* Optimizes qdel related things (slight init time savings)

* lang holder

* cleanup custom spawners slightly

* ref update

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-10-30 23:15:38 -04:00
SkyratBot
235ca1df15 [MIRROR] List Them Out - A Modern Revision On Extracting Global Lists [MDB IGNORE] (#16531)
* List Them Out - A Modern Revision On Extracting Global Lists (#70080)

Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>

* List Them Out - A Modern Revision On Extracting Global Lists

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
2022-09-29 22:44:53 -07:00
SkyratBot
7cccd7bd0f [MIRROR] Possesing a mob no longer lowercases your ckey in admin messages [MDB IGNORE] (#10357)
* Possesing a mob no longer lowercases your ckey in admin messages #63686

* Possesing a mob no longer lowercases your ckey in admin messages

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
2021-12-31 04:24:12 +00:00
SkyratBot
322cff5a78 [MIRROR] Use ckeys instead of keys in key name helper proc and new_player login. [MDB IGNORE] (#8601)
* Use ckeys instead of keys in key name helper proc and new_player login. (#61857)

* Use ckeys instead of keys in key name helper proc and new_player login.

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2021-10-03 23:44:26 -04:00
SkyratBot
992d611b51 [MIRROR] Fixes check AI laws collapsing, making them unreadable [MDB IGNORE] (#8455)
* Fixes check AI laws collapsing, making them unreadable (#61724)

Previously, this would be putting (x2) next to the first 3 laws, and it would look like the 2nd cyborg had no laws.

* Fixes check AI laws collapsing, making them unreadable

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-09-28 16:04:02 +01:00
SkyratBot
7371a37004 [MIRROR] Splits 'random verbs' into several other verb files (#7127)
* Splits 'random verbs' into several other verb files

* a

* f

Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-07-28 21:51:38 +01:00
SkyratBot
227b722820 [MIRROR] Job refactor: strings to references and typepaths [This could seriously break things :)] (#7006)
* Job refactor: strings to references and typepaths

* 0

* holy fuck

* Update preferences.dm

* Update preferences.dm

* Update preferences.dm

* Update preferences.dm

Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-07-28 21:12:42 +01:00
SkyratBot
df651808d4 [MIRROR] Drastic Lag Mitigation Subsystem: SSlag_switch (#6786)
* Drastic Lag Mitigation Subsystem: SSlag_switch (#59717)

Requested by oranges and inspired by the upcoming event. A new subsyetem, non-processing (for now), aimed at providing some toggle switches that can be flipped as a last ditch effort to save some CPU cycles by sacrificing some non-critical mechanics. Below you can see each individual toggle.

Screenshot of the admin panel:
image
Surely there are more opportunities for toggles I missed, but adding new ones is not very difficult at all.
Why It's Good For The Game

Better performance during extreme pop, I hope.
Changelog

cl
code: Introduces the Lag Switch subsystem for when a smoother experience is worth trading a few bells and whistles for. Performance enhancement measures can be togged by admins with the Show Lag Switches admin verb or enabled automatically at a pop amount set via config.
config: Added a new config var: number/auto_lag_switch_pop

* Drastic Lag Mitigation Subsystem: SSlag_switch

* mirrored the changes to the modular file

Co-authored-by: Wayland-Smithy <64715958+Wayland-Smithy@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2021-07-08 03:24:16 +02:00
SkyratBot
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
SkyratBot
04abb98894 [MIRROR] Remove a bunch of old gamemode code (#6025)
* Remove a bunch of old gamemode code

* Mirror!

* Woopsie, modular game modes!

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
2021-06-01 12:36:59 +12:00
Matthew J
817c5850fa [SEMI-MODULAR] LOOC mutes now exist. (#5794)
* haha no bypassing your OOC mute bucko

* this should do what I intend it to do

* haha, maybe actually let them use it I think

* Update code/modules/admin/admin.dm

Oops

Co-authored-by: Gandalf <jzo123@hotmail.com>

Co-authored-by: Matthew <matthew@tfaluc.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-05-23 04:31:09 +01:00
SkyratBot
ea9aed5554 [MIRROR] Replace alert usage with tgui_alert (#5815)
* Replace alert usage with tgui_alert

* a

* Update observer.dm

Co-authored-by: Celotajs <81999976+celotajstg@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-05-21 00:06:09 +01:00
SkyratBot
c84d208fa6 [MIRROR] Sorts the majority of the rest of the unsorted chat (#5459)
* Sorts the majority of the rest of the unsorted chat

* 0.

* Update database_changelog.txt

Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-05-06 23:48:08 +01:00
SkyratBot
2ab15aecb5 [MIRROR] Remove all gamemodes except Dynamic (#5173)
* Remove all gamemodes except Dynamic

* qaaaaaaaa

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-04-25 21:20:30 +01:00
SkyratBot
16d386f45d [MIRROR] refactors pods, new helper for spawning items from pods through code (#4879)
* refactors pods, new helper for spawning items from pods through code (#58222)

* refactors pods, new helper for spawning items from pods through code

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
2021-04-13 11:43:10 +01:00
SkyratBot
c5cd80af6d [MIRROR] Topic transformation fixes (#4199)
* Topic transform fixes (#57745)

Co-authored-by: Arkatos <arkatos1234@ email.com>

* Topic transformation fixes

Co-authored-by: Arkatos1 <43862960+Arkatos1@users.noreply.github.com>
Co-authored-by: Arkatos <arkatos1234@ email.com>
2021-03-17 02:20:38 +00:00
SkyratBot
cc67a133e5 [MIRROR] [READY] Adds station traits: Small modifiers that can randomly be chosen each round (#3132)
* [READY] Adds station traits: Small modifiers that can randomly be chosen each round

* conflicts

Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
2021-02-08 23:07:24 +00:00
SkyratBot
528c8b4659 [MIRROR] Dynamic 2021 (#3070)
* Dynamic 2021 (#56221)

About The Pull Request

Dynamic 2021, among much other things, splits the threat level into two separate budgets, one for round start and one for midround/latejoin. You can read the design doc, plus methodology and charts here: https://hackmd.io/@ tgstation/S1C4dYJkO.

To server owners: this is incompatible with current dynamic.json configurations. This is not just because some fields have different values now, but because the older values are not balanced towards this system.

Inidividual list of changes (as I remember them):

    Threat level is now split into two separate budgets, one for round start and one for midround/latejoin.
    In TESTING, you can now run dynamic simulations to see the roundstart picks.
    antag_cap is now based on an equation rather than a fixed list of antags per indice--the old system is not scalable. You can now pass it either a number for a fixed constant, or a list with "denominator" and an optional "offset" to fit the equation ceil(x / denominator) + offset, with x being population.
    Midround/latejoin timers are now vars on /datum/game_mode/dynamic itself, and thus can be configured by head admins per server.
    Removes some older, as far as I can tell completely unused admin tools relating to dynamic.
    autotraitor_cooldown is now properly respected from config, and is based on an exact time rather than on ticks (450 used to be 15 minutes, now it's just 15 MINUTES).
    The rulesets dynamic chooses are now in a dynamic.json file in round logs. Relies on tgstation/tgstation13.org#64 to be public.
    Adds more logging to the autotraitor ruleset for admins.
    Midround/latejoin chance modifiers are now configurable.

Labelled "Do Not Merge", as the design doc outlines the specific playtesting schedule I would like to perform.

    Note to self: Remove the custom MOTD before merge.

Why It's Good For The Game

(Copied from design doc)

Dynamic currently dumps as much threat as it can into round start threats. This means that rounds at ~50 threat can have an absurd amount of antagonists round start, while leaving very little threat for midround/latejoin antagonists. What inevitably happens is just one of those picked decides to murderbone, leading to the inevitable 20 minute shuttle call. Furthermore, once those antagonists are dead, Dynamic doesn’t have any threat left to spend on new antagonists that keep the round flowing, promoting the mentality of “antags dead, I’m bored, let’s leave”.

The proposed solution of Dynamic 2021 is to split threat level into two separate budgets, one for round start and one for midround/latejoin. This split, like threat level, will also be done on a lorentz curve–meaning that while most rounds will have them evenly split, there is still the possibility of chaotic high antagonist round start rounds, or the possibility of a midround onslaught.

* Dynamic 2021

Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
2021-02-04 16:08:32 +00:00
SkyratBot
fcf376c5e6 [MIRROR] Allow dynamic to be configured when used as the forced secret mode (#2721)
* Allow dynamic to be configured when used as the forced secret mode (#56122)

Allow dynamic to be configured (roundstart rulesets) when used as the forced secret mode

* Allow dynamic to be configured when used as the forced secret mode

Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
2021-01-16 00:50:01 +01:00
SkyratBot
d7f054b035 [MIRROR] Refactors monkeys into a species (#2379)
* Refactors monkeys into a species

* aaa

Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2020-12-31 21:08:07 +01:00
SkyratBot
6a8c626e7f [MIRROR] Moves dynamic ruleset execute buttons + fixes forced rulesets ignoring configs. (#1403)
* Moves dynamic ruleset execute buttons + fixes forced rulesets ignoring configs. (#54477)

Moves buttons for forcing dynamic rulesets from game panel to game mode panel,
and as a side effect fixes forced midround/latejoin rulesets ignoring configurations.
Also fixes forced roundstart rules ignoring configs.

* Moves dynamic ruleset execute buttons + fixes forced rulesets ignoring configs.

Co-authored-by: TheChosenEvilOne <34602646+TheChosenEvilOne@users.noreply.github.com>
2020-10-20 19:44:38 +01:00
SkyratBot
df3c9f87cb [MIRROR] Restyles Stat Panel, Adds Subpanel Sub-Categories (#1044)
* Restyles Stat Panel, Adds Subpanel Sub-Categories (#53947)

I re-styled the CSS for the stat panel in hopes to make it look nice, and I also added the ability to use sub-categories (currently a single level) of verbs using a . (period), an example being Admin.Fun instead of the previous Admin - Fun. This now results in a sub-category being automagically generated in the stat panel.

* Restyles Stat Panel, Adds Subpanel Sub-Categories

Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
2020-09-29 12:31:56 +02:00
SkyratBot
96d5d8a319 [MIRROR] Fix verbs tab not getting updated in certain instances (#937)
* Fix verbs tab not getting updated in certain instances (#53876)

There are a number of methods of assuming direct control of mobs or giving other players direct control. I have made sure these now appropriately update verbs.

Shamelessly ripped the functionality from /mob/dead/observer/verb/reenter_corpse() - It seemed to do what I wanted to accomplish in the same context.

I couldn't find any other method to refresh the verbs tab.

* Fix verbs tab not getting updated in certain instances

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2020-09-23 13:55:50 +01:00
SkyratBot
7979f4d1b0 [MIRROR] Fully removes devil and affiliated shitcode (#922)
* Fully removes devil and affiliated shitcode (#53612)

Its all over the place, messy, and overall a bad enough gamemode to be removed from rotation.
A rework would have to tear out everything as is so there is no reason to allow the shitcode to live beyond tripping up everything.

* Fully removes devil and affiliated shitcode

* weh

Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2020-09-23 10:00:29 +01:00
SkyratBot
971b0ba1de [MIRROR] tgchat: Hotfixes, Message Annotations (#364)
* 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 #52943
    Fixes #52908
    Fixes #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>
2020-08-17 14:48:28 +02:00
SkyratBot
d9b246cca9 [MIRROR] tgchat (#342)
* 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.

* tgchat

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-08-14 23:30:16 +02:00
SkyratBot
46953e4d46 [MIRROR] CentCom Galactic Ban DB: Bigger and Better Edition (#247)
* CentCom Galactic Ban DB: Bigger and Better Edition (#52588)

Admins will now be able to look up a player's bans from several other servers via the player panel.

My hope is that porting this to as many servers as possible will encourage more servers to make their bans publicly viewable so they can be included in this system. Direct access to a server's database is not required (or even supported).

Supported servers:

    BeeStation
    /vg/station
    OracleStation
    FTL13
    Fulpstation
    TGMC

Planned support (WIP):

    World Server
    Yogstation
    Halo: SSE
    Any other server willing to make their bans publicly visible.

API: https://centcom.melonmesa.com
Source: https://github.com/bobbahbrown/CentCom
Changelog

cl ike709 and bobbahbrown
add: Admins can now see your bans on (some) other servers.
/cl

* CentCom Galactic Ban DB: Bigger and Better Edition

Co-authored-by: ike709 <ike709@users.noreply.github.com>
2020-08-10 07:49:28 +01:00
SkyratBot
ee324ab3c2 [MIRROR] Cleanup up all instances of using var/ definitions in proc parameters. (#240)
* 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.

* Cleanup up all instances of using var/ definitions in proc parameters.

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2020-08-07 18:26:21 +01:00
SkyratBot
b7e1bd1973 [MIRROR] Revert "CentCom Galactic Ban DB" (#135)
* Merge pull request #52565 from tgstation/revert-52519-centcom

Revert "CentCom Galactic Ban DB"

* Revert "CentCom Galactic Ban DB"

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2020-07-31 00:29:30 +02:00
SkyratBot
d316e90a3c [MIRROR] CentCom Galactic Ban DB (#109)
* CentCom Galactic Ban DB (#52519)

* CentCom Galactic Ban DB

* Sanitize and config

* Apparently TG has a http_request datum

* Tweaks

* An excellent suggestion

* Turns out BYOND is better at JSON parsing than I thought it was

* Fun fact: 4 out of 5 UIs don't bother to do this

* CentCom Galactic Ban DB

Co-authored-by: ike709 <ike709@users.noreply.github.com>
2020-07-29 01:01:14 +01:00
jdawg1290
62676e72a8 Force LF line endings with gitattributes and convert repo (#52266)
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-07-16 03:02:40 +03:00
MrDoomBringer
719d3a1f45 first pass
WIP overlays


icon upd8


more


need to figure out whats going on with extractionpods


compile


the icon update


more!!


why are skillcapes broken


boat lmao


seethrough fix


Second drive-by


Code cleanup and improvements

Specifically surrounding contractor pods and reverse mode working properly
accidently left in an extra dmi whups


do the impossible see the invisible


new effect booster pack


MFW MRW Linter fail
2020-07-06 23:44:02 -04:00
nemvar
b87f65d95e Converts ALL typepaths to lowercase (#51642)
* Case of lower

* More changes

* Ruins the nice 420 diff, brainfart when doing the second batch of conversions

* More changes

* Next batch. I think

* Converts even more paths

* Restarts bots

* Capital Free Zone

* Come on travis, do something

* Renames areas

* Bots, please stop dying

* Updates CONTRIBUTING.md and updates a few paths I missed.

* APC recgarftzfvas
/obj/item/computer_hardware/recharger/apc to /obj/item/computer_hardware/recharger/apc_recharger
2020-06-17 20:47:57 -03:00
TheChosenEvilOne
1318b269a2 Some cleanup (#51315)
Signed-off-by: TheChosenEvilOne <tceo-email@protonmail.com>
2020-06-07 14:33:57 +02:00
MrDoomBringer
ceea9b6793 [Ready] Skillcapes II: Revenge of the broken github: A Skill Menu Special: New Sprites Edition (#50656)
* 10K hours

60,000 minutes
hahah


sure if you want a trailing newline i can do that


default cloak gets default skill


lazy list and no equip good


necessary ig


Update code/datums/skills/_skill.dm

Co-Authored-By: nemvar <47324920+nemvar@users.noreply.github.com>
Update code/datums/skills/gaming.dm

Co-Authored-By: Angust <46400996+Angustmeta@users.noreply.github.com>
WIP PDA skill monitor program


hacky fixes till i refactor skills


refactors skills a bit, adds admin skill edit menu


If you have a failing, it's that you're always demanding perfection

...IF you have a failing
i think that's it for the admin skill manger


appeases lord flord


bruh


level names


FUCK!!


unga


Update code/modules/vehicles/vehicle_key.dm

Co-authored-by: Rohesie <rohesie@gmail.com>
Update code/modules/admin/topic.dm

Co-authored-by: Rohesie <rohesie@gmail.com>
Update code/modules/admin/skill_panel.dm

Co-authored-by: Rohesie <rohesie@gmail.com>
Update code/modules/admin/skill_panel.dm

Co-authored-by: Rohesie <rohesie@gmail.com>
Apply suggestions from code review

frick

Co-authored-by: Rohesie <rohesie@gmail.com>
EOL and dumb spaces


more rohsie bait


tgui: Query Windows Registry for BYOND cache directory

hell yeah brother


update tgui and dmi


CLRF and bat file


typo ig

* tgui and new janicloak that i accdiently changed on another branch

* jani

* gamer cloak

* trim trailing whitespace

* tgui

* bruh

* variable renaming
2020-05-25 21:46:22 -03:00
Ryll Ryll
753af7bda5 Adds friendly commendations (#51217)
* with message

* remove message, neaten up
2020-05-25 01:49:12 +08:00
Rob Bailey
c20a04543b Port of Replays from Yogstation (#48579)
* demos (ported from yogstation)

rustg update + write with no format

use external hook for logging

use proper log vars

fix + clarifying comment

don't start the log

release build of rust-g

fix something caught by the lint

Update code/__DEFINES/subsystems.dm

Co-Authored-By: Jordan Brown <Cyberboss@users.noreply.github.com>

Update code/controllers/subsystem/demo.dm

Co-Authored-By: JJRcop <jrubcop@gmail.com>

Update code/controllers/subsystem/demo.dm

Co-Authored-By: JJRcop <jrubcop@gmail.com>

moves hooks out of a dedicated file

len = 0 to Cut(), remove semicolons

untyped loop

* updated rust_g

* 513 updates
2020-04-06 13:15:48 -04:00
ShizCalev
7209ac3c93 Removes unnessacary math defines 2020-02-17 23:09:09 -05:00
Jordan Brown
910489bbb2 Revert some admin button moves (#49216)
- Moves "Start Now" and "Delay Pre-Game" back to Server tab
2020-02-06 21:27:28 -05:00
peoplearestrange
ea1857ec22 Changes to Category
changes Administration to Admin
2020-02-04 20:16:10 +00:00
peoplearestrange
1b5e7cbdb9 Changes category
Set admin notice = Server
2020-02-04 15:32:10 +00:00
peoplearestrange
41aeb4bdbf Changes Category
Show player panel = Admin - Game
Access Newscaster Network = Admin - Events
Announce = Administration
Set Admin Notice = Administration
Start now = Admin - Events
Delay pre-game = Admin - Events
Unprison = Administration
Show Traitor Panel = Admin - Game
2020-02-04 04:04:10 +00:00