Commit Graph

112487 Commits

Author SHA1 Message Date
san7890
f47b175fad Makes the Start Screen Look Better (#85928)
## About The Pull Request

I think it's been related to the recent DDOS's but looking at the
non-connected wall turf overlay while loading into the game and waiting
for the config-loaded start screen to load is just ugly as hell on
production servers. So, let's fix this in a way that we really should
have done pre-wallening: using cordons.

Cordons just give us a fully solid white background and are probably
faster to load than the indestructible turfs (claim unverified), but
visually it just looks better if an admin deletes the start screen for a
laugh or just having a nice solid black background while the lobby
screen loads in instead of the weird noncongruous turf type we made.

<details>
<summary>
Photos
</summary>

This is what the lobby screen looks like if the image is deleted/while
it's loading in:

![image](https://github.com/user-attachments/assets/e435a454-6b12-41f2-8283-9141e6328bc7)

This is what it looks like when zoomed out on the map after deleting the
sprite. will just appear as world border to any mobs that venture out
into the wastes.

![image](https://github.com/user-attachments/assets/c1545153-cb01-41f4-9403-3fdebd764f1c)
</details>

## Why It's Good For The Game

Looks way cleaner than the current solution, can discard a needless turf
type for something that looks nice. We were already punching a hole in
the CentCom z-level so why not just make it fully more obvious.

I left the `misc/start` area as-is in case admins still want to plop
down schenanigan meme buildings in the lobby. I also made it so that
deleting the lobby screen baseturfs to the cordon type, so you aren't
left with an ugly hole to space in the title screen.
## Changelog
🆑
fix: The area of the CentCom Z-Level dedicated to the Lobby Screen
should look far better now, with a solid black title screen should the
lobby image not load in/get deleted.
/🆑
2024-08-18 21:24:11 +02:00
orange man
367376cdba Automatic changelog for PR #85924 [ci skip] 2024-08-19 01:37:04 +12:00
TwistedCicrularConvexLens
886d1aecbb Fixes Clarke ore box breaking upon collecting boulders (#85924)
## About The Pull Request

Ever since Clarkes could pick up boulders they've been broken if you
ever collected one. The UI would break and all your precious minerals
would be trapped inside the Clarke, only being obtainable if you broke
the Clarke itself.

This also updates the Clarke Storage to differentiate by ore name rather
than icon, as otherwise the lower quality boulders would be mixed with
normal boulders with no way to differentiate them in the UI.


## Why It's Good For The Game

Fixes https://github.com/tgstation/tgstation/issues/84364
Before:
<details>
  <summary>Before</summary> 


https://github.com/user-attachments/assets/f90daf35-733a-42bd-8af5-7e6712f09fba

</details>
<details>
<summary>After</summary> 


https://github.com/user-attachments/assets/4510803c-6dee-403e-a051-966a8a66c17c



</details>


## Changelog

🆑 TwistedSilicon
fix: Clarkes will no longer become unable to dump ores upon picking a
boulder up. Mine away.
/🆑
2024-08-18 15:36:14 +02:00
orange man
3a42b9bad5 Automatic changelog for PR #85918 [ci skip] 2024-08-19 01:31:10 +12:00
ArcaneMusic
b857200de9 Adds drawing chalk outlines on dead mobs, white crayons are now called sticks of chalk (#85918)
## About The Pull Request

![image](https://github.com/user-attachments/assets/1c698b33-3cd9-477c-b7a0-4a1ebb009122)
*The Miami Mutilator is at large once again. Thank god we have such
hardboiled detectives as Manny Pardo on the case.*

This pull request allows for players to use white crayons, which have
now been renamed to sticks of chalk, to generate outlines of dead or
"dead" bodies found throughout the station in an attempt to let
detectives actually set up crime scenes as opposed to, more typically,
just causing them.

Players will attempt to draw a chalk outline if the target is a mob and
the mob is dead (or fake-dead), using a single charge of the
crayon/chalk. Also, adds a quick macro so that we can get the proper
left/right orientation of the dead mob for reference.

## Why It's Good For The Game

Detective should have more thematic, simple ways to organize crime
scenes in-round, and what better way to do that then through existing
items and mechanics that we already have. Also, I was 100% shocked to
learn that these have always been white crayons as opposed to sticks of
chalk, which certainly seems odd. In essence, this change doesn't really
let you do anything "new", but just makes it easier and simpler to do so
in a regular round without nearly as much fiddling.

This mechanic exists exclusively within the afterattack of sticks of
chalk as opposed to all crayons for thematic reasons, but I'm not 100%
sold on that and it would be simple to move over to all crayons if
people feel strongly about that.

## Changelog
🆑
add: White crayons (Renamed to Sticks of Chalk) may now be used on dead
bodies to draw a body outline onto the ground easily.
/🆑

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2024-08-18 15:29:56 +02:00
orange man
d326e61157 Automatic changelog for PR #85271 [ci skip] 2024-08-19 01:07:14 +12:00
Ghom
ff3b73dc82 Refactored the fish case and examining fish. New bluespace fish case to fit large fish inside a backpack. (#85271)
## About The Pull Request
I've refactored the FISH_SAFE_STORAGE trait into an element, mainly
because there were a few problems with how it worked: It wasn't stopping
hunger from raising, ditto with the breeding wait, and it offered no
healing whatsoever, which I find kind of a bummer. The new element will
keep the fish from getting any hungrier or ready to reproduce and will
heal them up to 65% of their base health.

Also, I've added a new bluespace fish case as a techweb design, found
along with other stuff in the advanced fishing node, though if you want
I can move it to a bluespace node. This should make it possible to
reasonably store and carry around larger fish.

Examining a fish will no longer give out readings on weight and size if
you haven't at least attempted fishing once (you can get to novice level
in less than a minute). While examining a fish with apprentice level or
higher will also give readings on the general conditions of the fish (is
it starving? drowning? has it lost a considerable chunk of health?). The
fishing skillchip also gives you these traits.

I've also converted two fish variables into traits, because fish have
waaaay too many variables. and gave some topdown shading to the
pre-existing fishbox sprite.

## Why It's Good For The Game


## Changelog

🆑
add: Added a bluespace fish case to the advanced fishing node.
balance: Fish cases will keep a fish from getting hungrier or ready to
reproduce, while also healing it up to 65% health.
balance: Examining a fish with zero fishing skill whatsoever won't give
a reading on its size and weight. Conversely, examining one with the
skill leveled two times will give general information on if it's
starving, sick, hungry, or dead.
/🆑
2024-08-18 06:06:17 -07:00
orange man
5d2f34155c Automatic changelog for PR #85919 [ci skip] 2024-08-19 01:00:12 +12:00
SmArtKar
80c3a2de92 Updates worn tank sprites (#85919)
## About The Pull Request


![image](https://github.com/user-attachments/assets/bb273180-bfe8-4c1f-a09a-fab6555c8fe9)

Updates all worn tank sprites to fit new tanks/jetpacks

## Why It's Good For The Game

They're rather crunchy and outdated, their palette doesn't fit with
current tanks either

## Changelog
🆑
image: Gas tanks got updated worn sprites
/🆑
2024-08-18 14:59:42 +02:00
orange man
140e55561e Automatic changelog for PR #85923 [ci skip] 2024-08-19 00:57:24 +12:00
LemonInTheDark
09d75845dd Visually shifts south wallmounts down instead of physically (#85920)
This wasn't intended it's just carryover from when I last touched this
macro
2024-08-18 14:57:17 +02:00
norsvenska
568b1f6f0d Removes the slowdown from the CentCom officer's beret (#85923)
## About The Pull Request
Following the PR that split the slowdown between spacesuits and helmets,
the CentCom special ops 'space suit' (officer's beret and winter coat),
which previously had no slowdown, gained a slowdown on the beret only.
Considering it is an adminspawned outfit and cannot be found anywhere,
there shouldn't be any balance issues with it.
## Why It's Good For The Game
The CentCom winter coat had its slowdown removed, why wouldn't the
beret? Seemed like an oversight from the original PR.
## Changelog
🆑
qol: The CentCom officer's beret has had its slowdown removed to be in
line with the winter coat.
/🆑
2024-08-18 14:57:02 +02:00
orange man
80381d29c6 Automatic changelog for PR #85922 [ci skip] 2024-08-19 00:56:46 +12:00
ArcaneMusic
9ef722ca61 Rewires the runtime APC on the map [NO GBP] (#85922)
## About The Pull Request
Oops! A minor mapping change made it's way through on runtime unwiring
the APC on runtime as a consequence of some directional wallmount
changes I did. This moves the APC back to the top left corner with a
wire connection yet again.

![image](https://github.com/user-attachments/assets/7aa8a5ff-4ffd-4e61-8810-654679c3d6fe)


## Why It's Good For The Game

Prevents runtime station from running out of power during standard
testing.

## Changelog

🆑
fix: Runtimestation's APC is now connected to the grid again.
/🆑
2024-08-18 14:56:25 +02:00
orange man
fa52b475f5 Automatic changelog for PR #85338 [ci skip] 2024-08-19 00:54:38 +12:00
r3dj4ck0424
23929b39b6 Adds a new cytology-focused vending machine to the science area (#85338)
## About The Pull Request
Creates a new vending machine in the science area, called the CytoPro
and filled with cytology gear (and a few things that might be useful in
xenobiology). This vending machine is added to the cytology labs of all
maps.
Here's how it looks in-game (with the panel screwed open, I was hacking
it to test at the time)
![CytoPro -
Metastation](https://github.com/user-attachments/assets/695c12e6-ee63-47ff-b885-a3c0ca029afc)
The current product list is shown below.
![CytoPro -
Products](https://github.com/user-attachments/assets/95f3cf47-4f2e-4988-958c-1064584d41f6)
![CytoPro -
Contraband](https://github.com/user-attachments/assets/e7918f44-588d-4acd-9025-b12d3da08602)
I've put them in the locations shown below.
Birdshot:
![CytoPro -
Birdshot](https://github.com/user-attachments/assets/8f0eba2e-d118-481d-8122-04ab5815fbb8)
Delta:
![CytoPro -
Deltastation](https://github.com/user-attachments/assets/176a4207-e3cf-4a17-8b19-c20bbce86ff0)
Icebox:
![CytoPro -
Icebox](https://github.com/user-attachments/assets/8eda8bd2-cb88-4adf-bb9e-b54b76281f8c)
Northstar:
![CytoPro -
Northstar](https://github.com/user-attachments/assets/0abec84d-9343-4d28-81b9-7f6cf9efa4f7)
Tram:
![CytoPro -
Tramstation](https://github.com/user-attachments/assets/7a27aa08-655c-468b-a690-bd031b02dfb4)
Wawa:
![CytoPro -
Wawa](https://github.com/user-attachments/assets/6a1dc37a-9834-4613-8cfe-0634184c3caa)

**Feedback on more products welcome!**

## Why It's Good For The Game
Currently, there aren't a lot of backup sources for cytology gear. Most
maps spawn with a single cytology closet containing the necessary gear,
and good luck to you if someone makes off with the supplies before you
get there. In addition to adding a source of backup cytology equipment,
I'm hoping that this new vendor makes cytology quicker and more
accessible.
Plus, science really needed a new vending machine, and I think the
purple-white colour and stylized microscope are neat.
Since the cytology lab is usually located very close to the slime pens,
the addition of monkey cube boxes, xeno bags, and bio suits also helps
support xenobiology projects. If the 14 cubes supplied at round start
are insufficient (which they really shouldn't be) then they can
supplement their supply with the boxes in the CytoPro.
## Changelog
🆑
add: A new vendor of cytology equipment, the CytoPro, is now available
in your local science department!
/🆑
2024-08-18 14:54:19 +02:00
orange man
f627dcc401 Automatic changelog for PR #85949 [ci skip] 2024-08-18 22:47:33 +12:00
SmArtKar
1a64f198ff [NO GBP] Examine balloons for wall-mounted buttons no longer inflate themselves infinitely (#85949)
## About The Pull Request

Closes #85948
kids, don't copypaste your code

## Changelog
🆑
fix: Examine balloons for wall-mounted buttons no longer inflate
themselves infinitely
/🆑
2024-08-18 10:47:13 +00:00
orange man
5d5cf0ac43 Automatic changelog for PR #85917 [ci skip] 2024-08-18 14:24:23 +12:00
SmArtKar
f5e15535b0 Random spraypaint setting now properly paints large decals (#85917)
## About The Pull Request

Found by Melbert on discord, caused by paint mode not applying when
painting random decals.

## Changelog
🆑
fix: Random spraypaint setting now properly paints large decals
/🆑
2024-08-18 04:22:18 +02:00
Changelogs
db4ff7eaa4 Automatic changelog compile [ci skip] 2024-08-18 00:30:54 +00:00
orange man
0ac8398d04 Automatic changelog for PR #85914 [ci skip] 2024-08-18 12:19:14 +12:00
SmArtKar
129cea4dfb Stat change is now logged for living mobs (#85914)
## About The Pull Request

Apparently this wasn't a thing, somehow. Adds stat change logging to
combat log for admins.

## Why It's Good For The Game
Admins want this for some reason, got requested in coderbus.

## Changelog
🆑
admin: Stat change is now logged for living mobs
/🆑
2024-08-18 02:15:39 +02:00
orange man
9d460c9753 Automatic changelog for PR #85913 [ci skip] 2024-08-18 11:34:03 +12:00
SmArtKar
624222483d Fixed elephant graveyard active turfs (#85913)
## About The Pull Request

3 incorrect plating types caused 100 atmos diff turfs

## Changelog
🆑
fix: Fixed elephant graveyard active turfs
/🆑
2024-08-17 19:30:00 -04:00
nyozzl
09b3fb7b7b fix pr for my lava ruin (#85903)
i fixed the issue i think.... hope new map instead of old version
generate


![image](https://github.com/user-attachments/assets/1384eb8d-7741-41e5-b467-bc0c9e0be797)
2024-08-18 01:09:41 +02:00
orange man
f10f1a2029 Automatic changelog for PR #85877 [ci skip] 2024-08-18 10:50:07 +12:00
Ghom
24e555c1bb Fixes lobby buttons from station traits having no name and being unexaminable. (#85877)
## About The Pull Request
Apparently, that's why you couldn't examine the button at all. For some
reason, this is only the case with the lobby buttons tho, as you can
examine other nameless atoms, even though they still don't show up in
the right-click context menu.

## Why It's Good For The Game
Fixing a long-standing issue with lobby buttons.

## Changelog

🆑
fix: Fixes lobby buttons from station traits having no name and being
unexaminable.
/🆑
2024-08-17 16:49:49 -06:00
Kyle Spier-Swenson
4d1639b04c Revert "Assorted changes to job assignment code and logging." (#85929)
Reverts tgstation/tgstation#85308

![image](https://github.com/user-attachments/assets/eb74d378-29da-44f0-bd14-89c95654cb4e)
2024-08-17 15:26:08 -07:00
orange man
4ce1f048fe Automatic changelog for PR #85927 [ci skip] 2024-08-18 09:19:41 +12:00
orange man
474c678f18 Automatic changelog for PR #85896 [ci skip] 2024-08-18 09:19:33 +12:00
Jordan Dominion
8dff5c57fe Add a helpful messages to users when InstallDeps.sh inevitably fails due to lack of perms (#85908)
People always trip on this

---------

Co-authored-by: san7890 <the@san7890.com>
2024-08-17 15:18:21 -06:00
MrMelbert
4e0b1360bc Fix exploit to get almost-infinite heretic points (#85927)
## About The Pull Request

Surprise surprise another input stall exploit

## Changelog

🆑 Melbert
fix: Patch exploit allowing nigh-infinite heretic points
/🆑
2024-08-17 15:17:35 -06:00
MrMelbert
2e8d13c771 [MDB Ignore] Makes Icebox Roughly Playable (#85896)
## About The Pull Request

Updates Icebox, also adds a few mapping touches to work with the new
Wallening.

Also adds a corpse trapdoor in medical into the morgue since I replaced
the stairs, and maybe some other things

## Changelog

🆑 Melbert
qol: Icebox now has a trapdoor from Medbay leading into the Morgue (for
corpses, of course)
/🆑
2024-08-17 15:16:36 -06:00
orange man
08c742d881 Automatic changelog for PR #85901 [ci skip] 2024-08-18 08:28:47 +12:00
orange man
2f78fe2001 Automatic changelog for PR #85904 [ci skip] 2024-08-18 08:28:30 +12:00
MrMelbert
6f0dd84a3d Splits wall layer into three (#85901)
## About The Pull Request

Turns 
`ON_WALL_LAYER`
into
`FLAT_ON_WALL_LAYER`
`ON_WALL_LAYER`
`HIGH_ON_WALL_LAYER`

Where `FLAT_ON_WALL_LAYER` is meant for lower-priority wall mounts like
signs and posters
`ON_WALL_LAYER` is default
and `HIGH_ON_WALL_LAYER` is for stuff that "hang over" the wall

Also makes the incident display actually wall mounted

## Why It's Good For The Game

I noticed this while doing mapping and I thought it was a really cool
effect


![image](https://github.com/user-attachments/assets/93f33d54-2cda-41d1-abe6-d2035e0284c7)

Unfortunately this effect was a coinflip because all wall mounts were on
the same layer. Sometimes it'd look like this


![image](https://github.com/user-attachments/assets/59c3c6a7-561f-4ef6-813b-3cd06b295372)

So this allows us to do this kinda stuff consistently. 
Also has the added effect of letting us "de-prioritize" stuff like
posters, so we can hang stuff *over* posters and signs, which could be
useful.

## Changelog

🆑 Melbert
qol: Some wall mounts will now consistently layer over others (light
switches and cameras, notably, should always layer above other mounts
like signs and status displays)
/🆑
2024-08-17 14:28:28 -06:00
Ben10Omintrix
1d905d4146 fixes ai controllers incorrectly idling when changing z level (#85904)
## About The Pull Request
ai controllers would have the wrong status when moving z levels

## Why It's Good For The Game
fixes ai controllers incorrectly idling when changing z level

## Changelog
🆑
fix: fixes ai controllers incorrectly idling when changing z level
/🆑
2024-08-17 14:28:10 -06:00
orange man
1c3a267356 Automatic changelog for PR #85308 [ci skip] 2024-08-18 08:28:04 +12:00
Timberpoes
1eef540054 Assorted changes to job assignment code and logging. (#85308)
## About The Pull Request

This PR does a couple of minor things:
Makes the job debug logging a bit easier to follow.
Minorly brings some SSjob code up to code standards, converting proc
names to snake_case and doing some otherm is cleanup.
Refactored some stuff into different procs, updated some comments.

And some major things:
Changes the job assignment logic.
Old behaviour
> Assign dynamic priority roles
> Force one Head of Staff (if possible)
> Assign all AIs
> Assign overflow roles (bugged in 2 ways)
> Shuffle the available jobs list once, at the start of the random job
assignment loop
> Pick and assign random jobs for random players from High prefs down,
with a priority on Head of Staff roles
> Handle everyone that couldn't be assigned a random job

New behaviour
> Assign dynamic priority roles
> Assign all Head of Staff roles to players with High prefs
> If no Head of Staff was made in the above way, force one Head of Staff
(if possible)
> Assign all AIs
> Assign overflow roles (fixed)
> Prioritise and fill unfilled head roles at each job priority pref
level, from High prefs down.
> Build a list of all jobs that each unassigned player could be eligible
for at the above pref level.
> Pick a job from that list at random and assign it to the player.
> Handle everyone that couldn't be assigned a random job.

In reality there should be little impact on overall job assignment, the
code changes read more as semantics. For example, the priority check for
filling Head slots will have the same candidate pool in both old and new
versions, but in the new version we're more clearly saying that Heads
are important and we want to prioritise filling them for the sake of
round progression even though the outcome in new and old is the same.

A key change will lead to an increase in assistants - Overflow fixes.

Currently the code block to do early assignments to the Overflow role
doesn't work - or works but not as you'd expect. The idea was is that
because enabling the Overflow role in the prefs menu is an On/Off toggle
that sets the job to High priority when enabled and prevents any other
High priority pref, players that have the Overflow role enabled will
**always** get it. It's their highest priority job with infinite slots.
So we do a pass right at the start to give everyone with the Overflow
role enabled that role and save us wasting time later on in random job
code giving them that same role but with more work.

The problem is the code for this only assigns the Overflow role to
people with it set to Low priority in their prefs, resulting in log
readouts like:
```
[2024-07-27 09:49:43.469] DEBUG-JOB: DO, Running Overflow Check 1
[2024-07-27 09:49:43.469] DEBUG-JOB: Running FOC, Job: /datum/job/assistant, Level: Low Priority
[2024-07-27 09:49:43.472] DEBUG-JOB: FOC player job enabled at wrong level, Player: Radioprague, TheirLevel: Medium Priority, ReqLevel: Low Priority
[2024-07-27 09:49:43.472] DEBUG-JOB: FOC player job enabled at wrong level, Player: Caluan, TheirLevel: High Priority, ReqLevel: Low Priority
[2024-07-27 09:49:43.473] DEBUG-JOB: FOC player job enabled at wrong level, Player: Caractaser, TheirLevel: High Priority, ReqLevel: Low Priority
[2024-07-27 09:49:43.473] DEBUG-JOB: FOC player job enabled at wrong level, Player: Apsua, TheirLevel: High Priority, ReqLevel: Low Priority
[2024-07-27 09:49:43.475] DEBUG-JOB: FOC player job enabled at wrong level, Player: Bebrus2, TheirLevel: Medium Priority, ReqLevel: Low Priority
[2024-07-27 09:49:43.475] DEBUG-JOB: AC1, Candidates: 0
```
Where nobody gets pre-assigned the overflow role because their prefs are
all set to the High priority from being toggled... Except wait a second,
some people have it at Medium priority when it should just be a No
Role/High Priority Role toggle?

And herein we meet a problem. My hypothesis is that traits and stuff
that change the overflow have allowed players to set the "ordinary"
overflow role of Assistant to Medium and/or Low priority.

This still shows as enabled in the prefs menu, but leads to an outcome
where a player with assistant enabled is assigned Cook instead.
```
[2024-07-27 09:49:47.775] DEBUG-JOB: DO, Running Overflow Check 1
[2024-07-27 09:49:47.775] DEBUG-JOB: Running FOC, Job: /datum/job/assistant, Level: Low Priority
...
[2024-07-27 09:49:43.475] DEBUG-JOB: FOC player job enabled at wrong level, Player: Bebrus2, TheirLevel: Medium Priority, ReqLevel: Low Priority
...
[2024-07-27 09:49:47.987] DEBUG-JOB: Running AR, Player: Bebrus2, Job: /datum/job/cook, LateJoin: 0
```

So players with the Overflow job pref set to Low (an unexpected state,
should be disabled or High) would be guaranteed to get that role if none
of the higher priority Head of Staff/AI/Dynamic roles took over via the
bugged "force overflow for people with the pref enabled" proc.

Players with the Overflow job pref set to High would be guaranteed to
get that role if none of the higher priority Head of Staff/AI/Dynamic
roles took over via the random job assignment code giving them their
Highest priority role thanks to the infinite job slots of the Overflow.

And players with the Overflow job pref set to Medium (an unexpected
state, should be disabled or High) would get Assistant if the shuffle
step of the available jobs list put Assisstant before any of the other
jobs they had prefs enabled for at Medium that weren't already filled,
otherwise they'd get another random job.

This code is now changed to ignore the priority the player has set when
looking for people to fill the overflow role. As long as it **is**
enabled, the player will get it unless they're forced into a dynamic
ruleset role (AI when malf rolls) or a Head of Staff role due to their
other prefs (they have RD set to med or low, and no other player has a
Head of Staff at high so they get randomly picked and miss the overflow
role).

This will increase the number of assistants in shifts where their pref
state has Assisstant in the bugged Medium priority, but doesn't change
it for bugged Low and not-bugged High/On priority.

On the other side of the coin, we have how the random jobs are picked.
They're kinda not random, and I noticed this reading the logs then
reading the code.

The list of available jobs to pick from is randomly shuffled - but only
**once**. All players pull from a list of jobs in the same order. So you
end up with a log block like this:
```
[2024-07-27 09:49:47.985] DEBUG-JOB: DO pass, Player: Pierow, Level:3, Job:Botanist
[2024-07-27 09:49:47.985] DEBUG-JOB: Running AR, Player: Pierow, Job: /datum/job/botanist, LateJoin: 0
[2024-07-27 09:49:47.985] DEBUG-JOB: Player: Pierow is now Rank: Botanist, JCP:0, JPL:2
[2024-07-27 09:49:47.986] DEBUG-JOB: DO pass, Player: Daddos, Level:3, Job:Botanist
[2024-07-27 09:49:47.986] DEBUG-JOB: Running AR, Player: Daddos, Job: /datum/job/botanist, LateJoin: 0
[2024-07-27 09:49:47.986] DEBUG-JOB: Player: Daddos is now Rank: Botanist, JCP:1, JPL:2
[2024-07-27 09:49:47.986] DEBUG-JOB: FOC job filled and not overflow, Player: Bebrus2, Job: /datum/job/botanist, Current: 2, Limit: 2
[2024-07-27 09:49:47.987] DEBUG-JOB: FOC player job not enabled, Player: Bebrus2
[2024-07-27 09:49:47.987] DEBUG-JOB: DO pass, Player: Bebrus2, Level:3, Job:Cook
[2024-07-27 09:49:47.987] DEBUG-JOB: Running AR, Player: Bebrus2, Job: /datum/job/cook, LateJoin: 0
[2024-07-27 09:49:47.988] DEBUG-JOB: Player: Bebrus2 is now Rank: Cook, JCP:0, JPL:1
[2024-07-27 09:49:47.988] DEBUG-JOB: FOC player job not enabled, Player: Redwizz
[2024-07-27 09:49:47.988] DEBUG-JOB: FOC job filled and not overflow, Player: Redwizz, Job: /datum/job/cook, Current: 1, Limit: 1
```

The list is shuffled into an order of something like `list("Scientist",
"Botanist", "Cook", "Sec Officer", ...)` then iterated over for each
player. So every random job selection goes:
> "Does Player1 have Scientist enabled and at the right priority? No?
Okay, Botanist? Yes? You get botanist."
> "Does Player2 have Scientist enabled and at the right priority? No?
Okay, Botanist? Yes? You get botanist."
> "Does Player3 have Scientist enabled and at the right priority? No?
Okay, Botanist has no slots left so we'll remove it from the list. Okay,
Cook? Yes? You get cook."
> "Does Player4 have Scientist enabled and at the right priority? No?
Okay, Cook has no slots left so we'll remove it from the list. Okay, Sec
Officer? ..."

This can lead to stacked individual departments if it gets randomly
rolled to the start of the list in the shuffle, and completely empty
departments if they end up at the end.

On high pop shifts this is probably less of an issue. Player prefs add
noise to this and as departments at the front fill up, those at the back
pick up some of the lower pref players.

But have you ever had a shift where there's just like... No fucking sec
even though there's tons of players? The logging (before I made changes
in this PR) was a bit ass, but my hypothesis there is that sec officer
was shuffled right at the end of the random job list, so every other
department was filled up before sec officers were picked.

To mitigate this, I made the list shuffle every single time the game
picks a random available job for the player. This should lead to a more
balanced selection of available jobs by avoiding situations where the
code is biased towards packing some departments by accident.
## Why It's Good For The Game

Overflow fixes mean people who go to their prefs and see the Overflow
Role is On will all have the same experience - They will be the Overflow
role.

More random random job selection should prevent individual departments
having a jobs be stacked when it would have otherwise been possible for
a more balanced selection but the code unintentially biased random
departments to be overstaffed and understaffed each shift.
## Changelog
🆑
fix: Having the Overflow Role set to On will properly ensure you get
that role at a High priority as intended by the game code.
fix: Job selection is now a little bit more random. Fixes an
unintentional bias in random job assignment that could lead to
feast-or-famine for roles where everyone is assigned one job and nobody
is assigned another job.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2024-08-17 14:27:45 -06:00
orange man
d3aa54d25f Automatic changelog for PR #85694 [ci skip] 2024-08-18 07:31:45 +12:00
orange man
933f7ff79c Automatic changelog for PR #85821 [ci skip] 2024-08-18 07:31:43 +12:00
jimmyl
3fc1503fbd portable gravity machine (#85694)
## About The Pull Request



https://github.com/user-attachments/assets/98aa2177-ee0f-48d0-bbd4-83d01e688b54


it makes gravity in a radius
you may order it from cargo
may take power from wire instead
## Why It's Good For The Game

good for like space bases and stuff

## Changelog

🆑
add: portable gravity unit, bought at cargo
/🆑
2024-08-17 21:12:38 +02:00
Zytolg
eb0c661bdd [BIRDSHOT] Wallening Pass (#85821)
## About The Pull Request

Updates many of the impacted items from the wallening on the Birdshot
Station. Due to the clashing between StrongDMM 2 and the Wallening
Project, I'm sure this hasn't caught everything. Going to want several
pairs of eyes for this one.


## Why It's Good For The Game

Getting maps back into rotation is very high on the priority list. 

## Changelog


🆑
fix: Updates much of Birdshot for the Wallening
/🆑
2024-08-17 21:10:26 +02:00
orange man
01d40b461c Automatic changelog for PR #85898 [ci skip] 2024-08-18 05:41:11 +12:00
MrMelbert
ba58a59615 Aliens and digitigrade legs use claw footprint sprite (#85898)
## About The Pull Request

Digitigrade legs use the claw footprint sprite

## Why It's Good For The Game

#81588 added support for legs to use alternative footprint sprites and
then just didn't add it to anything but monkey legs, even though the
sprites already exist. So let's use them

## Changelog

🆑 Melbert
qol: Xenos and digi lizards have claw footprints 
/🆑
2024-08-17 19:34:54 +02:00
orange man
1ac49e2363 Automatic changelog for PR #85888 [ci skip] 2024-08-18 05:10:24 +12:00
MrBagHead
5c67f82a0c Access Button Sprite Fixes (#85888)
…swapped and gave Access Buttons a South Sprite

## About The Pull Request
This pull request fixes the Access Buttons' sprite by swapping the East
and West access button sprites, which were previously reversed.
Additionally, it adds a South-facing sprite for the access buttons to
ensure it can be used and viewed from all directions.

### Before/After:

![image](https://github.com/user-attachments/assets/b9d2ee51-601f-46e1-82f2-07ced6cb8fc9)


## Why It's Good For The Game

Correcting the sprite orientation improves the visuals of the access
buttons. The addition of a South-facing sprite ensures that access
buttons can be used from all directions allowing for more freedom with
map design if someone needed an access button for an area facing south.

## Changelog

🆑
fix: Swapped East and West sprites for access buttons to correct
previous misalignment.
add: Added South-facing sprite for access buttons.
/🆑
2024-08-17 18:47:21 +02:00
orange man
d6d0fb8d7e Automatic changelog for PR #85889 [ci skip] 2024-08-18 02:54:55 +12:00
YesterdaysPromise
1e7ee56108 Updates security barriers to be wallening'd (#85889)
## About The Pull Request

Brings barriers to 3/4 wallening-appropriate perspective.
![Interdyne
1](https://github.com/user-attachments/assets/5d09d2c9-c02e-4082-916c-02970166884e)


## Why It's Good For The Game

Brings the sprite to current standards.

## Changelog

🆑
image: adjusted security barriers to be in 3/4 perspective.
/🆑
2024-08-17 16:54:32 +02:00