Commit Graph

3442 Commits

Author SHA1 Message Date
tralezab 1064b84a9a Fully Immersing someone now reminds them to roleplay correctly (#61657)
Please roleplay correctly!
2021-09-24 17:58:46 -04:00
tralezab 6c01cc2c01 every case of initialize that should have mapload, does (#61623)
## About The Pull Request

stop forgetting to include mapload, if you don't include it then every single subtype past it by default doesn't include it

for example, `obj/item` didn't include mapload so every single item by default didn't fill in mapload

![](https://media.discordapp.net/attachments/823293417186000909/875122648605147146/image0.gif)

## Regex used:

procs without args, not even regex

`/Initialize()`

procs with args
`\/Initialize\((?!mapload)((.)*\w)?`

cleanup of things i didn't want to mapload:
`\/datum\/(.)*\/Initialize\(mapload`
2021-09-24 17:56:50 -04:00
Watermelon914 44dc49b766 Proccall handler hotfix (#61642)
Fixes proccall handlers runtiming because GLOB.AdminProcCallHandler not being set
2021-09-23 18:56:12 -07:00
Timberpoes 16d541e975 [TM Candidate] Overhauls orbit and POI code to fix part of issue #61508 where players could observe /mob/living/new_player on the lobby. (#61509) 2021-09-22 15:54:15 -07:00
Mothblocks e3c909cf6e Add admin panel for station traits (#61546)
Admins can now revert (most) station traits before a round starts, as well as setup the station traits that will run next round.

Previously, admins had no control over this system, making it sometimes painful for running planned events.

It is not feasible to update the station traits of the current round, considering some apply pre-roundstart, but it is doable to edit the station traits of the next round.
2021-09-22 22:23:04 +01:00
Watermelon914 9295f0d5bd [s] Fixed admins being able to bypass proccall protections via remote sdql and circuits. (#61482)
About The Pull Request

Admins can bypass IsAdminAdvancedProcCall checks by using these methods of proccall because proccall protection is kinda dumb. This has been tweaked so that there is proper proccall protection for these methods of proccall.
Code is hacky, but there's not much of a choice if we want procs to be properly protected from admin proccalls from any sort of remote source. If anyone has a better idea on how to implement this, feel free to hit me up.

We need a special global mob that handles proccalls from sources that may not have a usr/client to refer back to. IsAdminAdvancedProcCall() relies usr being defined, so if no usr is defined, then this will always return false. This has been adjusted so that proccalls without a usr/client to refer back to will instead set usr to this special mob, which will then let the IsAdminAdvancedProcCall() return true by comparing whether usr == this special global mob.
Why It's Good For The Game

Admins can no longer bypass IsAdminAdvancedProcCall checks.
Changelog

cl
admin: Admins are no longer able to bypass proccall protections using remote methods of proccalling.
/cl
2021-09-22 12:09:16 +12:00
Timberpoes d14b6cc849 Radically improves explosion logging. (#61419)
Adds some extra vars and logic to explosion code to make powerful logging entries that should help admins narrow down when explosives get misused.

Records this new info in the feedback database and bumps the explosion version +1 as a result of this.
2021-09-18 18:13:16 +01:00
tralezab b69d87a76e Sparring Sect! (#61316)
Adds the sparring god. Your deity wants you to go out and spar people for self improvement.

Sparring
You can create contracts from paper as the chaplain. The contracts come with a set of conditions for the battle.

You can set which weapons are allowed.

You can set what you earn from winning.

You can set where you fight.

BOTH participants in the sparring match must agree to the terms for the fight to begin. Changing the terms will remove any other signatures on the contract, requiring them to review and willingly sign again.

Setting the stakes to be holy will give you favor for winning the fight. You can only do this once per person, so you can't farm points. You can use points on declaring new areas as arenas, or if you save up enough, buff your heart to keep fighting in dangerous conditions.
2021-09-17 21:04:47 +01:00
Emmett Gaines 04dfcc6559 GAGS fix + debug improvements I needed to find it (#60819)
This fix was one hell of a debug journey. Icon.Insert() was the issue here but I'm not sure if it counts as byond bug in this particular case. When you insert a single frame icon, if an existing icon state of the same name exists normally it would be overridden. However different things happen if the icon that gets overridden has multiple frames. I'm not fully sure of the different behaviors but depending on what the icons consisted of you could get animated sprites where every frame was the same or appending frames to animated sprites in strange ways.

This has been fixed by making sure no Inserts are overriding existing icon states so that the strange behavior doesn't have to be dealt with.

The GAGS debug menu has been upgraded a bit on the way to fixing this bug. A toggle to automatically refresh icons when the dmi or json configuration are updated has been added and the step by step preview will only show steps now involved in the creation of the icon state you select.
2021-09-16 23:55:12 +01:00
Ghom 2f7404f8b1 Fixes Everyone Is A Traitor not affecting latejoins. (#61071)
I have made the admin sheanigean use a datum that registers the COMSIG_GLOB_CREWMEMBER_JOINED signal to give latejoins the traitor antag datum. I have also moved the global comsig at the end of AttemptLateSpawn(), which is necessary to stop latejoins who already rolled antag from getting the role and also make it work for non humans (though robots can't be latejoined as right now). For summon guns/magic, a ishuman check has been added, and the definition of the make_scottish() has been moved to living. This shouldn't affect how the other datums who use the same comsig work.
2021-09-15 13:32:26 +01:00
Mothblocks 5a4c87a9fc tgui Preferences Menu + total rewrite of the preferences backend (#61313)
About The Pull Request

Rewrites the entire preferences menu in tgui. Rewrites the entire backend to be built upon datumized preferences, rather than constant additions to the preferences base datum.

Splits game preferences into its own window.

Antagonists are now split into their individual rulesets. You can now be a roundstart heretic without signing up for latejoin heretic, as an example.

This iteration matches parity, and provides very little new functionality, but adding anything new will be much easier.

Fixes #60823
Fixes #28907
Fixes #44887
Fixes #59912
Fixes #58458
Fixes #59181
Major TODOs

Quirk icons, from @Fikou (with some slight adjustments from me)
Lore text, from @EOBGames (4/6, need moths and then ethereal lore from @AMonkeyThatCodes)
Heavy documentation on how one would add new preferences, species, jobs, etc

    A lot of specialized testing so that people's real data don't get corrupted

Changelog

cl Mothblocks, Floyd on lots of the design
refactor: The preferences menu has been completely rewritten in tgui.
refactor: The "Stop Sounds" verb has been moved to OOC.
/cl
2021-09-15 10:11:11 +12:00
Fikou 1b5e20fe6c server restarting stuff uses alert instead of tgui alert (#61405)
if tgui is broken you should still be able to reboot world
2021-09-12 15:37:18 -04:00
Fikou 156b08bd22 adds infinity to vv classes (#61302)
adds infinity as a vv option
2021-09-11 07:02:49 +01:00
Fikou ff48fac9f4 actually fixes the wrapping on ahelps (#61282) 2021-09-08 19:54:19 -07:00
tralezab 4d7f2952e4 [READY] Adds memory system, and engraving walls with chisels (#60302)
Co-authored-by: MonkeyThatCodes <monkey>
Co-authored-by: MonkeyThatCodes <MonkeyThatCodes@deez.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: AMonkeyThatCodes <20987591+AMonkeyThatCodes@users.noreply.github.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2021-09-08 15:03:07 -07:00
Fikou 324f54bb49 individual logging is now visible even with client logged out (#61269)
individual logging now relies on the global list of player details, instead of checking that client's player details which doesnt work if client is logged off
2021-09-07 18:40:35 +01:00
Y0SH1M4S73R ff974b82d1 fixes sdql spell parsing (#61248) 2021-09-06 02:35:15 -07:00
Timberpoes 7df1931ab0 Reimagines the imaginary friend as a fancy new smite. (#61218)
Fixed imaginary friends being unable to turn by movement or holding down ctrl. I assume this was broken when abstract_move was implemented.

Makes some tweaks to the Imaginary Friend mob. It no longer cares about any brain traumas and can exist standalone.

Added the ability to take a set of datum prefs as an argument. It will attempt to create an imaginary friend as per those datum prefs.

This imaginary friend can be a cyborg or an AI core.

Takes this improved behaviour and packages it into a brand new smite that allows admins to inflict anyone with a permanent imaginary friend. This is not tied to a brain trauma. You can probably give imaginary friends imaginary friends. You can probably give the AI eye an imaginary friend. I have not tested this. It is probably a bad idea.

You can give simplemobs imaginary friends. Basic mobs. Silicons.

You choose whether the imaginary friend takes on the preferences of the person you choose to be the imaginary friend or is random
2021-09-05 11:23:09 -04:00
Fikou 995296c742 makes rslve button in admin help panel not wrap around (#61239)
makes admin help panel wider so rslve doesnt wrap around to the bottom line
2021-09-05 11:06:05 -04:00
Watermelon914 bf9165878a Added permission verification to the change_admin_rank proc. (#61137)
Checks if usr has R_PERMISSION before going any further in the change_admin_rank proc.
2021-09-02 19:37:26 -04:00
Kyle Spier-Swenson b0e57a8776 Fix adminban limit permission check (#61172)
this is likely what was intended
2021-09-02 19:27:00 -04:00
Mothblocks e09dc8ba24 Reorder the POPUP button (#61174)
Hurts muscle memory in a way I didn't anticipate. New version puts it behind the REJT button.
2021-09-02 19:26:30 -04:00
LemonInTheDark 1f5e76a39f [s] Audits object say() uses to make handling text more safe (#61147)
Made all say()s deal with encoding, audited all uses of say() to prevent double encoding or like, manually inserting span(). 
I left some stuff without sanitize that only draws from the code, since it's hell to clean up otherwise. That
and I let admins do whatever the fuck they want
2021-09-02 08:36:36 +01:00
Timberpoes 25de7ded2b Fixes being able to spam ghost role notifications. (#61085)
There are methods that let players spam the everloving shit out of ghosts with BONG BONG BONG BONG BONG BONG BONG etc. through being able to constantly poll ghosts for roles with no restriction or cooldown.

Examples are laughter and slaughter demon antag_spawners.

It makes no sense to be able to concurrently poll for the same mob. As a result, I've now added a guard against this. The proc has been given a static list of mobs it's polling for ghost roles for. If it's already polling for ghost roles for a given mob, then it just early returns with an empty list, otherwise it adds the mob to the static list when the poll starts and removes it when the poll ends.

I've also done a little cleanup in var names and the proc name, with a find-and-replace done. There weren't many things calling it and none used named keywords in the args so should be fine.

There is also poll_candidates_for_mobs (also included in my cleanup) - This proc is basically only called by admins via sentience balloons and they have their own guards against spamming (the balloon pops and thus can only be used once)

Also fixes an issue in /mob/living/silicon/robot/proc/replace_banned_cyborg() where incorrect args were used in the proc call to poll for candidates.
2021-09-01 13:01:54 +01:00
Beatrice 4e491c902d Admins Can Once Again Click Ban Panel Categories to Toggle Their Checkboxes (#60904)
* Re-Adds Header Checkboxes

- Ban Panel categories can now be clicked to click all the checkboxes in their category
- Adds a new js method called header_click_all_checkboxes whichs clicks all the checkboxes whose class is the hidden checkbox's name

Re-introduces a function that was lost with #60578 (6c4134d1ea) , closes #60903 (Admins being unable to click on the ban category and check all subcheckboxes). The method was largely copied, but was changed to comply with the toggle_other_checkboxes() method introduced with the aforementioned PR by replacing a .checked assignment with a .click() call to ensure that duplicate entries are properly marked

Admins can now click categories to more easily ban people from all entries in that category. Demonstrated below to show that checkboxes are being toggled correctly in all relevant categories

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2021-08-31 16:31:59 -07:00
Mothblocks 0990a8ddcf Give admins the ability to put a popup notice for players in tickets (#61010)
Admins can now give players a popup if they are not responding to tickets.
Popup is cleared when player replies or ticket is resolved/closed.
As more and more of the chat screen is made irrelevant, new players read it less and less.
This means that a lot of new players are ignoring ahelps, which is something I've encountered myself.
2021-08-29 21:11:38 -03:00
Y0SH1M4S73R d00c721638 Refactors and improves SDQL spells (#60972)
SDQL spells have been improved in several ways:

- The behavior of executing SDQL spell queries using datums has been migrated to a component
- Projectile SDQL spells can now fire any subtype of /obj/projectile
- Touch SDQL spells can use any subtype of /obj/item/melee/touch_attack
- More robust parse error detection
- Parse errors while loading a file from json are displayed in a modal window, with the option to load whatever parts of the spell were correctly parsed (be forewarned, scrollable sections are scuffed, and the ones that appear in the parse error modal can only be scrolled through by drag-selecting the text within them)
- Fixes a bug with the names of variables within lists
- Compartmentalizes SDQL spell code into several .dm files.

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2021-08-30 00:03:01 +03:00
Bobbahbrown 8549cc0bed Add Requests Manager to View All Prayers, Centcom/Syndicate Requests & Nuke Code Requests in Round (#60905)
Implements the Requests Manager, a new admin tool used to view all prayers, Centcom/Syndicate requests, and nuke code requests within the span of a round.

The verb can be found under Admin.Game, or alternatively just use the verb directly Requests Manager. The requests can be filtered by type (using the type filter button), or using a text search which searches both the message text as well as the request owner's name.
2021-08-26 02:30:07 +01:00
AnturK d72eac0c3a Runtime fixes batch. (#60946)
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2021-08-21 12:50:03 -04:00
Watermelon914 25f3e7eedd Added component manipulation on objects (#60771)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-08-21 02:44:22 -07:00
Thunder12345 aeec6932df Changes the input list in VV add component to tgui_input_list() (#60755)
* Changes the input list in VV add component to tgui_input_list

* fuck

Co-authored-by: Thunder12345 <stewart@critar.demon.co.uk>
2021-08-20 12:45:03 +03:00
LemonInTheDark cd576ab519 Del The World: Unit testing for hard deletes (#59612)
Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>
2021-08-15 21:09:26 -07:00
Rohesie af21c43ec7 Fixes a minor client disconnection runtime (#60834)
This happened because clients are incredibly fickle and may disappear at any time.
In this case searching for the DB took long enough to cause this.
Improved a little code around it, in the process.

(It's more like the db sleeps, so byond has a chance to nuke the client datum. but this is good either way)
2021-08-14 16:28:39 -07:00
Wayland-Smithy 509677e51d Fixes new ticket ahelp message double sanitizing (#60826)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-08-14 11:54:09 -07:00
Timberpoes dc5158324b Adds new config flag to mirror logging of suspicious failed logins to its own file (#60791) 2021-08-12 17:58:08 -07:00
Jordie db4f3972a1 Display round id in notes panel (#60811)
Round id when a note was made in now displayed in the notes panel
2021-08-12 02:44:57 -03:00
Wayland-Smithy 7176107628 Fixes an unclear invisimin toggle message for when it would be redundant (#60794)
Adds a check for observers to invisimin verb code.
Less admins thinking it's broken when it just tells them they are disabling it over and over as an observer.
2021-08-11 22:55:11 -03:00
Rohesie 6c4134d1ea Job refactor 2: less hardcoded lists (#60578)
* Job refactor 2: less hardcoded lists

* Obsessed can happen
2021-08-05 21:13:05 +02:00
Tim 9479c5ec5b Fix polymorph behavior for pAIs and mimics (#60502)
This fixes #58258. Basically anytime a pAI holoform gets shot with a staff of changing or polymorph item it would change their mob type. This allowed ghost roles infinite respawns since the pAI card is not destroyed when it gets polymorphed. An unlimited army can be created with no downsides since you can keep bringing people back to life with the pAI requests.

I also went and fixed another strange behavior with polymorph, where if you used a staff of animate on an object, you could turn around and then polymorph the object into a mob. The animate magic is supposed to wear off the object after a certain while so I made the mimic immune to polymorph effects.
2021-08-05 13:29:32 -03:00
Mothblocks dc6d079899 Add admin panel for viewing circuits (#60504)
* Add admin panel for viewing circuits

* Resizable, make wider

* Better info, button to open panel

* Add saving/duplicating
2021-08-04 19:08:08 +02:00
Fikou 8baff61c5f adds list getter and text2num to sdql (#60654) 2021-08-02 22:57:40 -07:00
Watermelon914 96f1c2abae Adds the bare minimum admin components and allows admins to define list literals. (#60240)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: carshalash <carshalash@gmail.com>
Co-authored-by: tgstation-server <tgstation-server@tgstation13.org>
2021-08-02 01:50:06 -07:00
Mothblocks bd6873fd4d Remove nanites (#60473)
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2021-07-28 16:00:56 -07:00
Watermelon914 548f924c21 Adds the ability to save/load circuits for admins. Adds the ability to duplicate modules in a round. (#60222)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-07-28 14:26:50 -07:00
Fikou c204fe8c8b no more warning :D (#60482) 2021-07-27 21:38:38 -07:00
Fikou 51cba51347 removes some uses of var in world (#60407)
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2021-07-26 16:25:06 -07:00
dragomagol 02102d34d7 Splits 'random verbs' into several other verb files (#60403) 2021-07-25 16:43:23 -07:00
tralezab 6647f0d6aa Dissecting Biddle Traitors: Toned down traitor flavor + antag info tgui (#60311) 2021-07-22 15:39:26 -07:00
LemonInTheDark 96cc4a7260 EVEN MORE HARDDEL FIXES (#60228)
Fixes a ton of harddels, sourced from #59996 
I think this brings us down to like, ~100 per round from ~200, with only like 20 of those being proper hell failures. I've seen harddel profiles below 1 second of total cost. Feeling good.

See you on the other side

Makes the cryopod control computer into a weakref, never trust bee code 
Converts brig door timer internal lists to weakrefs
Fixes a harddel caused by qdeling a motion sensitive camera after it had left its source area, jesus christ why didn't we do this already holy shit
Converts the radio implant ref held by the antenna mutation to weakrefs because it isn't reliably cleaned up, makes the radio implant actually qdel its fucking radio
Removes the target var from the throwing datum, it does literally nothing and just exists to cause harddels, mostly for the singularity
 Fixes a cable harddel sourced from things that try to enter blueprints after smoothing, but before roundstart. IE, shuttles. Removes shuttles from the blueprints
Fixes emmisive blockers being added post qdel
Removes some manual ghosting from cryopods, I initially did this for harddel reasons, but I figured out a better fix for that. I'm now doing it because it's got this really strange logic for like "re-entering the game" that doesn't actually link to what the ghostize proc does. We should remove this at some point
Fixes robot hud objects harddeling due to hanging refs
Fixes buildmode related hanging refs, I'm coming for you admin team
Fixes a few instances of trying to add the forensics component post qdel, hhhhhhhhhhh
Fixes some split personality harddels/weirdness
Replaces a use of disconnect_duct with an init qdel hint, I suspect there's more issues with duct harddels, I've seen some odd logs about ahhh the area_contents list, but we can worry about that later
Makes teleporter targets into weakrefs, properly types them as /atom
Makes frequency devices into weakrefs
Makes cameras remove themselves from camera nets on Destroy
Makes tgui ui datums implement destroy, this means if I ever see one hang a ref to user or whatever, I know there's an error with calling close() properly. I've seen this harddel once, but not after this change so I assume there was some error with close(). IDK maybe this is a papering over? Would have to ask @stylemistake 
I've seen logs of beartraps being in world post del, putting a return there just in case. The same is true of nerf darts, but I haven't really looked into that yet
Makes a shoe's ref to untying alerts a weakref, yes this is needed.
Moves clearing client_in_contents to the Login of the new mob. This prevents doing things like ghosting someone before a mob qdel causing harddels
Fixes a harddel set sourced from adding a status effect to a qdeleted thing. Is this an error? I'm honestly not sure.
Converts bsa code to weakrefs
Converts the partner var of heat exchangers to weakrefs
Converts camera assemblies to weakrefs
Fixes some dumb behavior with ammo casings and assuming you'll be on a turf post Destroy parent call
Fixes? merger related harddels, you were never cleared from your own members list, so origin objects would end up making a new list, creating harddels. Potential input from @ninjanomnom about the logic
Chasms store a static list of "falling atoms", which only exists for chasms that go somewhere else. This list wasn't being cleared of qdeleted objects, which is what happens when you fall in most chasms. Fixes this, and converts the list to weakrefs.
Fixes some runtimes in both sheet code, and the weather listener element. This is here because runtime spam made testing more of a pain, didn't think it needed its own pr
Fixes colorful reagent harddels sourced from reagents that were qdel'd before roundstart. I'm only like 50% sure this actually got it, but the issue may have been solved by #60174, so eh
Turns the nuke op antag datum's ref to the war button into a weakref
Fixes some holopad code that was not nulling refs all the time
Converts camera bugs to weakrefs, this was the result of the bug being "reworked" like 6 years back without taking the existing ref clearing into account. Whole item needs a redo, but this'll do for now.
Ensures that the both pulling and pullee refs are cleared on Destroy
The crew monitor held all users in a non clearing list, makes that list a weakref because I hate everything

Oh and I removed all sources of gas_mixture qdeletion, I'm kinda unsure on this since it's not technically supported, but any harddels from it might? indicate something going wrong with like, gas passing logic. I'd like @MrStonedOne's thoughts, since I trust him to call me an idiot if I'm wrong.

<!-- Please add a short description of why you think these changes would benefit the game. If you can't justify it in words, it might not be worth adding. -->

## Why it's not good for the game

I crashed sybil like 10 times to get this data, I'm gonna put it to good use. Don't think you're safe sybilites, I'm coming for you.
2021-07-19 12:41:21 -04:00
Rohesie 4c21166e4f Job refactor: strings to references and typepaths (#59841)
* Job refactor: strings to references and typepaths
2021-07-18 20:48:47 +02:00