Commit Graph

2531 Commits

Author SHA1 Message Date
John Willard
0f368e1ff8 Station traits won't roll twice (#73174)
## About The Pull Request

Station traits can't roll twice in the same round.
They currently have blacklist for traits that can't roll together, this
makes them not roll with themselves too.

## Why It's Good For The Game

Closes https://github.com/tgstation/tgstation/issues/61873
Station traits are not made with rolling twice in the same round in
mind, and is just a waste of trait points, or will just be annoying
(like in the issue report's case)

## Changelog

🆑
fix: There will no longer have 2 of the same station trait roll twice in
the same round.
/🆑
2023-02-05 07:07:06 +00:00
Mothblocks
d67555a0b5 the inevitable Revert "Refactors admin verbs from giant ass lists into datums" in case stuff breaks (#73206)
Reverts tgstation/tgstation#72407
2023-02-05 11:44:38 +13:00
Zephyr
fca90f5c78 Redoes the admin verb define to require passing in an Admin Visible Name, and restores the usage of '-' for the verb bar when you want to call verbs from the command bar. Also cleans up and organizes the backend for drawing verbs to make it easier in the future for me to make it look better (#73214)
## About The Pull Request

Damn that's a long title.

Admin Verbs can be used in the verb bar with hyphens instead of spaces
again.
## Why It's Good For The Game

Admin muscle memory
## Changelog
2023-02-04 01:20:18 -08:00
CapybaraExtravagante
bd81d32080 Makes some improvements to how AI can use JPS with movement loops (#72685)
## About The Pull Request

This PR makes some changes to how JPS is used in movement loops, as it
was causing a variety of issues:

- Fixed some code where JPS would fail because the path is still being
made. Instead, the movement loop will now wait.
- Reduced the subsystem wait for the pathfinder subsystem from 2 seconds
to 0.1 seconds. @LemonInTheDark told me that this is better, I'll update
this with a better explanation once I squeeze it out of him :D
- Allows you to provide an initial path to the movement loop, in case
you pre-calculated one while making a plan.

## Why It's Good For The Game

Makes working with JPS a bit easier when making AI.

---------

Co-authored-by: Capybara <Capybara@CapybaraMailingServices.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-02-03 18:40:47 -08:00
Mothblocks
374f7c5652 Fix admin verbs not being protected (#73205) 2023-02-04 01:02:18 +00:00
Zephyr
7f25d7f17b Refactors admin verbs from giant ass lists into datums (#72407)
## About The Pull Request

See title.
## Why It's Good For The Game

Makes it easier for people to add new admin buttons, and also removes
the giant ass ugly lists that are an affront to my eyes.

Yes you are still able to call them manually via the verb bar

![image](https://user-images.githubusercontent.com/12817816/210163285-2ecb4b59-67b4-47d2-b324-77048ce852fe.png)

![image](https://user-images.githubusercontent.com/12817816/210163288-5a0ec98c-9589-4cab-8a6b-1ab5151aa040.png)
## Changelog
🆑
refactor: Admin verbs are now datums with a dedicated panel handler
admin: Admin verbs now come with a handy description when you hover over
them!
/🆑

---------

Signed-off-by: GitHub <noreply@github.com>
2023-02-03 16:32:37 -08:00
NamelessFairy
7372a3a9dc Smugglers satchels will no longer spawn inside the holodeck. (#73164)
## About The Pull Request

Once the holodeck is activated the floors become un-removable thus
rendering smugglers satchels in-accessible, I'm pretty sure its
unintended to place smugglers satchels on the holodeck as the turfs it
uses don't allow for any player interaction.
I also got rid of some single letter variables.
## Why It's Good For The Game

Placing things that are intended to be accessed in inaccessible
locations seemed like an oversight to me.
## Changelog
🆑
fix: Smugglers satchels will no longer spawn inside the holodeck.
/🆑
2023-02-03 12:44:08 -07:00
LemonInTheDark
e9c87c0acb Starlight Polish (Space is blue!) (#72886)
<!-- 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

Adds support to underlays to realize_overlays
Ensures decals properly handle plane offsets
Fixes space lighting double applying if it's changeturf'd into. this
will be important later
Makes solar vis_contents block emissives as expected
Moves transit tube overlays to update_overlays, adds emissive blockers
to them

#### Adds render steps

An expansion on render_target based emissive blockers. 
They allow us to hijack an object's appearance and draw it somewhere
else, or even modify it, THEN draw it somewhere else.
They chain quite nicely

Fixes shuttles deleting z holder objects

#### Makes space emissive, makes walls and floors block emissives
The core idea here goes like this:
We make space glow, and give its overlays some color

This way, the tile and space parallax remain fullbright, along with
anything that doesn't block emissives, but anything that does block
emissives will instead get shaded the color of starlight

This requires a bit of extra work, see later

This is done automatically with render relays, which now support
specifiying layer and color (Need to make an editor for these one of
these days)

The emissive blocking floor stuff requires making a second render plate
to prevent double scaling

Also adds some new layering defines for lighting, and ensures all turf
lights have a layer. We'll get to this soon

#### Makes things in space blue

We color them the same as starlight, by taking advantage of space being
emissive
This means that things in space that block emissive will block it
correctly and be colored blue by the light overlay, but space itself
will remain fullbright

This does require redefining what always_lit means, but nothing but
cordons use that so it's fineee


#### Makes glass above space glow, and some other stuff

Glass tiles that sit above space will now shine light with matching
color to the glasses color. This includes mat tiles.

Glass tiles (not mat because they have no alpha) also only partially
block emissives.
Adds a new proc that uses render steps to acomplish this, essentially
we're cutting out bits below X alpha and drawing what remains as an
emissive.

#### Modifies partial space showing to support glow

Essentially, alongside displaying space as an underlay, we also display
a light overlay colored like starlight.
That starlight overlay gets masked to only be visible in bits that do
not contain any alpha.

We also mask the turf lighting to not go into bits that have no alpha,
to ensure we get the effect we want.
This is done with that lighting layer thing I mentioned earlier.

#### Makes appearance realization's list output ordered

I want it output in order of overlay, sub overlay suboverlay, next
overlay
Need to use insert for that

## Why It's Good For The Game

Pretty!
Also having space be emissive is a very very good way to test for fucked
emissive blockers (If it's broken why are we even drawing the overlay)
I know for a fact mob blockers on lizards and socks are kinda yorked, I
think there's more

<details>
<summary>
Old
</summary>


![image](https://user-images.githubusercontent.com/58055496/213916157-d4b38aa7-3ab6-42a4-989f-7bfba2dc2cba.png)

![image](https://user-images.githubusercontent.com/58055496/213916077-637fa288-bbee-477d-aded-730d9683477e.png)

![image](https://user-images.githubusercontent.com/58055496/213916088-0657a8a2-5627-48e2-8c4b-870c90ef2072.png)

</details>


<details>
<summary>
New
</summary>


![image](https://user-images.githubusercontent.com/58055496/213916107-2af74e64-1817-4a44-b528-180a9160cb9e.png)

![image](https://user-images.githubusercontent.com/58055496/213916115-5fa36fcc-b988-4ccf-850e-21c26ed463d0.png)

![image](https://user-images.githubusercontent.com/58055496/213916120-6833187d-b12e-42a7-ac4b-63c56deb71e5.png)

</details>

## 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. -->

🆑
add: Space now makes things in it starlight faintly blue
fix: Glass floors that display space now properly let space shine
through them, rather then hiding it in the dark
add: Glass floors above space now glow faintly depending on their glass
type
/🆑

<!-- 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: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2023-01-31 09:52:27 +00:00
Zephyr
5dbaa25f91 [NO GBP] Lazy Template Cordoning | Double Runtime Fix (#72709)
## About The Pull Request

Adds automatic cordoning to block reservations.
Also fixes an issue where ChangeTurf would cause SSicon_smoothing to
throw runtimes by calling QUEUE_SMOOTH regardless of initialization
completion

## Why It's Good For The Game

## Changelog

---------

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-01-29 18:48:38 -08:00
Penelope Haze
e871412288 Fix BUCKET_POS for ticklags with non-integer reciprocals (#72928)
## About The Pull Request
If the ticklag setting has a non-integer reciprocal, like 0.4, timers
will be inserted into the past because the fractional component gets
rounded down. This is bad.

Change originally made on a Bay codebase but it should work here too.
Probably no real impact on mainline TG servers because the commonly-used
ticklags like 0.2, 0.25, 0.33333, 0.5, etc. have integer reciprocals, so
dividing by them always just multiplies by an integer.

## Why It's Good For The Game
Inserting timers into a bucket in the past (behind the
`practical_offset`) causes a warning/unexpected behavior and should
probably be avoided; the best fix I can think of for it is just rounding
up so that it's placed in the closest *future* bucket.
2023-01-30 01:04:47 +00:00
John Willard
dee7874b96 Adds a config-optional endgame chat message (#72860)
## About The Pull Request

This basically does what we do for roundstart announcements, but for
round end.

With a delay between a round ending, the server rebooting, and a new
round starting, sometimes it feels like players would be more likely to
catch a roundstart when they know the previous game has just ended, and
not a few moments before the next one starts.

## Why It's Good For The Game

This idea was suggested to me several times by many people who don't
have good connections to servers and keep missing roundstart because
they just aren't given enough time to get on SS13.

I also included Round ID in this, so people who know what time they've
played a round can also now easily see which round it was, if they
wanted to go back to look at the logs for any reason they have.

## Changelog

🆑
config: There's now a config-optional announcer for a round ending.
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-01-29 19:52:05 +08:00
Mothblocks
9d0cdfe909 Adds an Escape Menu (#72906) 2023-01-26 00:25:16 -08:00
Jeremiah
5e80257423 Refactors crew records (#72725)
## About The Pull Request
I have attempted or otherwise started this project at least 4 times. I
am sick of it being on my calendar. The code needs it. I need it.

- This makes crew records a proper datum rather than assigning
properties record.fields.
- General, medical, and security records are merged.
- Did some slight refactoring here and there for things that looked
obvious.
- Wanted states are now defined (and you can suspect someone through
sechud)
- pAI (unrelated but annoying) had some poorly named exported types that
i made more specific
- Job icons are moved back to the JS side (I wanted to get icons for
initial rank without passing trim)

<details>
<summary>previews</summary>

Editable fields & security console

![CM6d74brnC](https://user-images.githubusercontent.com/42397676/213950290-af6cfd76-eb8b-48e9-b792-925949311d9a.gif)

Medical records

![bFJErsvOaN](https://user-images.githubusercontent.com/42397676/214132534-59af1f8c-9920-4b51-8b27-297103649962.gif)

Look and feel of the more current version

![cxGruQsJpP](https://user-images.githubusercontent.com/42397676/214132611-0134eef0-e74c-4fad-9cde-328ff7c06165.gif)

</details>

## Why It's Good For The Game
TGUI'd some of the worst UIs in the game.
Creating new records is made much simpler. 
Manifest_inject is made readable.
Probably bug fixes

## Changelog

🆑
refactor: Crew records have been refactored.
refactor: Medical records -> TGUI
refactor: Security records -> TGUI
refactor: Warrants console -> TGUI
qol: Players are now alerted when their fines are paid off.
qol: Cleaned up sec hud examination text.
qol: Adding and deleting crimes is easier.
qol: Writing crimes in the console sets players to arrest.
qol: You can now mark someone as a suspect through sec hud.
/🆑

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-01-24 18:34:27 +00:00
BlueMemesauce
33eeae4c28 Automatically adds access requirement to description of supply crates (#72748)
## About The Pull Request

1. automatically adds access requirement to description of every supply
crate
2. also adds access_view to the automatic system, which previously was
not visible

## Why It's Good For The Game
1. better code
2. now you can see what access you need to privately purchase a crate
from the supply console.

## Changelog
🆑
code: The access requirements at the end of supply crate descriptions
are now automatically generated
fix: Supply console now tells you what access each crate needs to be
privately purchased
/🆑
2023-01-23 12:05:51 +01:00
AnturK
49418819db Fixes lazy loading antag maps locking world start (#72800)
So the core issue here is antag datums are also created during
preference spritesheet generation and when first opening admin panels.
This could happen before mapping subsystem initialized and is ready for
lazy loading. If this didn't actually lock the whole ss initialization
it would also mean they are always loaded. I'll leave finding proper
early load points for someone else if they're are necessary but New
isn't it.
2023-01-22 18:49:08 -06:00
Jeremiah
872e64fb05 Adds spaces around logical operators (#72603)
## About The Pull Request
Part of a prior PR that was closed (#72562). This version does not add
the check in CI.
## Why It's Good For The Game
The work is already done, so I figured why not.
## Changelog
N/A Nothing player facing

Co-authored-by: Jeremiah Snow <jlsnow301@pm.me>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-01-16 16:56:35 -08:00
John Willard
63d5ff6db8 Ties research servers to Techwebs and de-hardcodes research point gen (#72513)
## About The Pull Request

Research point generation is now done on all techwebs that have
``should_generate_points`` set to TRUE, which by default is only the
Science techweb.

I also entirely replaced the old 'servers' and 'master_servers' lists on
SSresearch with the individual 'techweb_servers' (that already existed
prior to this PR, the title is a little misleading) which are all stored
on the individual techwebs, so we no longer store these in 2-3 different
lists. Funnily enough, master server's list was unused as their behavior
was refactored a good while ago.

Sabotaging a master server now only affects the techweb the master
server is connected to, rather than cut everyone's by half

I also removed ``calculate_server_coefficient`` instead of reworked it
to work with techweb servers, because it was entirely unused.

## Why It's Good For The Game

Better consistency for several techwebs, as sabotaging one techweb won't
sabotage all of them.
This was also at the request of one of our contributors who wanted to
make use of this system but didn't know that non-science techwebs didn't
generate points, so here you go.

## Changelog

🆑
fix: If there are several techwebs, sabotaging the master server of one
of them will no longer cut research point generation of the rest.
/🆑
2023-01-15 02:33:29 +00:00
LemonInTheDark
858da9f19a Optimizes explosions (very slightly) (#71763)
## About The Pull Request

We do two major things here.
First, instead of having every turf need to ask all the turfs in "front"
of it for its blast resistance, we have blast resistance carry back in a
cache, so they only need to ask the one directly in front of them.
Much faster, such wow

The other thing we do is totally remove the idea of "building" a turf's
explosion resistance. Instead, a turf's full resistance is stored on it
at all times.
We use an element to manage objects that want to block explosives, and
that's it simple as.
As an optimization, turfs handle block differently, using a system where
we imply that a turf's own block is just the initial of their
explosive_resistance, unless proven otherwise
This also saves a significant amount of time

To be honest with you, I did this mostly cause I wanted to well make
explosions faster
This doesn't really fufil that. They are faster, but not by much
The bulk of explosion cost comes from actually exploding things, rather
then figuring out what/how to delete.
This code is much faster for larger blastwave sizes, because calculating
protection is constant.

We save maybe 60% of propogate_blastwave, but unfortunately
propogate_blastwave for one maxcap on the top left of icebox's chapel is
only 28ms, so while 11ms is good, it's not everything I could want when
the cost of explosion/fire is 555ms.

I'm happy about it still tho, because doing things like this means I can
expand on how explosive blocking works without needing to make things
seriously expensive in here.
Also it's faster for meme admin explosions and mega burgers

## Why It's Good For The Game

Speeds up explosives slightly, opens the door to better blast resistance
projection
2023-01-09 22:29:03 -08:00
Mothblocks
9740f104d0 Contextual tutorials for swapping hands and dropping items (#72292)
# Requires https://github.com/tgstation/tgstation/pull/72320

## About The Pull Request


https://user-images.githubusercontent.com/35135081/209700892-e54be6cf-d18c-4d12-acd1-e5eb46e9d82d.mp4


https://user-images.githubusercontent.com/35135081/209700911-751b8a0e-d770-49fa-a6eb-ce50aa0fa670.mp4

---

Adds a system for tutorials that:

- Are contextually given
- Are not given again after completion
- Can optionally not trigger for anyone who first played before a
certain date

Uses this system for a tutorial for switching hands/dropping items. This
tutorial is triggered when you try to click on an item with another
item, and `afterattack` return FALSE. In order for this to work as
smoothly as possible, I'm going to open a separate PR that cleans up the
`afterattack` on everything to either return TRUE/FALSE.

## Why It's Good For The Game

SS13 is an extremely confusing game, being able to do tutorials in a
non-intrusive way (like a separate tutorial mode) is nice.

The system in place is going to be perfectly usable for introducing
mechanics to both fresh players and experienced players alike (such as
for future content).

## Changelog
🆑
qol: New players will now get a contextual tutorial for how to switch
hands and drop items.
/🆑

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-01-09 01:29:18 +01:00
Zephyr
ff1e48cf89 Automatically insert current year for TGUI bluescreen (#72490)
## About The Pull Request

Title
## Why It's Good For The Game

Less hassle
## Changelog
2023-01-06 13:01:47 -08:00
Rhials
f5bd6027c2 Small changes to some card-related debug verbs (#72361)
## About The Pull Request

Test Card Distribution debug verb has been altered slightly to prevent
runtimes. Backing out of any one of the menus would send null as an
argument, and cause a runtime.

The Validate Cards verb now returns a message if no errors are found. I
kept mistakenly clicking this verb thinking it was the Cardpack
Distribution one, and would get confused whenever nothing happened. Now
it returns a message!

Also converts some of the stuff I touch into snake case because pretty
code is nice.

## Why It's Good For The Game

Closes #66987. Feedback for the random debug buttons I accidentally
click is good.
## Changelog
🆑 Rhials
fix: backing out of the Test Card Packs debug menu will no longer cause
a runtime
fix: Validate Cards debug verb now gives feedback if no errors are
detected.
/🆑
2023-01-05 20:07:05 -08:00
jughu
87edb69de2 You can no longer instantly build carving blocks/mineral doors (#72429)
You can no longer instantly build carving blocks/airlocks
Added replaced a few 1's with true's 

## Why It's Good For The Game

SO YOU DONT PLOP DOWN 20 STRUCTURES WHILE A OFFICER IS CHASING YOU
FORTNITE STYLE

## Changelog

🆑 Improvedname
fix: fixes being able to instantly build carving blocks/mineral doors
/🆑
2023-01-03 15:42:18 -08:00
MrMelbert
acb96fee1d Refactors memories to be less painful to add and apply, moves memory detail / text to memory subtypes. Adds some new memories to demonstrate. (#72110)
## About The Pull Request

So, a huge issue with memories and - what I personally believe is the
reason why not many have been added since their inception is - they're
very annoying to add!

Normally, adding subtypes of stuff like traumas or hallucinations are as
easy as doing just that, adding a subtype.

But memories used this factory argument passing method combined with
holding all their strings in a JSON file which made it just frustrating
to add, debug, or just mess with.

It also made it much harder to organize new memories keep it clean for
stuff like downstreams.

So I refactored it. Memories are now handled on a subtype by subtype
basis, instead of all memories being a `/datum/memory`.

Any variety of arguments can be passed into memories like addcomponent
(KWARGS) so each subtype can have their own `new` parameters.

This makes it much much easier to add a new memory. All you need to do
is make your subtype and add it somewhere. Don't need to mess with jsons
or defines or anything.

To demonstrate this, I added a few memories. Some existing memories had
their story values tweak to compensate.

## Why It's Good For The Game

Makes it way simpler to add new memories. Maybe we'll get some more fun
ones now?

## Changelog

🆑 Melbert
add: Roundstart captains will now memorize the code to the spare ID
safe.
add: Traitors will now memorize the location and code to their uplink.
add: Heads of staff winning a revolution will now get a memory of their
success.
add: Heads of staff and head revolutionaries who lose their respective
sides of the revolution also get a memory of their failure.
add: Completing a ritual of knowledge as a heretic grants you a quality
memory.
add: Successfully defusing a bomb now grants you a cool memory. Failing
it will also grant you a memory, though you will likely not be alive to
see it.
add: Planting bombs now increase their memory quality depending on how
cool the bomb is.
refactor: Memories have been refactored to be much easier to add.
/🆑
2023-01-03 11:23:31 -08:00
Time-Green
bf73344399 [READY] DRAMATIC SHUTTLES!! You can now fly around the shuttle (#71906)
You can move around shuttles during transport now! Instead of them
teleporting you instantly into deepspace, you can move around somewhat
depending on your space-mobility and grip-strength.


![image](https://user-images.githubusercontent.com/7501474/206866132-3fae024c-a8a2-4f4a-b4b8-37c96a254498.png)

**Please watch the demonstration aswell, it should answer most
questions:**
https://www.youtube.com/watch?v=Os77qDOVSXE

Interactions:
- Being within armsreach of a wall or solid object means you 'cling',
where the shuttle pull is very weak and you can basically run around the
shutt;e (but dont fuck up or you're gone)
- Being in range of nothing gives you a very heavy pull, you can barely
resist if you have a decent jetpack
- Objects are instantly power-yeeted
- Being pulled or riding something excempts you from hyperspace pull
- Touching a space tile while being on hyperspace dumps you in
deepspace, you either go back to the shuttle or enjoy deepspace
- On shuttle hyperspace tiles are a lot less dangerous, and will instead
launch and freeze you instead of teleporting you into deepspace
- In-case it wasn't obvious, you can rest outside the shuttle as long as
something is blocking your path. I think it's funny but I might nerf it

🆑
add: You can now fly around the shuttle during transit! Woohoo! You can
either cling to the side or grab a jetpack and try and keep up with the
shuttle! Carps can move around freely in hyperspace
qol: Increased shuttle hyperspace size from 8 tiles to 16
/🆑

- [x] Find a way to detect when a shuttle arrives and do something with
the shit left in hyperspace

Things I will do in another PR: 
- Engines spit fire and hurt (almost finished but I want to keep this
small)
- Random shuttle events. You might run into dust meteors or migrating
carps OR A CHANGELING INFILTRATOR
- Hyperspace turfs on the shuttle pull you under the shuttle

### Why it's good for the game
It's so much more immersive than being instantly teleported into
deepspace. It gives you a chance to recover if you get spaced or for
daredevils to look cool

It's also just very cool idk
2023-01-03 11:10:56 -08:00
Kyle Spier-Swenson
5ebb91f962 Keeps gc_destroyed from getting updated on every step thru the gc queue. (#72401)
Keeps gc_destroyed from getting updated on every step thru the gc queue.

Fixes logic that assumed gc_destroyed is the time the object first
qdel'ed. it used to get updated on each stage of the garbage controller
and there are 3 stages.

Added list index defines for the inner gc item list.
2023-01-02 22:07:22 +01:00
Mothblocks
c2a3ba8b75 Add config for station traits (#72408)
Adds a config for station traits. Extremely annoyed of testing locally
and having all the lights break or spawning in the shuttle puking or
whatever.
2023-01-02 09:05:34 +00:00
Zephyr
8a8b4a37c4 Adds support for Rulesets having intrinsic template requirements (#72339)
Title

## About The Pull Request

Ensures that we load templates for a ruleset before we attempt to place
or cache characters for that ruleset
Also makes wizard and abductor async load their template to improve
(apparent) loading times for them
## Why It's Good For The Game

This is the only thing left that I can think of that would cause antags
like nukies and abductors to spawn in wrong
## Changelog
This should not be player facing

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-12-29 22:02:29 -08:00
Fikou
02e5177e99 throwing no longer gets canceled if theres a mob buckled to the thrown thing (#72261)
## About The Pull Request
throwing checks for dense obstacles on every tick of its path. a buckled
mob is a dense obstacle, so it canceled throws! it no longer does that

## Why It's Good For The Game
this will be useful in the future (and for admins throwing people
buckled on the shuttle into space)

## Changelog
🆑
fix: throwing no longer gets canceled if theres a mob buckled to the
thrown thing
/🆑
2022-12-27 16:01:07 -08:00
Mothblocks
0235cfb078 Experiment with holding hard references to objects being qdeleted in 515 (saves 1.1+ seconds on init times, more on prod) (#72033)
## About The Pull Request
Adds `EXPERIMENT_515_QDEL_HARD_REFERENCE`, which will queue to the GC
subsystem using hard references rather than `\ref`. This is only
possible in 515 because of the new `refcount` proc. `\ref` is very very
slow and has some nasty knock on effects, so removing its usages where
possible is good.

This is an explicit opt in define because I want to give us the ability
to test 515 on live while only testing 515 itself, not our experimental
changes. We have a few more of these we want to do so I made a separate
file for them. They're auto-defined in unit tests so we see them with
the alternate test runner. In a perfect world we'd test both on and off,
but eh.

Closes https://github.com/tgstation/dev-cycles-initiative/issues/10
2022-12-27 08:04:49 +00:00
Andrew
99d119758a Maps load in the center of Z-level instead of bottom-left corner (#71818)
## About The Pull Request

Reopen of https://github.com/tgstation/tgstation/pull/67857 as it became
stale and autoclosed.

Z levels are 255 by 255 tiles, but only 235 by 235 area is accessible
because the 10-tile margins are reserved for smooth transition between
space levels (essentially no-go area)
The levels were loaded with x and y offsets set as 1, regardless of the
level bounds.
So when you load a custom DMM or just a map that is smaller than 255x255
and doesn't take into account these smooth transition margins, its
western and southern part was cut.

This PR makes it so that stations and custom maps are always placed in
the center of the z-level.

This has no effect of the 255 by 255 maps, but smaller maps, like
runtime station or custom ruins loaded as stations, will not require to
have the smooth transition margin tiles reserved in DMM. And they will
not end up having parts in the inaccessible area.

This inaccessible area is highlighted on the screenshots below.

### Before:
<img width="816" alt="before"
src="https://user-images.githubusercontent.com/3625094/206308672-9f97fe50-74bc-440f-b29a-605d3777103a.PNG">

### After:
<img width="816" alt="after"
src="https://user-images.githubusercontent.com/3625094/206308725-4b1fb3db-b72e-4187-833b-4dfda777d1e4.PNG">

## Why It's Good For The Game

You can now properly load any space ruin as a custom map without it
being fucked up by map cropping.

## Changelog
🆑
fix: The maps are now placed in the center of Z level to avoid having
parts getting into the inaccessible area
/🆑
2022-12-25 21:26:58 +00:00
Andrew
0818d6ae4c Crafting/Cooking menu update (#71779)
## About The Pull Request

Updated crafting menu, adding a lot of new functions and recipes that
were not in the crafting menu before.

<img alt="cult"
src="https://user-images.githubusercontent.com/3625094/206009533-aec3a1dd-cbe5-45eb-8515-1b75fabb65c5.PNG">

<img alt="nH77dLyyGx"
src="https://user-images.githubusercontent.com/3625094/206009786-b6706f70-0599-40bf-b051-8f499de43abd.png">


![image](https://user-images.githubusercontent.com/3625094/206623881-12d8abfc-de5e-458e-a01c-3daac8dbe9bd.png)


https://user-images.githubusercontent.com/3625094/206009841-738e4a03-0660-45b7-8d83-15eeb6501967.mp4

## Why It's Good For The Game

It is easier to use, and it has a lot of recipes that were spread
throughout the game, some of which weren't even on the wiki.
Crafting and cooking now count about 1200 recipes in total, including
conditionally available ones.

## Changelog

🆑
qol: Rewrote the crafting/cooking menu UI
qol: Split crafting and cooking menus in two different menus
qol: Crafting is no longer blocking the entire UI, only the "Make"
buttons are disabled
qol: Added stack crafting recipes to the crafting menu
qol: Added cooking recipes that were absent in the crafting menu before
(tool recipes, machine recipes, reactions)
qol: Added option to search recipes by title
qol: Added option to filter recipes by required materials/ingredients
qol: Added food types to the cooking menu, highlighting diet of your
species (liked, disliked foods)
qol: Added total nutrition value of the result to the cooking menu
qol: Added option to filter cooking recipes by the food type of the
resulting food
qol: Added "Can make" category that lists all currently craftable
recipes throughout all categories
refactor: changed categories and reshuffled some items in them
code: Reagents now have default container to get an icon from the
reagent datum
code: Objects now have `desc_controls` var for OOC information about
mouse controls that are visible on examine, but not in the description
fix: Fixed alignment on many food icons
fix: Fixed missing icon for beef stroganoff
/🆑

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
2022-12-25 12:27:49 -08:00
MrMelbert
717e4f435c Quirks are passed an incoming client when applied, allowing quirks to read preferences in add and add_unique. Renders visual quirks on the preference menu dummy. (#72158)
## About The Pull Request

Closes #72141

Roundstart humans weren't in control of their mob by the time
`AssignQuirks` was called.
The call chain for roundstart goes `create_characters` ->
`equip_characters` -> `AssignQuirks` -> `transfer_characters`.
For latejoin, `create_character` -> `transfer_character` ->
`AssignQuirks`.

I could simply move around the call chain, but that feels much more
fragile and more liable to cause other issues to me. So instead, I
simply allowed add quirk to be passed a client, so that a client's
quirks can be applied to a mob they are not currently inhabiting.

In doing this, it became possible to show visual quirks on the prefs
dummy, like nearsighted glasses and heterochromia. So I put in a little
work to accomplish that as well.


![image](https://user-images.githubusercontent.com/51863163/209030560-58396d43-6ac2-40c5-b13f-1178dc8962fd.png)

Along side, some refactoring and documentation for quirk datums. 

## Why It's Good For The Game

People get what they expect on roundstart. 

## Changelog

🆑 Melbert
qol: The preview dummy in the preferences menu now shows some visual
quirks, like Heterochromia or nearsighted.
fix: Fixed some quirks which read a preference roundstart not applying
the preference.
refactor: Refactored some bits of quirk datums and the quirk application
process.
/🆑

Co-authored-by: Time-Green <timkoster1@hotmail.com>
2022-12-24 12:32:13 +00:00
LemonInTheDark
daf0617e7b Fixes turfs on centcom getting weird atmos adjacent turfs. (#72173)
## About The Pull Request

We compare the current_cycle var against time using <= But current_cycle
defaults to 0, so when we compare with a 0, it breaks

Let's just start with -1 yeah?

Fixes #72170

This is an old bug, I got bullied about it and then just... forgot
because my head is empty. Fixed now.
2022-12-24 13:17:01 +01:00
NamelessFairy
016e862e75 Gives admins the ability to enable hostile environments at will. (#72018) 2022-12-23 08:17:49 -08:00
iwishforducks
547177b135 Pride pin quirk + pins can be infinitely reskinned (v2) (#72143)
## About The Pull Request

Neutral pride pin quirk added. Pride pins can be infinitely reskinned
now. Changes "sexuality" to "pride" in description of pin.

## Why It's Good For The Game

Pride pins are cute and having to buy them every round is a chore. Pride
pins are purely cosmetic and have no reason to be locked into only being
reskinned once.

## Changelog

🆑
add: Pride pin quirk! Start the shift off with a pride pin in-hand.
qol: Pride pins can be infinitely reskinned now.
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-12-23 09:30:16 +13:00
Zephyr
b182d6f320 Lazy Template Loading - Nukie/Wiz (#71785)
## About The Pull Request

Removes the nukie base and wizard den from the base centcom map. They
are instead now lazy loaded as required.
To make a new lazy load template is fairly simple, make a map, allocate
an area for it, and place a marker at the bottom left corner of that
area. I have it check an area to ensure that if someone makes the map
larger than expected but doesn't account for the template allocation it
doesn't overwrite stuff without warning

[Replaces some improper CHECK_TICKs with
MAPLOADING_CHECK_TICKs](c7fbca9148)

Atom init has already been tripped by the time we get to this portion of
the loading, so if we don't use the right check tick, we will
potentially block unrelated init attempts. This is bad. (Lemon edit, I
want this in the commit desc)

## Why It's Good For The Game

Cuts down on init times.
Closes https://github.com/tgstation/dev-cycles-initiative/issues/17
## Changelog
🆑
admin: New mapping verb to load lazy templates as needed. In your admin
tab under the Mapping category.
/🆑
this isnt technically player visible, so not sure it needs a changelog

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2022-12-21 00:33:30 -08:00
Fikou
febdb61e01 makes status tab use signals, thirds the delay between updates (#72002)
## About The Pull Request
status panel for carbons and humans instead of hardcoding stuff, uses
signals (borg material storage too)
removes combat mode indicator in status tab from xenomorphs which have a
button for it, but adds it to simplemobs, since they dont have a visual
indicator
adds status tab stuff to basic mobs, i think they were missing
everything by accident
offsets unique status tab stuff for all mobs by a single line
the delay between updates is a third of what it was before, mainly to
make shuttle timers more accurate (approved by kyler)

## Why It's Good For The Game
much cleaner code, makes future implementations easy

## Changelog
🆑
qol: you can see your combat mode status as a simple or basic mob, and
you can see your health as a basic mob
qol: status panel updates three times as fast
/🆑
2022-12-16 09:56:49 -05:00
Rimi Nosha
c60b5575b4 TGUI Latejoin Menu! (#71531)
## About The Pull Request

Converts the latejoin menu to TGUI, and makes it give reasons for why a
job is unavailable instead of hiding it!

<details>
<summary>Cool Images!</summary>

<image
src=https://user-images.githubusercontent.com/106692773/205135570-c8b788f1-1ff0-4e6d-b53d-e2119317c37b.png>
<image
src=https://user-images.githubusercontent.com/106692773/205135598-2ac9e138-37dc-4baf-ae33-deb0990616cd.png>
<image
src=https://user-images.githubusercontent.com/106692773/205135609-ae6b840b-40b5-4248-bd30-5fdadd6582f2.png>
<image
src=https://user-images.githubusercontent.com/106692773/205135615-d8997834-f433-48ee-8763-274e306b521b.png>



</details>

## Why It's Good For The Game

TGUI menu good, yes?
## Changelog
🆑 RimiNosha
qol: The latejoin menu is now TGUI!
qol: You'll also be able to see why you can't join a job, instead of it
being invisible!
code: Department UI colors have changed slightly. This will only affect
the latejoin and nations UIs.
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2022-12-09 16:34:34 +02:00
Mothblocks
8ace31bde4 Allows for offloaded tests to be focused (#71719)
Focusing a test through TEST_FOCUS allows you to only run that one test.
It's very useful for developing. However, we have a bunch of offloaded
tests in `#ifdef UNIT_TESTS` that would not be focused. This changes it
so that those tests will now only run if either no test is focused, or
if their specific "focus only" test is focused.

This is done through a `PERFORM_ALL_TESTS` macro that replaces the
`#ifdef UNIT_TESTS`. This is completely free because `if (FALSE)`
constant folds.

Hide whitespace mode recommended.
2022-12-07 02:58:33 -08:00
Kylerace
293e85f94b fixes & increases SSinput click delay threshold & moves it and average_click_delay to deciseconds (#71520)
## About The Pull Request
theres an issue with SSinput calculating the average_click_delay that
made it skip queuing clicks much faster than it should have. now it
should work. also moves everything to deciseconds for consistency
(except for the statpanel display, which changes it to per second). also
i increased the click delay threshold to 1 tick in deciseconds because
really we should only be refusing to queue if SSinput is being skipped
for whatever reason or each tick is receiving massive non input overtime
## Why It's Good For The Game
feex queuing clicks to lower overtime when the server is overloaded
## Changelog
🆑
fix: queuing clicks should work correctly now
/🆑
2022-12-06 00:59:11 -08:00
John Willard
f00ca62d08 Adds a modular computer subsystem to shift modPCs away from radios (#71732)
## About The Pull Request

Adds the modular computer subsystem which is meant to replace mod PC's
reliance on networks and radios, specifically the network subsystem, the
ntnet interface, and /datum/ntnet. This PR removes station_root ntnets
entirely, but I tried to keep it small.

This PR also removes a ton of unused vars and defines, such as NTNet
channels that were unused (peer2peer and systemcontrol), atmos networks
(as they were removed a while ago) and NTNet var on relays (its stated
purpose is so admins can see it through varedits, but that's useless now
that it's a subsystem)

I also removed ``setting_disabled`` as a thing the RD can do, it turned
off ALL ntnet systems. However, this was when there were 4 different
ones, now that there's only 2 I thought it was redundant and he could
just click 2 buttons to close them.

## Why It's Good For The Game

``/datum/ntnet``, ``/datum/component/ntnet_interface``, and
``/datum/controller/subsystem/networks`` are all old-code messes that
depend on eachother and is hard for people to understand what exactly it
adds to the game. 90% of its features is allowing the Wirecarp app to
see all the ruins that spawned in-game, which I don't think is something
that we even WANT (why does the RD need to know that oldstation spawned?
Why should they know this anyway??)

This hopefully starts to simplify networks/ntnet to make it easier to
remove in the future, because surely there are better alternatives than
**this**

## Changelog

🆑
refactor: Modular computers NTnet and applications run on its own
subsystem, please report any new bugs you may find.
/🆑
2022-12-06 00:29:31 -08:00
John Willard
deed2e23a7 Canisters are purchasable at cargo again (#71701)
## About The Pull Request

Checking the initial pack's contains did not work for canisters because
they were manually given a contains by ``generate_supply_packs()``, so
they were skipped over when creating supply packs.

## Why It's Good For The Game

Canisters can now be ordered again.

Closes https://github.com/tgstation/tgstation/issues/71679

## Changelog

🆑
fix: You can now order canisters again.
/🆑
2022-12-06 00:11:32 -08:00
Mothblocks
6dff45d977 Micro-optimize icon smoothing subsystem, cutting down more than 50% of its init time (about .8s drop on local, more on prod) (#69741)
With atoms now being 50% of the init time instead of ~80%, I've decided to poke around other subsystems.

Unfortunately they're not straight forward at all and extremely boring. bitmask_smooth() in particular is just a big proc that is called ~60k times, so I made some adjustments to its macro to reduce ops.

I removed code that looped over two entire Z-levels to find things to smooth, added by e2dd404, at a time before the initialize system. This doesn't have huge gains since it just defers to the queue anyway, but it still shaved off 0.1-0.2s on local.

I removed update_appearance(~UPDATE_SMOOTHING) from something since the person who added it doesn't remember why and it doesn't appear to do anything. Lemon thinks it's something to do with emissives, but I tested with neon carpet and it seemed to work fine.
2022-12-06 08:55:12 +13:00
MrMelbert
329921639a Rewrites how action buttons icons are generated, makes them layer nicer. Allows observers to see a mob's action buttons. (#71339)
## About The Pull Request

- Rewrites how action button icons are generated.
- Prior, generated an action button icon was fairly simplistic and
didn't allow for many changes. Someone recently added the option for
overlays to be generated over action buttons, but the framework was very
weak.
- Now, action button icon generation is split across multiple procs,
like atom icon updates.
      - The background of action buttons are underlays
- The actual icon of the action button is the icon and icon state of the
action button movable
- The rim / border of the button is an overlay, layered overtop the
button.

- Allows observers to see what action buttons a mob has. They even
update in real time! And no, the observers cannot click on them.

## Why It's Good For The Game

- Runechat text of action buttons are no longer hidden behind the actual
icon. This was very ugly with cooldown actions, as the cooldown text was
hidden behind a lot of spell icons.
- Cuts down on a lot of icon duplication. 
- Gives much finer control over action button icons
- Saves a bit of processing from generating full action button icons
when not necessary. Not implemented in many places, but is in some.


![image](https://user-images.githubusercontent.com/51863163/202816617-342e87e6-2cc6-488e-9af2-4b2053dc3dc6.png)


![image](https://user-images.githubusercontent.com/51863163/202816604-da8d4821-0e2b-45af-b289-7442367f98ce.png)

## Changelog

🆑 Melbert
add: Observers can now see what action buttons an observed mob has. No,
you can't click them. And no it doesn't show EVERY action.
refactor: Refactored how action button icons are generated. Some actions
will now use a colored border when active instead of just turning green.
Cooldown text will also appear on the top layer of actions too. If you
see any funky lookin' icons (namely their borders), let me know.
refactor: Bluespace Golem's teleport action is now a cooldown action.
fix: Construct actions go to the middle of the screen like expected. 
/🆑
2022-12-03 19:01:08 -08:00
Rhials
e10ff7d8f4 Admins can now add footnotes to the roundstart command report (#71647)
## About The Pull Request

Admins now have a verb to add footnotes to the roundstart threat report.
These messages can be signed, and multiple can be submitted at once.


![image](https://user-images.githubusercontent.com/28870487/205114744-32056a6d-3528-48b3-8365-14594cfc8d71.png)

(If no footnotes are submitted, the report does not display the
"additional notes" section)

This ALSO adds a verb to delay the roundstart threat report
indefinitely, to give some extra time. If you turn it off, be sure to
toggle it back on when you're done!

## Why It's Good For The Game

Gives admins a way to set the tone for a shift, give IC advisory on
stuff, bully the command players, or just add some flavor to the report.

We already give these chuckleheads enough platforms to shitpost from.
What's one more?
## Changelog
🆑
admin: new admin verb -- Command Report Footnote. Lets you attach a
signed message to the roundstart command report.
admin: new admin verb -- Delay Command Report. Lets you delay the
roundstart command report indefinitely.
/🆑
2022-12-03 12:44:06 -08:00
John Willard
2425531eb2 Removes tablets (not PDAs) entirely. (#71507)
## About The Pull Request

**Comes with an UpdatePaths!**

Removes the tablet subtype, PDAs now replaces them entirely.

Nukie and Silicon tablets are now subtypes of the PDA instead, while
contractor ones were removed entirely as they didn't do anything and
were unused (though it wouldn't be hard to re-add).

Nukie PDAs are now the only type of PDA that uses modular_tablets.dmi,
which is just larger icons of modular_pda. Each application requires an
icon state in both of these, for 2 different sizes, which makes it
annoying to make new applications, especially if it can also run on
computers/laptops.

### Icons

Because Silicon tablets are now a subtype of PDA, they use PDA icons
instead of tablet ones. Luckily for us, they already exist in code.

![image](https://user-images.githubusercontent.com/53777086/203876575-56eb1593-774c-47c6-8e7d-491a7805f28c.png)

AI's don't use a tablet icon though, so they aren't affected.

## Why It's Good For The Game

There's very little difference between tablets and PDAs, PDAs overshadow
them in every single way, so at this point I don't see why we should
have both of these, and if you compare the two in usefulness and actual
in-game use by players, it's a no-brainer than the item all players get
roundstart and comes with a messenger should be the one we go with.

Also as said in the about section, when making an app you would need to
make icon states for the program running for all hardware it can run on,
which is Computer, Laptop, PDA, and Tablet.

Laptop is just a smaller computer icon
PDA is just a smaller tablet icon

However, you can't simply shrink the size of the icon, instead you have
to completely resprite the same app icon FOUR TIMES for it to not
bluescreen on all these different devices.

<details>
<summary>
Here's examples of it
</summary>
Computer (NOTE: *They share the same icon file as regular computers*)
<img
src="https://user-images.githubusercontent.com/53777086/203876801-486a8054-489a-4983-bdad-a2599b4dc379.png"/>
Laptop
<img
src="https://user-images.githubusercontent.com/53777086/203876333-58e5d135-f4c6-4a02-8948-1df771e294a4.png"/>
Tablet
<img
src="https://user-images.githubusercontent.com/53777086/203876352-816c7fb1-c681-40b9-99e0-052f49632c7f.png"/>
PDA
<img
src="https://user-images.githubusercontent.com/53777086/203876358-1cf7253d-3c6a-456a-8133-ebf7f0351637.png"/>
</details>

If we wish to help in simplifying this, we should remove tablet icons
entirely, which means 1 less icon to worry about. To do this, we'd need
to resprite nukie PDAs, however I am very much not a spriter and never
tried GAGS, so I'll leave it to someone else to do.

## Changelog

🆑
del: Tablets are now removed, PDAs are now the base 'tablet'. Silicon
and nukie tablets are now PDAs.
/🆑
2022-12-02 00:15:14 -08:00
John Willard
fd19f6d5a0 The Mining vendor now works like the Chef produce console (has to go through Cargo) (#71023)
## About The Pull Request

Now comes with a Hackmd: https://hackmd.io/ImTe5FLeTgmI7spTWKBaFQ?view

In-game screenshots:


![image](https://user-images.githubusercontent.com/53777086/199602671-a604c6da-fec0-487d-b67e-eb0e4380e4d6.png)

![image](https://user-images.githubusercontent.com/53777086/199602695-8d7afb20-3b6c-467f-ac78-37de03dc20d2.png)


![image](https://user-images.githubusercontent.com/53777086/199725350-b01c4ddd-3fec-4288-a698-02daf91f787b.png)

Removes the old Mining vendor console and all its bad code. Instead, the
chef produce console was generalized and a NEW mining vendor is a
subtype of it. If they try to Express this console, it will be 1.5x the
mining points (compared to 2x for the Chef produce console atm), so it
is technically possible, but it is still better to order it through
Cargo.
Different to the Kitchen crate, this one is a private order by the Shaft
Miner, using mining points instead of Credits. Cargo CAN emitter it
open, but I think that's an acceptable risk with all crates. As shown in
the screenshot, Cargo will immediately know who ordered the items so
knows who to call to pick it up when needed.

This also means Shaft Miner's vendor is now categorized somewhat. I
tried my best to make sense out of it but some items really don't make
sense (laser pointer, soap...)

I split the different sections of orderable items into different files
for better management, and de-hardcoded it and its TGUI to make it
easier for anyone who wants to add more to it.
I also made the produce console use paths and added ways 'categories' to
produce consoles, which indicates which sections you should and
shouldn't be allowed to see.
https://github.com/tgstation/tgstation/pull/71007 already did part of
this but it isn't merged yet so :/

Free golems are mostly unaffected by this. Their console only works in
express mode and doesn't increase the prices for it. The only downside
is the cooldown.

I still have some things to finish on this PR so it'll be left as draft
until at least tomorrow.

## Why It's Good For The Game

https://hackmd.io/ImTe5FLeTgmI7spTWKBaFQ?view

1. A large problem currently with Miners is that they don't interact
with the station, this will at least help integrate them more into their
own department, by making the cost of their equipment cheaper if they
bother to actually go through Cargo for their gear.

2. It also means that a non functional Cargo would affect Shaft Miners
too, and as they have access to the shuttle, maybe we can expect some
Miners to pick up the slack if needed.

3. The old mining vendor was the ONLY vendor in the game that had
infinite stock. It doesn't need a refill or anything like any other
vendor, and every other vendor uses credits, mining points is just shaft
miner credits. Why are they an exception? At least being ordered through
the shuttle makes sense.

4. It opens the QM being able to see easier what Miners are doing, and
prevents miners from hiding on Lavaland to do nothing but hunt fauna if
they were meant to be demoted or something by the QM. Basically, gives
the QM more control over the people working in their department.

## Changelog

🆑
add: Shaft Miner's equipment vendor now orders their equipment through
the Cargo shuttle, though you can spend 1.5x the points to express it,
making it a Mining version of the Chef's produce console, with a
weakened express tax.
/🆑
2022-11-30 19:29:28 -08:00
GoldenAlpharex
5db421281c Undertile Element Logic Refactor, or Catwalks Aren't Affected by Ambient Occlusion Anymore (#71555)
## About The Pull Request
It was bugging me how catwalks would just be stuck rendering on the game
plane in order to be above the pipes and all the other underfloor
objects, because it meant that they stood out due to being affected by
ambient occlusion.

So I decided to change that, and the best change I could come up with,
was to refactor the logic of `/datum/element/undertile` in order to
actually allow us to do exactly what we wanted by having three different
states of underfloor visibility, which in turn allowed me to slap
everything that wasn't accessible on the floor plane rather than
whatever plane they were on, effectively making it so catwalk tiles
wouldn't need to be on the game plane anymore. :)

Also fixes https://github.com/tgstation/tgstation/issues/63590 while I'm
at it :)

## Why It's Good For The Game
Seeing ambient occlusion on catwalks make them stand out in a jarring
way, now that won't be the case anymore!

Now, instead, you get something like this, which _absolutely_ looks like
it fits in!

![image](https://user-images.githubusercontent.com/58045821/204106823-95b77a6b-b9c1-4494-b2f8-3b586c42428c.png)


## Changelog

🆑 GoldenAlpharex
refactor: Refactored the way the undertile component works, to allow it
to have a bit more granularity as to when it's meant to be covered, but
still visible, like for catwalks!
fix: Catwalks no longer are affected by ambient occlusion, and now
properly feel like actual floor tiles.
/🆑
2022-11-30 14:02:54 -08:00
CapybaraExtravagante
1b8bd51ec2 Allows datum AI to create new plans while a plan is still executing (#71596)
## About The Pull Request

In some cases, you need to perform behaviors that can occur ontop of
different behaviors. E.g. "I need to continiously spit out foam while
moving to a point". If these behaviors are put separetely, it is
difficult to determine that the behavior for spitting out foam needs to
end. And in the current code, aslong as it has not ended, the plan will
never end. So once the AI reaches the point it would stand still at the
end and spit out foam unendingly.

To work around this I've made it so behaviors can be set to allow
planning while they run if they have the
AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION flag. If all remaining behaviors
on a controller have this flag, a new plan is made. If this plan is the
exact same as the plan that was currently being performed, nothing
happens. But if the plan is different, the current one is ended and the
new plan is executed. This means situations like this are handled
gracefully now. This will be required for basic bots.

## Why It's Good For The Game

More graceful handling of "continous" behaviors! :)

## Changelog

🆑 Capybara Holly
refactor: Allows datum AI to create new plans while a plan is still
executing
/🆑

Co-authored-by: Capybara <Capybara@CapybaraMailingServices.com>
2022-11-29 14:31:53 -08:00
LemonInTheDark
29d766e25f Fixes attempting to offset floating planes (#71490)
## About The Pull Request

This is a dumb idea, and leads to fucked rendering on occasion

## Why It's Good For The Game

Fixes another portion of #70258, a player will no longer have a hidden
antag hud if they move down a z level after getting an antag. We were
trying to offset the floating plane of their image, and it went to shit.
Also fixes a bug with observers not having antag huds for the combo hud
to see. We were only giving them one on mind.on_transfer, rather then on
mind assignment. I hate mindcode
2022-11-25 00:31:05 -08:00