Commit Graph

15011 Commits

Author SHA1 Message Date
GoldenAlpharex bdbad2e39e Makes a fireplace's fire last a lot longer (#9423)
* Last longer damnit

* Fuck it go higher
2021-11-14 03:12:41 +00:00
Elli-Skala 821e7ee618 Revert "makes bone spears have reach of two (#3383)" (#9421)
This reverts commit 888e223d69.
2021-11-13 09:31:28 -05:00
SkyratBot 9a58a61c6c [MIRROR] Change maint crate spawners to be randomized [MDB IGNORE] (#9428)
* Change maint crate spawners to be randomized (#62742)

Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>

* Change maint crate spawners to be randomized

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2021-11-13 09:01:49 -05:00
SkyratBot a8dc106f6c [MIRROR] spraycanning stuff now updates its sprites on the mob [MDB IGNORE] (#9398)
* spraycanning stuff now updates its sprites on the mob (#62726)

* spraycanning stuff now updates its sprites on the mob

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2021-11-11 21:42:39 -05:00
Azarak 3877f2a70c Pollution changes (#9372)
* Pollution changes

* Define
2021-11-11 11:17:41 -05:00
SkyratBot 71b5f92eda [MIRROR] [MDB IGNORE] dir sanity, primarily on WALLITEMs [MDB IGNORE] (#9315)
* [MDB IGNORE] dir sanity, primarily on WALLITEMs (#62601)

About The Pull Request

Wall items mostly use the direction from the floor to the wall in the named mapping helper. Wall items mostly use the direction from the wall to the floor for the internal dir variable.

This leads to a headache when it comes to working out what conflicts with what, and what needs placing where.

Wall frames provided a member, inverse, which specified whether or not to invert the direction of the item when looking for conflicts. It was also used to specify whether to look for conflicts outside of the wall (cameras and lights appear external to the wall) or inside the wall (most wall items). This flag was set for Intercoms, APCs, and Lights. Since APCs and Lights expect a floor-to-wall direction, and Intercoms expect a wall-to-floor direction, this means that APCs and Lights were getting the correct direction, and Intercoms were getting the wrong direction.

Some implications of this setup were:

    You could build an APC on top of another wall item, provided there was nothing external attached to the wall and the area didn't have an APC.
    You could stack Intercoms indefinitely on top of the same wall, provided you weren't in a one-tile wide corridor with something on the opposite wall.

Or both! Here's twenty Intercoms placed on the wall, and a freshly placed APC frame after placing all Intercoms and deconstructing the old APC:

endless-stack-of-intercoms

Not everything used this inverse variable to adjust to the correct direction. For example, /obj/machinery/defibrillator_mount just used a negative pixel_offset to be visually placed in the correct direction, even though the internal direction was wrong, and never set! This also let you stack an indefinite number of defib mounts on the same wall, provided it wasn't a northern wall... except you could do this to northern walls too, since defibs weren't considered a wall item for the purposes of checking collisions at all!

Ultimately, every constructable interior wall item either used this inverse variable to adjust to the correct placement, set a negative pixel_offset variable to have its offset adjusted to the correct placement, or overrode New or Initialize to run its own checks and assignment to pixel_x and pixel_y!
Inventory: Table of various paths, related paths, and the adjustments they used

Unfortunately, untangling /obj/structure/sign is going to be another major headache, and this has already exploded in scope enough already, so we can't get rid of the get_turf_pixel call just yet. This also doesn't fix problems with the special 2x1 /obj/structure/sign/barsign.

Some non-wall items have been made to use the new MAPPING_DIRECTIONAL_HELPERS as part of the directional cleanup.

tl;dr: All wall mounted items and some directional objects now use the same direction that they were labelled as. More consistent directional types everywhere.
Why It's Good For The Game

fml
Changelog

cl
refactor: Wall mounted and directional objects have undergone major internal simplification. Please report anything unusual!
fix: You can no longer stack an indefinite amount of Intercoms on the same wall.
fix: Defibrillator Mounts, Bluespace Gas Vendors, Turret Controlers, and Ticket Machines are now considered wall items.
fix: Wall mounted items on top of the wall now consistently check against other items on top of the wall, and items coming out of the wall now consistently check against other items coming out of the wall.
fix: The various directional pixel offsets within an APC, Fire Extinguisher Cabinet, Intercom, or Newscaster have been made consistent with each other.
fix: The pixel offsets of Intercoms, Fire Alarms, Fire Extinguisher Cabinets, Flashers, and Newscasters have been made consistent between roundstart and constructed instances.
fix: Constructed Turret Controls will no longer oddly overhang the wall they were placed on.
qol: Defibrillator mounts now better indicate which side of the wall they are on.
fix: Some instances where there were multiple identical lights on the same tile have been fixed to only have one.
/cl

* [MDB IGNORE] dir sanity, primarily on WALLITEMs

* apc directionals

* bluespace vendor fix

* defib fix

Co-authored-by: esainane <esainane+github@gmail.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
2021-11-10 17:17:26 -05:00
SkyratBot e845e22fd9 [MIRROR] Cyborg non direct "combat" rebalance. Airlock seal buffed, borg RCD nerfed. [MDB IGNORE] (#9349)
* Cyborg non direct "combat" rebalance. Airlock seal buffed, borg RCD nerfed. (#62621)

Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>

* Cyborg non direct "combat" rebalance. Airlock seal buffed, borg RCD nerfed.

Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2021-11-10 10:44:24 -05:00
SkyratBot 6d630e86bd [MIRROR] RPDs can't place transit tubes directly under dense objects. [MDB IGNORE] (#9359)
* Transit tubes can't be placed on turfs with dense objects. (#62387)

Right now you can directly place and wrench a transit tube under a few objects that are dense, this opens up a few issues, like you being able to bypass dense objects and get into places that you shouldn't with basically no effort as long as you have a RPD in your bag.
The main example of this is the brig cells, the bridge, the AI upload, the luxury area on the luxury shuttle, etc.
So a simple check was added to see if the turf has a dense object before placing a tube.

This PR #45609 (a5de1c1b5e) was IMO one of the best balance changes in the game, before it access was a meme and you could get anywhere in a few seconds by just unwrenching windows.
With a RPD you can do the same, but the worse issue is that while it takes 1 second for you to place a tube under a reinforced window, you need to fully deconstruct the window to remove it.
While you fix 1 area that the clown turned into free access, they have build 5 more.

* RPDs can't place transit tubes directly under dense objects.

Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
2021-11-10 10:18:59 -05:00
SkyratBot 6a3b1385a9 [MIRROR] Cyborgs can now shake up compromised carbons [MDB IGNORE] (#9356)
* Cyborgs can now shake up compromised carbons (#62468)

The Hug Module from Medical and Peacekeeper Cyborgs now removes negative stats (the same as a human) from carbons when used on Mode 1. Put in a simple way, this allows the three referred Cyborg types to wake up and remove stuns from carbons with the use of their Hug Module.

* Cyborgs can now shake up compromised carbons

Co-authored-by: Justice <42555530+Justice12354@users.noreply.github.com>
2021-11-10 10:09:47 -05:00
SkyratBot 4eb10ac1fc [MIRROR] Locker Shoving Re-Reloaded [MDB IGNORE] (#9350)
* Locker Shoving Re-Reloaded (#62618)

* Locker Shoving Re-Reloaded

The signals here were weird, converted them to connect loc. I did my best to make sure behavior matched what
existed pre arcane pr
Unshat shove code considerably, believe it or not it used to be worse.

* Locker Shoving Re-Reloaded

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2021-11-09 16:44:40 -05:00
Seris02 985e677b91 [semi-modular] thieving gloves (#8772)
* yeet

* goddamn fucking trailing newline

* edit: I reread the bounty

* leftover from: I reread the bounty

* *more* leftover from: I reread the bounty

* speedup

* here too

* empty commit for linter reruns

* there

* remembered the newline this time

* okay I forgot that
2021-11-09 15:42:28 -05:00
SkyratBot ad008ecfa6 [MIRROR] Adds logging for all Silicon rather than just Laws [MDB IGNORE] (#9346)
* Adds logging for all Silicon rather than just Laws (#62500)

I find stuffing everything in game.log is a real problem when you need to actually find useful information about what happened to a specific Silicon. It's hard to tell what happened to Silicon throughout a round, even when crossreferencing attack/game logs, so having a Silicon log for all the information related to them would be really useful.
For example, a Cyborg can spawn unlinked on Robocop, go Janitor and crowbar someone to death with a Robodoctor AI. When looking through logs, an Admin can easily assume it was a rogue Engineering cyborg who disobeyed their laws to kill someone.
This also isn't adding a whole new log file, more than it is just renaming the law log file to silicon and adding more useful things into it, so it isn't logging bloat (if that's even a concern)

* Adds logging for all Silicon rather than just Laws

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2021-11-09 14:16:27 -05:00
SkyratBot 4ce5ce3687 [MIRROR] Headset mousedrop like PDA [MDB IGNORE] (#9339)
* Headset mousedrop like PDA (#62656)

* Headset mousedrop like PDA

* Change var names

* Forgot one var name

* Headset mousedrop like PDA

Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com>
2021-11-09 08:27:21 -05:00
SkyratBot cad2ac7888 [MIRROR] Ants can't traumatize ghosts, ants show up on top of pipes + Ant QOL [MDB IGNORE] (#9327)
* Ants can't traumatize ghosts, ants show up on top of pipes + Ant QOL (#62496)

* Protects ghosts, bypasses vents & pipes

* hard crit oops

* stops screaming unconcious people

* fixes a copy-paste error

* fixes planes

* *unconcious* people won't get messages.

* I am begging for this to be right

* I hate that it took me 30 seconds to realize

* Ants can't traumatize ghosts, ants show up on top of pipes + Ant QOL

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
2021-11-09 08:21:35 -05:00
SkyratBot bd39aef673 [MIRROR] Deletes magic armor [MDB IGNORE] (#9330)
* Deletes magic armor (#62594)

* Deletes magic armor

* removes arcane barrage's 0 armor penetration

* makes magic use NO flags. Get fucked.

* Deletes magic armor

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2021-11-09 08:09:46 -05:00
Iamgoofball 0679dd9b3d Returns the Knockdown to security batons. (#9146) 2021-11-09 06:45:48 -06:00
SkyratBot d2535a19c7 [MIRROR] Smoking DLC - Bad Lungs Pack [MDB IGNORE] (#9328)
* Add smoking quirk realism (#62662)

* Smoking DLC - Bad Lungs Pack

Co-authored-by: Tim <timothymtorres@gmail.com>
2021-11-08 23:34:56 -05:00
SkyratBot e598a0dd33 [MIRROR] Beepsky refactor and Bot code improvement [MDB IGNORE] (#9304)
* Beepsky refactor and Bot code improvement

* Feex

* Fixing the maps so they work :)

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2021-11-08 21:28:35 -05:00
SkyratBot 98428cdfb5 [MIRROR] Replaces a portion of C-style for loops with the more commonplace for loops, which are faster. [MDB IGNORE] (#9298)
* Replaces a portion of C-style for loops with the more commonplace for loops, which are faster.

* Update code/modules/projectiles/boxes_magazines/_box_magazine.dm

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
2021-11-08 10:50:29 -05:00
SkyratBot c8975a2e8d [MIRROR] Prevents chaplains from choosing 30 force null rods (oh god) [MDB IGNORE] (#9310)
* Prevents chaplains from choosing 30 force null rods (oh god) (#62631)

Chaplains can no longer choose 30 force admin only null rods

* Prevents chaplains from choosing 30 force null rods (oh god)

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2021-11-08 09:18:27 -05:00
SkyratBot 9058f0cb6e [MIRROR] Fixes the Radioactive Microlaser irradiating humans wearing clothing that protects against radiation [MDB IGNORE] (#9299)
* Fixes the Radioactive Microlaser irradiating humans wearing clothing that protects against radiation (#62588)

* Fixes the Radioactive Microlaser irradiating humans wearing clothing that protects against radiation

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2021-11-08 06:44:43 -05:00
SkyratBot 95b502809a [MIRROR] Use Passive Vents for waste output in Space [MDB IGNORE] (#9044)
* Use Passive Vents for waste output in Space (#62239)

* Use Passive Vents for waste output in Space

* I hate this

* ugh

Co-authored-by: esainane <esainane+github@gmail.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
2021-11-07 11:14:16 -05:00
SkyratBot 42b17d088b [MIRROR] Suicicide -> Suicide [MDB IGNORE] (#9292)
* Suicicide -> Suicide (#62614)

This PR just fixes a small spelling error in the suicide message for the singulo toy, probably a waste of a pr but hey, I'm trying to remember how to do these and figured I'd do a quick and easy one.

* Suicicide -> Suicide

Co-authored-by: Toastgoats <63932673+Toastgoats@users.noreply.github.com>
2021-11-07 10:17:48 -05:00
SkyratBot 816a390f3d [MIRROR] aliens can no longer clear eggs before the hugger bursts out [MDB IGNORE] (#9285)
* aliens can no longer clear eggs before the hugger bursts out (#62597)

* aliens can no longer clear eggs before the hugger bursts out

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2021-11-07 06:02:24 -05:00
SkyratBot 3d123f0c16 [MIRROR] Fixes a few issues with double bedsheets. [MDB IGNORE] (#9281)
* Fixes a few issues with double bedsheets. (#62590)

Fixes the random and dorms spawners for double bed sheets. Fixes the dying_key for double bed sheets.

* Fixes a few issues with double bedsheets.

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2021-11-06 19:30:53 -04:00
SkyratBot b7b6bd501f [MIRROR] removes double spaces AFTER symbols [MDB IGNORE] (#9226)
* removes double spaces AFTER symbols

* Fixing conflicts

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2021-11-05 18:15:12 -04:00
SkyratBot 60890c5c50 [MIRROR] Deletes the unused /obj/item/card/data types. [MDB IGNORE] (#9228)
* Deletes the unused `/obj/item/card/data` types. (#62519)

* Deletes the unused `/obj/item/card/data` types.

* Fixing map CI

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2021-11-05 17:52:29 -04:00
SkyratBot 3d4c9bc4fe [MIRROR] Removes an erroneous to_chat(world) call [MDB IGNORE] (#9258)
* Removes an erroneous to_chat(world) call (#62556)

* why?

* Update code/game/objects/items/plushes.dm

Replace return with CRASH

Co-authored-by: tralezab <40974010+tralezab@ users.noreply.github.com>

Co-authored-by: tralezab <40974010+tralezab@ users.noreply.github.com>

* Removes an erroneous to_chat(world) call

Co-authored-by: msgerbs <msgerbs@users.noreply.github.com>
Co-authored-by: tralezab <40974010+tralezab@ users.noreply.github.com>
2021-11-05 17:18:52 -04:00
SkyratBot 5fc2085cef [MIRROR] custom say emotes, or in other words, radio emotes [MDB IGNORE] (#9260)
* custom say emotes, or in other words, radio emotes

* Update code/game/objects/items/devices/radio/radio.dm

Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>

* Feeeex

Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2021-11-05 17:16:58 -04:00
SkyratBot fca00d0ccc [MIRROR] Fixes curator PDA overlays. [MDB IGNORE] (#9248)
* Fixes curator PDA overlays. (#62259)

* Fixes overlays for the curator PDA.

* Update PDA_types.dm

* Fixes curator PDA overlays.

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2021-11-05 16:59:15 -04:00
SkyratBot 8fe6b675fe [MIRROR] Deletes a unused spookoween file and the related sound folder. Saves a few features off of it. [MDB IGNORE] (#9242)
* Deletes unused spookoween file and the related sound folder. Saves what can be saved. (#62518)

* Deletes a unused spookoween file and the related sound folder. Saves a few features off of it.

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2021-11-04 07:09:27 -04:00
SkyratBot d9fc86863f [MIRROR] You can unpack bibles into new altars of the gods [MDB IGNORE] (#9234)
* You can unpack bibles into new altars of the gods (#62234)

* You can unpack bibles into new altars of the gods

* fix to a thing i caused before i screw things up

* balloon alert

* Update book.dm

* Revert "Update book.dm"

This reverts commit 4c6483a7a4efc1eb940cbd120838eade7d7ec784.

* You can unpack bibles into new altars of the gods

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2021-11-04 07:01:14 -04:00
SkyratBot 62dd4feba5 [MIRROR] liches can no longer embed phylactery grenades inside of indestructible structures [MDB IGNORE] (#9224)
* liches can no longer embed phylactery grenades inside of indestructible structures (#62505)

* buzzkills

* no effects either

* early return

* liches can no longer embed phylactery grenades inside of indestructible structures

Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
2021-11-04 06:51:06 -04:00
SkyratBot 6a8301da8b [MIRROR] Locker based combat, evolved. [MDB IGNORE] (#9212)
* Locker based combat, evolved. (#60000)

* Locker bullying, reloaded.

* Start work on refactoring the whole gosh damn thing

* I'm stuck.

* Checkpoint

* Restart work: Lets get this scrap to compile

* Workin on it, having to swtich back to walls project

* Revert "Restart work: Lets get this scrap to compile"

This reverts commit baa1814fd1ed2c86f2009a54a90d9306264762fc.

* Compiles (Check), Signals are backwards (Fix)

* 90% complete yet again I have grown powerful

* I HAVE GOT IT WORKING PERFECTLY

* Removes a small part of commented code

* Perfection*

* Locker based combat, evolved.

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2021-11-02 23:12:40 +00:00
SkyratBot 0b3f3cc6ad [MIRROR] Adds garment bags to reduce locker clutter [MDB IGNORE] (#9194)
* Adds garment bags to reduce locker clutter

* Fixing merge conflicts (might have some clothing issues because of that later, woo)

Co-authored-by: Horatio22 <69338705+Horatio22@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2021-11-02 12:33:25 -04:00
SkyratBot 49f3307e14 [MIRROR] Fixes issue with catwalk floors being added to each other ad infinitum. (#9185)
* Fixes issue with catwalk floors being added to each other ad infinitum. (#62236)

## About The Pull Request

You could place catwalk_floors on each other ad infinitum because they were a plating subtype. This changes them to a floor, and sets their intact = false so that wires wont be hidden by undertile/proc/hide. Fixes #62105 .

Also fixes a smaller issue where "remove cover first!" wasn't being outputted to the user when they tried crowbarring a catwalk floor.

Thanks to arm for his help with this!

## Why It's Good For The Game

Fixes  #62105

* Fixes issue with catwalk floors being added to each other ad infinitum.

* Fixes the catwalks eveywhere else

Co-authored-by: Coconutwarrior97 <40315842+Coconutwarrior97@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2021-11-02 10:59:48 -04:00
SkyratBot e90627be0e [MIRROR] Modernizing Radiation -- TL;DR: Radiation is now a status effect healed by tox healing, and contamination is removed [MDB IGNORE] (#9176)
* Modernizing Radiation -- TL;DR: Radiation is now a status effect healed by tox healing, and contamination is removed

* Fixing conflicts

* Makes it compile, yeet all the RAD armor from everywhere (thanks RegEx!)

* Removing more lingering rad armor (woo)

* Damnit powerarmors

* Bye bye rad collectors!

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2021-11-02 10:36:46 -04:00
SkyratBot 401b09e207 [MIRROR] Changes Plasmamen belt tanks volume and the rate that their lungs consume plasma to 1/4 of the previous value. [MDB IGNORE] (#9197)
* Changes Plasmamen belt tanks volume and the rate that their lungs consume plasma to 1/4 of the previous value. (#62081)

Plasmamen belt tank volume is 24, the extended engineering one is 6 and the emergency internals are 3.
The issue balance wise is that all of those have the same pocket size and can be printed at the same Research tier, this results on smart atmos/engineers printing a plasmamen belt tank and filling it with O2 so their internals can last for almost 2 hours instead of the 24 minutes of the extended O2.

Now they have the same volume but plasmamen lungs were rebalanced to consume plasma at a lower rate. To be clear, it will have no effect on how long the internal last for a plasmamen.

Removes a no skill trick that gives you internals that will last for all shift, you can still make those but it will take a tiny bit of effort now.

Also a small step to make internals balanced.

* Changes Plasmamen belt tanks volume and the rate that their lungs consume plasma to 1/4 of the previous value.

Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
2021-11-02 08:00:32 -04:00
gonenoculer5 6919129762 Fixes gandalfs jank. (#9152)
[dopamine noises]
2021-10-31 22:35:43 +00:00
SkyratBot 8724bbeaca [MIRROR] fixes a runtime with dropping advanced cards from wallets [MDB IGNORE] (#9156)
* fixes a runtime with dropping advanced cards from wallets (#62440)

fixes a runtime when transferring advanced ids to/from wallets
Fixes #62036

* fixes a runtime with dropping advanced cards from wallets

Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
2021-10-31 22:35:26 +00:00
SkyratBot c3a9d566bb [MIRROR] the PDA will no longer bother you with a 'you can't do this right now' message when closed while resting [MDB IGNORE] (#9158)
* the PDA will no longer bother you with a 'you can't do this right now' message when closed while resting (#62438)

When you close it while you're laying down, it will no longer give you the message "You can't do that right now!"

There really isn't much more to say, all it does is make it so the message doesn't show up if all you're doing is closing the interface.

* the PDA will no longer bother you with a 'you can't do this right now' message when closed while resting

Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
2021-10-31 22:33:49 +00:00
SkyratBot a31e4bedfa [MIRROR] Tackles various problems with keyed_list config entries, fixing broken roundstart races and more! [MDB IGNORE] (#9131)
* Tackles various problems with keyed_list config entries, fixing broken roundstart races and more! (#62359)

While helping RaveRadbury debug some issues with enabling Halloween species early via the brute force method of enabling them in the config rather than the gentleman's solution of testmerging a PR that changes the Halloween date, we discovered something dreadful.

Cloth golems cannot be enabled! Infact, any species with a space in the ID cannot be enabled.

It uses the splitter despite VALUE_MODE_FLAG being set. So a key entry like ROUNDSTART_RACES cloth golem would get parsed as cloth = golem, then entered into the config as cloth = TRUE
NEW AND IMPROVED PART HERE

I've re-written how keyed_list config entries are parsed, splitting it into a number of procs to do some discrete block of logic.

Based on feedback from MSO, he expected that VALUE_MODE_FLAG keyed_list entries could have elements overridden. However, this functionality was not present in the code.

I have implemented it. We now support 3 methods of setting VALUE_MODE_FLAGS.

Implicitly enable the config entry: CONFIG_ENTRY config_key_goes_here
Explicitly enable the config entry: CONFIG_ENTRY config_key_goes_here 1
Explicitly disable the config entry: CONFIG_ENTRY config_key_goes_here 0

There have been functionality changes too. Previously, everything before the first splitter was the key and everything after was the value. However, in ambiguous config entries (Such as ROUNDSTART_RACES cloth golem 0) it would be unclear if the intent was (cloth, golem 0) or (cloth golem, 0) or indeed if the intent was (cloth golem 0, 1).

As a result, there is now the following paradigm in place: Everything after the LAST splitter is the value, everything before is the key and a log_config warning is now given explaining the problem and showing how it was resolved.

[2021-10-27 19:48:12.840] WARNING: Multiple splitter characters (" ") found. Using "cloth golem" as config key and "1" as config value.

This warning will trigger if multiple splitters are present for any keyed_list config entry, and will trigger on implicit VALUE_MODE_FLAGS entries that have splitters. The example above is it triggering on ROUNDSTART_RACES cloth golem - It has detected that there is potential ambiguity between (cloth, golem) or (cloth golem, 1), has picked a sensible option for the data type and has warned about it.

The intent is that no config entry should be ambiguous. It should be clear what is key and what is value when dealing with keyed_list config entries.

There's probably more work to do on other config entries to bring them up to this standard, but this is the thing I'm hitting in this PR.

Similarly, I have improved the validation aspect of keyed_list config entries with additional logging in general.
[2021-10-27 19:47:53.135] ERROR: Invalid KEY_MODE_TYPE typepath. Is not a valid typepath: /mob/living/carbon/monkey

I have added a unit test to make sure species IDs do not contain splitters from the two keyed_list subtypes relating to species.

I have added sanity checking to the race config subtypes since we have a big dick global list of all races sorted by ID, so a race not existing will fail validation and output a meaningful config log entry.

I have removed /datum/config_entry/keyed_list/probability from the code as it is unused with the removal of all game modes except Dynamic.

The config change necessitated the renaming of all golem species IDs. Doing so and renaming the clothgolem.ts file to match has fixed the broken cloth golem page too.

* Tackles various problems with keyed_list config entries, fixing broken roundstart races and more!

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2021-10-29 21:07:21 +01:00
SkyratBot b6ffb1e31b [MIRROR] Refactor /turf/var/intact [MDB IGNORE] (#9114)
* Refactor /turf/var/intact (#62331)

Turfs have a variable, intact, which conflates three meanings:

    Determining whether there's something that can be pried out, such as directly with a crowbar or indirectly with a tile stack and a crowbar off-hand.
    Determining whether underfloor pieces are visible.
    Determining whether underfloor pieces can be interacted with - by players with tools, through interaction with effects like chemical acid, or foam.

When plating is hit with a stack of tiles, /turf/open/floor/attackby checks whether the turf is intact, and if so, ends the attack chain regardless of whether or not the attempt to hotswap a turf (with a crowbar) is successful or not. However, turfs which want the underfloor to be visible - such as catwalks and glass - set the intact variable to FALSE, and so can be repeatedly placed over one another, as if they were the first tile to be placed over the plating.

This refactors /turf/var/intact into two distinct variables:

    /turf/var/overfloor_placed, for whether or not there is something over plating.
    /turf/var/underfloor_visible, for whether or not the various underfloor pieces should be invisible, visible, or both visible and interactable.

All references to /turf/var/intact have been replaced with an equivalent overfloor_placed or underfloor_visible reference, depending on which check is appropriate. underfloor_accessibility can take one of UNDERFLOOR_HIDDEN, UNDERFLOOR_VISIBLE, or UNDERFLOOR_INTERACTABLE. This prevents cases such as acid foam or tools phasing through glass floors to affect the underfloor pieces underneath, and covers all kinds of unusual, not-wiring-visiblity usage such as Holodeck completeness, Revenant interaction, or station integrity checking.

* Refactor /turf/var/intact

* Thank

Co-authored-by: esainane <esainane+github@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
2021-10-30 00:19:21 +13:00
SkyratBot 7954d664a8 [MIRROR] removes double spaces before symbols [MDB IGNORE] (#9117)
* removes double spaces before symbols (#62397)

This can apparently cause some bugs on occasions, so I thought I might as well try to kill them all.

* removes double spaces before symbols

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2021-10-29 04:14:00 +01:00
SkyratBot 519b39d615 [MIRROR] Double bedsheets have the correct worn sprites. [MDB IGNORE] (#9097)
* double bedsheets have the correct worn sprites. (#62372)

Double Bedsheets have a new icon_state, but in doing so, break their worn_icon_states, as their worn_icon_state was set by the icon_state.

This manually sets their worn icons in order to avoid funny broken sprites.

* Double bedsheets have the correct worn sprites.

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2021-10-28 12:07:45 -04:00
SkyratBot 6d010126b2 [MIRROR] locker electronics no longer put the electronics inside the locker [MDB IGNORE] (#9099)
* locker electronics no longer put the electronics inside the locker (#62358)

title
because somehow I never actually tested y'know, opening the locker with it on, apparently I just thought I did

* locker electronics no longer put the electronics inside the locker

Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
2021-10-28 12:06:46 -04:00
SkyratBot b5e889651a [MIRROR] Refactored spawner window, removed HTML artifact [MDB IGNORE] (#9100)
* Refactored spawner window, removed HTML artifact (#62314)

Fixes #61876
I originally went in to edit out the HTML from flavor text. Pulling up the menu, it was just poorly formatted, so I got carried away redoing it.
Issues previously:
HTML artifacts in spawner text were visible, showing opening and closing tags
Spawner menu text was huge, unlabeled, looked very jumbled
Why it's good for the game:
You can now easily read the spawners menu
Having many spawners available should be easy to scroll through
No more HTML randomly
More error cases handled

* Refactored spawner window, removed HTML artifact

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
2021-10-28 12:06:23 -04:00
SkyratBot 6450166bad [MIRROR] breaks my > 1 year long streak of no webedits. fixes a dumb mistake [MDB IGNORE] (#9103)
* breaks my > 1 year long streak of no webedits (#62405)

Removes commented out code left in by accident.

* breaks my > 1 year long streak of no webedits. fixes a dumb mistake

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2021-10-28 12:04:40 -04:00
AxieTheAxolotl 4a7c09f6c0 Brings back the Captain's SOCOM (#9104)
* wack ass

* Revert "wack ass"

This reverts commit a02089265919e2038533817a4a9b743c87fe2536.

* weh
2021-10-28 15:48:40 +01:00
SkyratBot fad38d8c24 [MIRROR] Adds the ability to soft filter words, also fixes some word filter bugs [MDB IGNORE] (#9062)
* Adds the ability to soft filter words, also fixes some word filter bugs (#62158)

* Adds the ability to soft filter words, also fixes some word filter bugs

* Fixing linters (you're welcome Jake!)

* Punctuation is my passion!1!!111!

Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
Co-authored-by: GoldenAlpharex<jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2021-10-27 20:06:23 -04:00