Commit Graph

5142 Commits

Author SHA1 Message Date
MrMelbert
75696ab873 Fixes random stuff spilling into ooc tab (#88221)
## About The Pull Request

`boldannounce` is NOT for use ICly it's only for OOC stuff. `bolddanger`
is identical it just doesn't carry the same baggage

## Changelog

🆑 Melbert
fix: Stuff like the SM exploding will no longer output to your OOC tab
/🆑
2024-11-27 17:41:52 +01:00
Ghom
8804f5595c turfs now handle fishing more internally to save time on world initialization (#88092) 2024-11-23 14:53:30 +01:00
Tim
f781e0dce6 Fix fireplace particles runtimes (#88114)
## About The Pull Request
Caused by:

- https://github.com/tgstation/tgstation/pull/88048

Trying to use the fireplace would result in runtimes and the smoke
particles not triggering.

Even though the runtime is fixed, the new particle changes in #88048
broke the pixel offsets. While I was testing, anytime I tried switching
a pixel offset it would update all fireplaces. I tried to limit it to
add the shared particle id to `"fireplace_[dir]"` so that it would only
apply to the objects in that direction but I couldn't get it to work. I
would guess this also affects a lot of other objects that have particle
pixel offsets.

Runtime is fixed. Particle offsets are still broken.

## Why It's Good For The Game
Fireplaces no more runtime.

## Changelog
🆑
fix: Fix fireplace particles runtimes.
/🆑
2024-11-23 13:34:55 +01:00
SmArtKar
bbb7a41743 Guncode Agony 4: The Great Projectile Purge (#87740)
## About The Pull Request
~~Kept you waitin huh!~~
The projectile refactor is finally here, 4 years later. This PR (almost)
completely rewrites projectile logic to be more maintainable and
performant.

### Key changes:
* Instead of moving by a fixed amount of pixels, potentially skipping
tile corners and being performance-heavy, projectiles now use
raymarching in order to teleport through tiles and only visually animate
themselves. This allows us to do custom per-projectile animations and
makes the code much more reliable, sane and maintainable. You (did not)
serve us well, pixel_move.
* Speed variable now measures how many tiles (if SSprojectiles has
default values) a projectile passes in a tick instead of being a magical
Kevinz Unit™️ coefficient. pixel_speed_multiplier has been retired
because it never had a right to exist in the first place. __This means
that downstreams will need to set all of their custom projectiles' speed
values to ``pixel_speed_multiplier / speed``__ in order to prevent
projectiles from inverting their speed.
* Hitscans no longer operate with spartial vectors and instead only
store key points in which the projectile impacted something or changed
its angle. This should similarly make the code much easier to work with,
as well as fixing some visual jank due to incorrect calculations.
* Projectiles only delete themselves the ***next*** tick after impacting
something or reaching their maximum range. Doing so allows them to
finish their impact animation and hide themselves between ticks via
animation chains. This means that projectiles no longer disappear ~a
tile before hitting their target, and that we can finally make impact
markers be consistent with where the projectile actually landed instead
of being entirely random.

<details>

<summary>Here is an example of how this affects our slowest-moving
projectile: Magic Missiles.</summary>


Before:


https://github.com/user-attachments/assets/06b3a980-4701-4aeb-aa3e-e21cd056020e

After:


https://github.com/user-attachments/assets/abe8ed5c-4b81-4120-8d2f-cf16ff5be915

</details>


<details>

<summary>And here is a much faster, and currently jankier, disabler
SMG.</summary>


Before:


https://github.com/user-attachments/assets/2d84aef1-0c83-44ef-a698-8ec716587348

After:


https://github.com/user-attachments/assets/2e7c1336-f611-404f-b3ff-87433398d238

</details>

### But how will this affect the ~~trout population~~ gameplay?

Beyond improved visuals, smoother movement and a few minor bugfixes,
this should not have a major gameplay impact. If something changed its
behavior in an unexpected way or started looking odd, please make an
issue report.
Projectile impacts should now be consistent with their visual position,
so hitting and dodging shots should be slightly easier and more
intuitive.

This PR should be testmerged extensively due to the amount of changes it
brings and considerable difficulty in reviewing them. Please contact me
to ensure its good to merge.

Closes #71822
Closes #78547
Closes #78871
Closes #83901
Closes #87802
Closes #88073

## Why It's Good For The Game

Our core projectile code is an ungodly abomination that nobody except
me, Kapu and Potato dared to poke in the past months (potentially
longer). It is laggy, overcomplicated and absolutely unmaintaineable -
while a lot of decisions made sense 4 years ago when we were attempting
to introduce pixel movement, nowadays they are only acting as major
roadblocks for any contributor who is attempting to make projectile
behavior that differs from normal in any way.

Huge thanks to Kapu and Potato (Lemon) on the discord for providing
insights, ideas and advice throughout the past months regarding
potential improvements to projectile code, almost all of which made it
in.

## Changelog
🆑
qol: Projectiles now visually impact their targets instead of
disappearing about a tile short of it.
fix: Fixed multiple minor issues with projectile behavior
refactor: Completely rewrote almost all of our projectile code - if
anything broke or started looking/behaving oddly, make an issue report!
/🆑
2024-11-23 04:02:35 -08:00
EOBGames
1fe4f77dc5 Shipping and Receiving: More Containers, Revamped Containers (#87995) 2024-11-22 20:48:29 +01:00
SmArtKar
742729fa0a Converts most common particle sources to use our new pooling system (#88048)
## About The Pull Request

Closes #83370
Converted most cases where we could benefit from using shared particles
(aka when there's probably more than 3 uses of that particle in a round)
to use the new shared particle system. Should provide significant
clientside performance in particle-heavy areas like botany (or sometimes
kitchen)

## Changelog
🆑
refactor: Converted most common particle sources to use our new pooling
system.
/🆑
2024-11-21 18:16:12 +01:00
tonty
d8450b4933 Camera eyes have been lightly refactored (among other things...) (#87805)
## About The Pull Request

* A generic /mob/eye/camera type has been made, containing everything
needed to interface with a cameranet
* /mob/eye/ai_eye has been refactored into a generic /mob/eye/camera
instance
* Advanced cameras no longer inherit from AI eyes, splitting off
behaviour
* Camera code has been somewhat cleaned up
* Probably some more stuff I'm forgetting right now

## Big man Southport:

![image](https://github.com/user-attachments/assets/de6e6ff0-ca99-4636-bdec-5e0b2d6b8037)

## Changelog

🆑
code: made /proc/getviewsize() pure

refactor: mob/eye/ai_eye has been restructured, now inheriting from a
generic mob/eye/camera type
refactor: advanced cameras and their subtypes are now
mob/eye/camera/remote subtypes
code: the cameranet no longer expects the user to be an AI eye
code: remote camera eyes have had their initialization streamlined
code: remote cameras handle assigning and unassigning users by
themselves now
code: remote cameras now use weakrefs instead of hard referencing owners
and origins
code: also the sentient disease is_define was removed (we don't have
those anymore)
fix: AI eyes no longer assign real names to themselves, fixing their
orbit name
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-11-21 12:55:38 +01:00
Penelope Haze
b67a0901f2 Fix issues discovered via TypeMaker (#87596)
## About The Pull Request
Fixes issues with var typing and proc arguments, discovered using
OpenDream's WIP TypeMaker feature (using improvements I haven't PR'd
upstream yet).

## Why It's Good For The Game
Codebase maintenance.
2024-11-19 15:24:52 -05:00
MrMelbert
d3bc3e8cb4 Being drunk or having a broken arm hurts accuracy with ranged weapons. Also cleans up a fair bit of hand handling to be more readable (#87904)
## About The Pull Request

1. Having a broken arm will affect your accuracy when firing a weapon
with that arm, even potentially causing damage to you if it's a weapon
with recoil. This effect is not applied under the effects of a
painkiller.

2. The sister effect of this (punching someone with a broken arm) now
also has an interact with painkillers (it can no longer block your
attack).

3. Being drunk heavily affects ranged weapon accuracy, unless you're the
bartender

4. A lot of hand handling cleanup, using new macros to make it a lot
more readable at a glance

## Why It's Good For The Game

We have this system for modifying firearm accuracy but we don't really
use it commonly, and I feel like it slots in well with a lot of places

For broken arms, it adds some more depth to the wound system, in the
same way that trying to punch someone with a broken arm causes pain. (I
actually want to expand this to melee weapon accuracy and attacking with
melee weapons in general, but that's for a later time)

For drunkenness, it just adds to the drunk shenanigans. It also slightly
reduces the effectiveness of drinks as combat healing chemicals, such as
quadsec - makes it a bit more of a trade off.

## Changelog

🆑 Melbert
balance: Having a broken arm affects your accuracy with ranged weapons
fired with that arm. Utilizing a painkiller will nullify this effect,
however.
balance: Painkillers will prevent your punches from being cancelled due
to having a broken arm. You'll still take damage, though.
balance: Being drunk now affects your accuracy with ranged weapon. The
bartender is immune to this effect via their skillchip.
code: A lot of code involving left and right hand handling has been
cleaned up, easier to read. Report any oddities, like left and rights
being flipped
/🆑
2024-11-19 19:31:06 +01:00
EnterTheJake
15247f28f1 Arcmines The Clarke Exosuit + Tech node changes. (#87936)
## About The Pull Request

The Clarke Exosuit has received several adjustments to make it worth
using in the Arcmining era.

- Clarke no longer requires gold bars to be built.

- HP bumped from 200 to 250, melee armor bumped from 20 to 40.

- Clarke Ore storage module can now collect boulders and smelt them
internally.

- Exo mining scanners can now be used in proximity to a vent to start
the wave defense event.

- Mech Pkas now do more damage  and have the AOE upgrade preinstalled.

- Mech drills are now a utility module rather than a weapon.

- New Internal module unique to the Clarke, It's a rusty sleeper that
can be used to recover dead miners, but lacks the ability to inject
chems

- Fixed Mech sleepers not granting life support.

- Plasma cutters and Bluespace satchels tech nodes are no longer locked
behind experiments, but they are now discounted by them.

## Why It's Good For The Game

Ever since the inception of Arcmining, the Clarke Exosuit has fallen
from being niche to straight up irrelevant.

The Clarke sits in this weird spot, where, while not being roundstart
available, it is an effectively worse fit than your regular Shaft Miner
in all aspects of the job.

This PR aims to address this by making The Clarke able to be built even
if the miners are absent or haven't secured a haul, while making it
actually capable of interacting with the new elements introduced by
Arcmining.

**Arcmining Clarke and Improved Combat functionality**

The Mech mining scanner can now be used to trigger the vent wave
defense, The internal storage module can now collect boulders and
internally smelt them within the Clarke.

Video Demonstration: https://www.youtube.com/watch?v=gtsNK5JbI3o

The Clarke is now a more capable fighter on Lavaland, being a bit
beefier overall.

The mech Pka was also in dire need of some love. It being unable to be
upgraded made it frankly underwhelming at dealing with Vent defences.

I was considering just having PkA upgrades applicable to the mech itself
but ultimately decided against it in fear of having it become a problem
on the station.

Instead, I just went for a flat damage increase and have the AOE upgrade
come preinstalled to better deal with legion swarms.

Lastly The drill modules have been reworked to be utility modules
instead of weapons.

Frankly these shouldn't be weapons, they are nowhere near as valuable as
the cutter or the PKA and can't be used at all on moving targets due to
the long cost time.

**New Clarke Exclusive Internal Module: Mining Sleeper**


![image](https://github.com/user-attachments/assets/bf807ec7-57e0-4caf-a2ac-bbd70ccc44c0)


Just a bit of extra functionality to aid miners that have tragically
fallen, this sleeper is effectively a worse version of the Odysseus, it
can stabilize patients but cannot inject chems, I also fixed an issue
where Mech sleepers were not putting patients on life support like
regular sleepers do.

**Tech Node Changes**

This is not something super related to the Clarke in and on itself, but
I figured I might push my luck and try these anyway.

There is just no good reason as to why satchels and cutters should be
hard locked behind gas shells.

These experiments are fairly trivial, but have a huge impact on lowpop
as they usually force people to break into ordinance or the teleporter
room just so miners could get their basic tools.

The shells still exist but now grant a discount instead of hardlocking
tech, so there's still an incentive to do them.

ROCK AND STONE!

## Changelog

🆑
add: New internal sleeper module for the Clarke.
balance: Clarke Integrity has been bumped from 200 to 250 HP, melee
armor bumped from 20 to 40.
balance: Exo mining module can now be used to scan vents and begin the
wave defense event.
balance: The Clarke Ore Storage Module can now collect boulders and
internally smelt them.
balance: Mech Pka is now bundled within the Clarke tech node, it now
does more damage and comes with the AOE upgrade preinstalled.
balance: Exo mining drills are now a utility module rather than a
weapon.
balance: Applied Bluespace Research and Controlled Plasma tech nodes are
no longer hardlocked behind surveys, they instead favor from a discount
if they are completed.
fix: Fixes Exo Mech modules not granting life support to housed
patients.
/🆑

---------

Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-11-17 13:51:18 +00:00
Ghom
334589ad25 Tendril chests and mystery boxes can now be fished multiple times with a 30 minutes cooldown. (#87944) 2024-11-17 02:57:07 +02:00
Lucy
f4a077c6fe Refactors some more UIs to use DmIcon (#87886)
## About The Pull Request

Upstream port of
https://github.com/Monkestation/Monkestation2.0/pull/4215

This changes some tgui UIs that used icon2base64/getFlatIcon to display
items to instead use DmIcon, just passing the icon/icon_state instead.

To be specific: the ORM, the "ore container", and the order console
(produce, mining, and bitrunning vendors)

<details>
<summary><h3>UI screenshots / proof of testing</h3></summary>

![2024-11-12 (1731458275) ~
dreamseeker](https://github.com/user-attachments/assets/b1c60677-b117-4c23-8076-8b5072130d55)
![2024-11-12 (1731458281) ~
dreamseeker](https://github.com/user-attachments/assets/b64d3c2f-4754-4e5d-991a-2df69d86eb2a)
![2024-11-12 (1731458286) ~
dreamseeker](https://github.com/user-attachments/assets/287d8db1-8acb-4c4c-a2f0-66227a477d19)
![2024-11-12 (1731458388) ~
dreamseeker](https://github.com/user-attachments/assets/f69f5d51-5cdc-442c-971d-a4abedd4a3d2)
![2024-11-12 (1731458391) ~
dreamseeker](https://github.com/user-attachments/assets/53a95e88-ac41-4f97-a409-10b19d130376)


</details>

## Why It's Good For The Game

gfi bad, especially in ui(_static)_data, dmicon good.

## Changelog
🆑
refactor: The ORM, "ore container", and order console UIs (produce,
mining, bitrunner vendors) now load icons in a more efficient manner.
/🆑
2024-11-14 19:10:22 +01:00
Tim
c0e3ba7320 Fix infinite metal holodeck exploit (#87806)
## About The Pull Request
This stops people from using chairs to create free metal. It was
possible to pick up a chair or place it down and it would lose it's
hologram status since a new object is created.

Now anyone that attempts to place down or pick up a chair will have it
vanish.

## Why It's Good For The Game
No more free metal.

## Changelog
🆑
fix: Fix using chairs in holodeck to create infinite metal 
/🆑
2024-11-13 10:16:03 -05:00
tmyqlfpir
010ee7b40e Fix airlock shell for circuit camera component (#87837)
## About The Pull Request
This PR resolves an issue relating to circuit cameras and airlock
shells.

Fixes #84650

## Why It's Good For The Game
This is a bug fix, and makes airlock shells actually usable.

## Changelog
🆑
fix: Airlock shells are properly assigned circuit cameras modules
/🆑
2024-11-12 17:18:23 +01:00
grungussuss
0e1524c432 Writing sound (#87772)
## About The Pull Request
completes
https://github.com/orgs/tgstation/projects/19/views/1?pane=issue&itemId=85235611


https://github.com/user-attachments/assets/087c88bd-9ddd-4e57-972d-fe66084d19bc
## Why It's Good For The Game
maybe now someone will notice you wrote something
## Changelog
🆑 grungussuss
sound: writing something now produces sound
/🆑
2024-11-10 17:52:29 -05:00
Ghom
e5472d9be4 Fishing bluespace capsules (#87639)
## About The Pull Request
With this PR, I'm introducing fishing bluespace capsules to the game.
They can be found on the black market, but I'll get a couple more ways
to get them before it's ready.

Anyway, they're special bluespace capsules that spawn a fishing spot of
your choice. The fishing spot can be changed by alt-clicking the
capsule, and so far it has 5 choices, plus 2 locked behind emagging for
obvious reasons:
- Freshwater: pretty basic, you get freshwater fish from this.
- Saltwater: mainly saltwater fish.
- Tiziran: You get tiziran fish here, like the gunner jellyfish,
armorfish, needlefish, dwarves moonfish and the new, bigger zagoskian
moonfish. By the by, moonfish now periodically lay moonfish eggs, a
staple of lizardfolk cuisine.
- Ice fishing spot: A small ice turf with a hole dug in it; salmon,
arctic char, arctic chrabs and the bonemass (skeleton fish).
- Hot Spring: Somehow the new home to the ought-to-be-extinct
sacabambaspis. It also doubles as a better shower overall, with mild
healing on top of stamina recovery. Felinids still hate it though, and
won't benefit from the healing.
- Lava: A 2x2 square of pure lava. Requires an emag for obvious reasons.
- Plasma: Ditto, but it's plasma instead of lava.

As a sidenote, unlike standard shelter capsules, these require their
area to be clear of pipes and cables on top of the other requirements,
unless emagged. Obviously, I've done some changes to allow pipes and
cables to not be hidden by water turfs, though I'm still keeping these
reqs because I don't think these fishing spots would look great if
riddled with cables and pipes. I may remove this extra req later if it
proves to be a tad too tedious.

Also they don't knock you back when expanding.

Screenshot from a recent test (fixed the misplaced decal and tweaked a
few things since then):

![immagine](https://github.com/user-attachments/assets/6bbcddfb-ff1c-4e96-834a-2129cadbb31f)


## Why It's Good For The Game
The idea stems from how not all fishing spots aren't designed to be
accessible every round, which is fine, because we have the fish-porter
for that. However, even the fish-porter should have its limits in terms
of what it can provide by itself (linking is all fair and game), so I've
thought having something of a middle point would been neat, also as a
way to mess around with the station layout a bit, to empower the player
with a little extra "terraforming".

## Changelog

🆑
add: Added fishing bluespace capsules to the game, which can be used to
spawn a variety of fishing spots, from freshwater to tiziran sea to hot
springs, and also lava and plasma if emagged.
add: Added two new fish: the zagoskian moonfish and the sacabambaspis.
Moonfish will now periodically lay moonfish eggs.
map: The 'crashed pod' lavaland ruin now has a hot spring, and the
cursed hotspring on icemoon now has a plastic chair and a fishing
toolbox.
/🆑
2024-11-11 08:01:09 +13:00
tonty
d5daa9c9b8 [NO GBP] Renames mob/camera to mob/eye and makes everything follow suit (#87684)
## Why It's Good For The Game

Clarity and consistency regarding DM's systems. 
Internally, `eye` is used for anything that controls the client's view.

![image](https://github.com/user-attachments/assets/7d1291e1-7a6a-4736-a14b-97834e89846f)
How `eye` is used in DM is consistent with how we use the term, so I
figured this would add clarity.

Being named mob/camera also makes it unclear exactly what it's doing.
The name implies that it would function similar to how mob/camera/ai_eye
does, but most of the time it's only used as... an eye.

My ulterior reason for this PR is that I want to clean up
mob/camera/ai_eye and it's subtypes after this.
## Changelog

🆑
server: mob/camera has been renamed to mob/eye, which may break
downstreams
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-11-09 10:57:45 +00:00
necromanceranne
ab3cac746e Herculean/Atlas implants get a few additional BOULDER/Equipment related benefits. Boulders are more robust. Natural Athletics gains. (#87469)
## About The Pull Request

Herculean/Atlas spinal implants allow you to break boulders to process
them manually. Doing so also grants athletics experience.

They also increase the speed at which you throw objects, and also
increase the range further. The Atlas version also allows you to reduce
equipment movespeed penalties. (Fikou wanted me to do this for
specifically modsuits, but I don't see any reason this can't apply to
more than that, modsuits are just generally the slowest equipment you
could wear)

Boulders have 30 throw force, are by default HUGE, but have no throw
range at all and really weak tk throw range. You need a throwing booster
to throw boulders around. (They do extra damage to SPECIAL mobs, like
lavaland bosses, because it's funny to kill a god-like being with a huge
rock while slow as shit)

You naturally get athletics experience by doing some actions. Fireman
carrying, climbing tables/crates, climbing rope and climbing ladders
give you a slow and steady stream of experience. Rope gives a larger
amount if only because the process for doing so is destructive in some
way (you have to get more climbing rope eventually, so there is an
associated cost). Spinal implants now improve climbing speed for
climbing over objects.

## Why It's Good For The Game

I just had this strange compulsion to make the spinal implant make you
good at throwing boulders at lethal speeds. It already has some cool
rock-based special effects around you. Having mastery over rock throwing
just kind of made sense. Additionally, I thought it would be a funny
method for someone to be able to kill a boss via way of thrown boulders.
Or some hapless nuclear operative unprepared for a bunch of assistants
lobbing boulders at them.

Additionally, I also think it letting you break boulders for ore is a
fairly minor but fun addition. Pull boulders out of the vents, smash
them. Good work out. Particularly for miners.

I talked a while ago with I think Jacq about adding some natural methods
for accumulating athletics experience over the course of a round that
doesn't involve the dedicated weight lifting machinery/boxing bag. I
thought any method for doing that should probably be relatively slow and
definitely nonviable for significant athletics gains beyond novice
level. Mooost people will hit novice on a multi-z map if they go up and
down ladders enough. Or climb a lot of tables/crates. The results aren't
going to have much noticeable impact, however, as you only gain
appreciable benefits above novice. Probably just greater visibility of
fitness in a round. (Rather nice for the RD, who gets to show off how
swole they are more regularly).

<details>
  <summary>Spoiler warning</summary>


![CES8b4XWEAAIakb](https://github.com/user-attachments/assets/8baaa012-8048-419f-b936-2dc6621db3c2)

</details>

## Changelog
🆑
balance: Herculean/Atlas spinal implants make you better at climbing
tables, throw objects much faster and throw them much further. You can
also break boulders with your bare hands.
balance: Atlas implants let you offset the weight of worn/carried
equipment (like boulders).
balance: Boulders have no throw range, but if you can throw them via
throwing range boosters (such as the spinal implant), they deal fairly
large amounts of damage. Especially to powerful mobs like lavlaand
bosses.
balance: You naturally gain a small amount of athletics experience doing
some tasks, such as climbing rope, ladders and tables/crates, fireman
carrying, or smashing open boulders.
/🆑
2024-11-07 12:58:32 +00:00
SmArtKar
0b99107cc2 Guncode Agony 3: Projectile code cleanup (#87628)
## About The Pull Request

Massive cleanup/pseudo-refactor of projectile and projectile-adjacent
code. One letter variables, weird logic, some runtimes, all of that.
Atomized in a separate PR from the actual refactor so we don't end up
with a 5k line PR.

## Why It's Good For The Game

Makes the code possible to work with before I nuke pixel_move and kevinz
units™️
2024-11-03 21:46:13 +00:00
necromanceranne
e919dca387 Fixes eye charts so that master isn't failing (#87648)
## About The Pull Request

The eye charts were still using the ``internal`` organ subtype. This
fixes that.

## Why It's Good For The Game

Phone PR baby. We love webedits.

## Changelog
🆑
fix: Eye charts now use the correct subtype for eye organs.
/🆑
2024-11-02 14:47:23 +00:00
MrMelbert
96df25392a Adds Eyecharts (#87361)
## About The Pull Request

Adds Eye charts

You can examine them to get a rough estimate of your eye health


![image](https://github.com/user-attachments/assets/1a4d85e4-43de-45a3-a979-5e63967f3422)

I mapped them onto Meta, Delta, and Ice

## Why It's Good For The Game

It's peak for doctor RP. and more flavor

## Changelog

🆑 Melbert
add: Eyecharts to Medbay
/🆑
2024-11-02 14:26:04 +01:00
Ghom
778ed9f1ab The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434)
## About The Pull Request
This PR kills the abstract internal and external typepaths for organs,
now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds.

This PR also fixes fox ears (from #87162, no tail is added) and
mushpeople's caps (they should be red, the screenshot is a tad
outdated).

And yes, you can now use a hair dye spray to recolor body parts like
most tails, podpeople hair, mushpeople caps and cat ears. The process
can be reversed by using the spray again.

## Why It's Good For The Game
Time-Green put some effort during the last few months to untie functions
and mechanics from external/internal organ pathing. Now, all that this
pathing is good for are a few typechecks, easily replaceable with
bitflags.

Also podpeople and mushpeople need a way to recolor their "hair". This
kind of applies to fish tails from the fish infusion, which colors can't
be selected right now. The rest is just there if you ever want to
recolor your lizard tail for some reason.

Proof of testing btw (screenshot taken before mushpeople cap fix, right
side has dyed body parts, moth can't be dyed, they're already fabolous):

![immagine](https://github.com/user-attachments/assets/2bb625c9-9233-42eb-b9b8-e0bd6909ce89)

## Changelog

🆑
code: Removed internal/external pathing from organs in favor of a bit
flag. Hopefully this shouldn't break anything about organs.
fix: Fixed invisible fox ears.
fix: Fixed mushpeople caps not being colored red by default.
add: You can now dye most tails, podpeople hair, mushpeople caps etc.
with a hair dye spray.
/🆑
2024-10-30 08:03:02 +01:00
r3dj4ck0424
c63c34330b Makes office chairs named "office chair" (#87505)
## About The Pull Request

Adds a name to the office chair obj and its light variants describing
them as "office chair". Additionally removes the custom name "blue" from
the blue variant of light office chair in birdshot.

## Why It's Good For The Game

Chairs are not lights and therefore need names that include "chair"
Fixes #87501 

## Changelog
🆑
fix: certain office chairs are now properly labelled
/🆑
2024-10-28 22:59:10 +01:00
grungussuss
f529998077 Fixes plastic flaps losing atmos qualities when anchored (#87441) 2024-10-26 02:45:27 +03:00
larentoun
692540a7b9 Singularity_pull() standartize (#87304)
## About The Pull Request
Previous attempt - https://github.com/tgstation/tgstation/pull/87227

`/atom/proc/singularity_pull(obj/singularity/singularity, current_size)`
has first arg typed, but other procs were just referencing it as a
un-typed variable.

Since args are not standartized AND
`atom/proc/singularity_pull(obj/singularity/singularity, current_size)`
is out-dated, since it can be called by things that has
`/datum/component/singularity` - not just by
`obj/singularity/singularity` - This PR just adds args to every
`proc/singularity_pull()` as follows:
`proc/singularity_pull(atom/singularity, current_size)`

## Why It's Good For The Game
Standartization

## Changelog
No changelog needed
2024-10-25 02:08:26 +02:00
SmArtKar
b8091a2e5d Changes wall leaning into a component, makes windows leanable #2 (#87390)
## About The Pull Request
Recovery of #85771, minus directional window leaning (because it looks
goofy)

## Changelog
🆑
add: You can now lean on windows the same way you can lean on walls
fix: You no longer stop leaning on walls after clicking on anything
/🆑
2024-10-24 16:54:44 +02:00
Profakos
13edecad37 Fixes benches attempting to add a nonexisting armrest overlay (#87368)
## About The Pull Request

Benches produced an error overlay when you buckled to them, due to them
inheriting `has_armrest = TRUE` from sofas. This PR fixes that.

## Why It's Good For The Game

Closes #87364

~~There is also #87338 but that is a duplicate.~~  Closed.

## Changelog

🆑
fix: Benches no longer produce an Error overlay when buckled
/🆑
2024-10-23 14:01:36 +02:00
Ben10Omintrix
00d40c2a8f fixes ore vents being tapped despite their drones dying (#87359)
## About The Pull Request
the vent defense minigames had a 100% win rate because of a small
mistake in the order of args passed to the proc

## Why It's Good For The Game
closes #87284

## Changelog
🆑
fix: fixes ore vents being tapped despite their drones dying
/🆑
2024-10-22 23:56:39 -04:00
Ghom
86aee083e3 Speed potion improvements (#87322)
## About The Pull Request
I've added a trait for when a speed potion is applied to the object.
This allows me to remove some args and variables from riding and
ridable, and allow fish past 2000 units of weight to have speed potions
applied to them without the risk of the slowdown being reset the next
time `update_size_and_weight()` is called.

Speed potions now also affect drag slowdown.

## Why It's Good For The Game
Small code improvement, leading to a possible balance change.
This fixes #38623.

## Changelog


🆑
balance: Speed potions now cancel drag slowdown too.
balance: Speed potions can be used on fish past 2000 units of weight.
fix: You can now speed up cardboard boxes with speed potions.
/🆑
2024-10-21 16:46:50 +03:00
SmArtKar
46e3edc788 Fixes electrified chair overlay layering (#87228)
## About The Pull Request

Closes #87221 by changing overlay layers when a mob is buckled to the
chair.

## Changelog
🆑
fix: Fixed electrified chair overlay layering
/🆑
2024-10-18 20:45:34 +03:00
grungussuss
083defab20 Industrial scanning sound (#87189)
## About The Pull Request
For:
- gas analyzer
- scanner gate
- plant analyzer
- t-ray scanner
- slime scanner
- scanning mining geysers


https://github.com/user-attachments/assets/24fde731-e567-483b-b88e-6f7fcbacf52a
## Why It's Good For The Game
it sounds nice
## Changelog
🆑 grungussuss
sound: added new scanning sound
/🆑
2024-10-17 22:16:13 +02:00
SmArtKar
2bb20aab0c Improves armrest code for chairs, fixes bronze chairs not spinning around (#87225)
## About The Pull Request

Closes #87222
armrest code doesnt have to be copied thrice if it can be on chairs with
a var to control if its actually used

## Changelog
🆑
fix: Bronze chairs will automatically spin once more
/🆑
2024-10-17 19:41:58 +00:00
Ghom
cffe5ffc33 Mixed bag of fishing adjustments. (#87201)
## About The Pull Request
This more or less ties with my previous PR where I fix some of the
issues I've seen with fishing, because both are the result of some live
playtesting in which I assessed some flaws and nits. So, let's get
started:

Lowered the number of fish to scan for each fish scanning experiment:
This is the most time-gating feature of fishing. As a scientist you're
usually better off doing anything else than this anyway, which is
understandable, but for whoever else that plans to get some nice ocean
fish, this is going to be a huge bummer. From 4, 8, 14, 21 to 3, 7, 11,
17.

Switched the ocean and chasm portal setting: Right now, the ocean portal
has the largest amount of catchable creatures, which can also help
progress the experiments, while the chasm setting only has two and is
only mildly useful for chasm chrabs --> lobstrosities (which suffer a
bit from not having a good enough AI right now). I hope I'll have the
time to add some late fishes to the chasm setting at some point.

Added a premapped fishing portal generator to the common service room of
every map: It takes quite some time to setup fishing. Making a fishing
portal is by far what I consider to be the most tedious part. Also Wawa
and Birdshot were also missing the aquarium kit. On a side-note I
realized some days ago that service jobs receive very good discounts on
the fishing items sold by the good clean vendor.

Added the fish puns speech modifier to fish-infused gills: I forgot to
do it when I made the PR. Shrimple as that.

Mild fish infusion tweaks: Lowered the crawling speed very sightly, but
buffed showers and water healing slightly. Drinking water now wets you
by about 1/4 of what splashing it would do.

Buffed fishing difficulty modifiers for items and chairs a little: For
the time and credits invested, buying a carp costume or whatever to be
slightly better at fishing doesn't seem that profitable, and I reckon I
was being a bit conservative with the values. Fishing is a considerable
time investment already, especially in the initial stage with the setup.
Also idk why sunglasses and thermals buff fishing while fish are
technically cold-blooded creatures so I removed the comp from them.

Added fishing rods and fish cases designs to cargo and science lathes:
Other base fishing designs are shared between the three departments,
while these two are only available for service (and autolathes
obviously).

Fishing skill now affects completion gain and not only completion loss:
Fishing as a feature has a slower pace than most things in the game. It
feels right that by the time you reach about legendary level, you get to
complete the minigame a bit faster.

## Why It's Good For The Game
To put it briefly, the feature feels right as a casual experience,
however time is very much against you and getting something done takes
some effort (especially on tram, where moving to and fro' departments is
almost like playing froggers at times)

## Changelog

🆑
map: Added a premapped fishing portal generator to every map.
balance: Lowered the requirements for fish scanning experiment. Swapped
the rewards of the second and third experiments.
balance: Buffed fishing difficulty modifiers for several items and
chairs.
balance: Fishing skill now affects completion speed of the minigame more
actively.
balance: Mild fish infusion tweaks. Crawling is a smidge slower, but
healing from showers and drank water is a bit better.
qol: Fishing rods and fish cases can now be printed by cargo and science
lathes.
add: Gills now give the fish puns speech modifier.
/🆑
2024-10-16 20:45:57 -04:00
Koi
28f775a145 New Icebox Ruin - Syndicate Biodome (#86957)
## About The Pull Request
**A Dangerous Ruin Approaches!**

A new high-risk, high reward ruin for icebox! Featuring some very
dangerous enemies for some goodies.

Small puzzle element included find the keycard to open the research
directors office to lift the lockdown on the security post, from there
you can lift the lockdown on the surgical rooms, all the while
encountering feral gorillas.



## Why It's Good For The Game

Icebox lacks some dangerous ruins with decent loot. The loot here is a
WIP and I'm hoping can be discussed. I know icebox still is in need of
some ruins and I had some ideas and threw this together. The map size is
45x45. I made it so you also can't just bee-line and cheese it by adding
indestructable shutters, windows, and walls, along with a noteleport
area flag to prevent cheesing of the area.

In-game rendered screenshots:


![image](https://github.com/user-attachments/assets/deb4a3de-ab3b-4fad-9bc2-38edc58ddbfd)


![image](https://github.com/user-attachments/assets/16debd29-86e2-4a78-92eb-099234634c56)

![Uploading image.png…]()




Editor Screenshots:


![image](https://github.com/user-attachments/assets/330efb1f-9cc2-457b-b0d8-75719c38b7a2)


![image](https://github.com/user-attachments/assets/281e9189-a447-4a25-8932-fca8797a1037)


Notable loot Spawns:


![image](https://github.com/user-attachments/assets/b352b461-0a72-4b1f-83fe-57dbb39f2d39)


![image](https://github.com/user-attachments/assets/a3075def-dcb1-40a5-8d6f-c672e1528647)


![image](https://github.com/user-attachments/assets/50e352e5-15e6-45e8-a2fd-d96625b4f538)


![image](https://github.com/user-attachments/assets/a811231b-70d0-4730-a938-186320438782)


![image](https://github.com/user-attachments/assets/5c07b521-a36f-4e54-807f-6fee95672da7)


![image](https://github.com/user-attachments/assets/a7403e0c-ad09-4a64-8826-18181fc1a26c)








## Changelog
🆑
map: New Icebox  Ruin "Syndicate Biodome" added.

/🆑
2024-10-15 22:00:43 +02:00
Ghom
734051bb1f update_body_parts() is now called when adding or removing bodypart overlays. (#87215)
## About The Pull Request
I'm making sure that `update_body_parts()` is properly called when
changing bodypart overlays, so that they actually show up the very
moment they were changed. However, to avoid redundant
`update_body_parts()` calls on init or while changing species, I've
added a living flag that stops `update_body_parts()` from being called
in these situations. I also scoured the codebase for other redundant
`update_body_parts()` to remove and things to clean up a little.

## Why It's Good For The Game
This automates the process of calling `update_body_parts()` a bit.

## Changelog
Mainly backend.
2024-10-15 18:49:05 +02:00
mamiipolat
466011f541 Felinid mood fix (#87230)
![resim](https://github.com/user-attachments/assets/35ce028c-0ed0-4ea2-89f3-77acc15693ac)


## About The Pull Request
Showering will add negative mood effect to felinids
## Why It's Good For The Game
there was a status effect that drops stamina for felinids on shower but
at the same time it boosts mood i decided to make it better
🆑 Mamaii
add: shower will give felinids negative mood effect
fix: fixed shower hater status effect alert not showing 
/🆑
2024-10-15 15:24:54 +00:00
Bloop
241514f520 Fixes improper static list declarations + adds grep for it (#87207)
## About The Pull Request

I randomly came across a `var/list/static` in the code, which does not
actually do what was intended, and thought it was silly. A ctrl+f
revealed that this was a fairly common mistake, so I went and fixed all
the instances of it I could find.

~~Including one in lighting code, which it looked like they were trying
to create a global list to cache generated lighting sheet values for
speed, but it was just a normal list that got created each time
pointlessly. Now those values are actually being cached (using a global
var, because a `static` list was not the right thing to use there in the
first place).~~

Nevermind, it seems that this was in fact being cached even if it
shouldn't have been, because byond. Just rearranged it there seeing as
it works either way.


## Why It's Good For The Game

Code that does what it's supposed to

## Changelog

🆑
fix: fixes a bunch of improper static list declarations
/🆑
2024-10-14 22:36:41 -06:00
grungussuss
a76084be45 Helmet and visor sounds (#87165) 2024-10-13 16:43:53 +02:00
Ghom
cdebe98a17 refactoring how materials effects are added to atoms (#86901)
## About The Pull Request
I'm "cooking" the materials system a bit, specifically the code
responsible for applying and removing effects. My goal is to move most
of the code to the objects-side, split it in smaller procs that can be
more easily overriden or called for object-specific modifiers and
effects, while also revamping things all around to better support items
made from multiple materials (the cleric mace will most likely be one in
this PR, with the handle and tip made of different materials).

PR NO LONGER WIP, TESTED AND ALL, CLERIC MACES CAN NOW BE MADE OF TWO
MATERIALS.

## Why It's Good For The Game
One of the nastiest flaws with the materials system is that it's just
unfeasable to have items made of multiple mats (with effects enabled)
right now, as they easily tend to override each other, where some of the
modifiers and effects should only be applied the main material.

Beside, the system's starting to show signs of its time, from the
several type checks used to apply different effects, the one letter
variables to the the material flags that are still being passed down as
arguments when you can access them from the atom/source arg anyway. It
would be disonhest of me if I went ahead and coded material fishing rods
or whatever fish fuckery with materials without ensuring it won't
further the technical debt the feature currently has.

## Changelog
🆑
refactor: Refactored materials code. report any issue.
add: Cleric maces (The autolathe-printable weapon design from outer
space) can now be made of two different materials.
balance: Buffed cleric maces a little.
fix: toolboxes' stats are now affected by materials again.
/🆑

---------

Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
2024-10-06 21:56:20 +02:00
Koi
679157d265 New Icebox Ruin - Hunters Lodge (#86927)
## About The Pull Request

Adds a new icebox ruin. Below you can see some good pictures of it.

A unique creature that can be found a "hatsune mi-go", a m1911 with a
magazine, santa outfit w/ bag, and a jukebox. this is actually something
I had planned for a torment nexus but chose to forego for an Icebox ruin
instead. The map is 35x35.


![image](https://github.com/user-attachments/assets/424f196e-0ad8-4ac1-8940-c537c7490305)


![image](https://github.com/user-attachments/assets/20efcc7a-2b9d-40c6-b666-ac4ea8d65efe)


## Why It's Good For The Game

Icebox is in need of some ruins, I was originally working on this for
something else but decided to instead add it as a ruin in icebox. I
added a subtype of the christmas tree that doesn't give presents. I felt
like icebox lacked more dangerous ruins so I sprinkled in a few enemies
and as a reward there is some notable stuff.

## Changelog
:cl:ViralMilk22

map: Additional Icebox Ruin has been added "Hunters Lodge".
/🆑
2024-10-06 19:19:40 +02:00
OrionTheFox
59d4980358 Fixes some minor typos in closets upgraded with Card Readers (#87035)
## About The Pull Request
Just some readability improvements:
- Personal Lockers now have a 's (no more `John Doe locker`, now it's
`John Doe's locker`)
- Department Locks are now called Job Locks to prevent confusion -
locking it with a Head card will, indeed, only be accessible by that
head (or the Captain ofc)
- Newly renamed Job Lockers now have a 's (same as above, now shown as
`Job Assignment's locker`)
- Flipped the descriptions and minorly rewrote them. Now it's added to
the back of the original closet description and reads hopefully better -
`"It has been (ID/access) locked to (name/job)."`


![image](https://github.com/user-attachments/assets/b045b8be-cbdf-4182-85c7-17c12155bf78)

![image](https://github.com/user-attachments/assets/998cf144-539f-4d92-a330-c78c9457bcd8)

![image](https://github.com/user-attachments/assets/65ffe51d-af84-41b1-9e3b-69c46a8d260d)
## Why It's Good For The Game
I'm fairly sure this counts as a spellcheck tag right? 
`Greg Bob locker` vs `Greg Bob's locker`? I don't know correct me if the
tag's wrong.

Besides the 's, easier to understand card reader choice and cleaner
descriptions.
## Changelog
🆑
spellcheck: added a 's to Personal/Job lockers created with card
readers, renamed 'Departmental' to 'Job' to prevent confusion, and made
the description easier to read
/🆑
2024-10-06 17:24:34 +02:00
MrMelbert
b3245078c8 Puts blood back on floor plane, puts runes on floor plane (removes shadows from blood and runes) (#87013)
## About The Pull Request

Basically goes through and puts some flat objects onto the floor plane.
Also puts blood back on the floor plane, since it seems like it used to
be but may have been moved mistakenly questionmark.

This means they will not be affected by Ambient Occlusion: 


![image](https://github.com/user-attachments/assets/594b878b-e5e9-42e3-900e-3c9390c819ee)

## Why It's Good For The Game

A lot of these "flat" things look really out of place because they're
secretly "floating" due to being on the wrong plane

## Changelog

🆑 Melbert
qol: Runes, crayons, and similar decals no longer have shadows
fix: Blood and similar "mess" decals no longer have shadows (again)
/🆑
2024-10-04 02:57:45 +02:00
Xackii
e2785ac4d6 Shower now regen stamina.... Not for the felinids. (#86889)
## About The Pull Request

Washing now give you status effect that regen 4 stamina per tick.


https://github.com/user-attachments/assets/1691ac4b-d8e4-402a-98d1-3cba61c00879

BUT if you felinid you will loss 4 stamina insteed becouse cats don't
love water.


https://github.com/user-attachments/assets/e566e4d8-7f8a-47e6-aadc-b2910758d6ea


## Why It's Good For The Game

Gives more reasons to wash.

## Changelog
🆑
add: Showers now heals stamina when you washing. But not for you
catgitls.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-10-04 02:52:06 +02:00
_0Steven
e60db8c896 Allow reinforced tables to be hooked up to the grid like grilles, shocking people who try to disassemble them (#87003)
## About The Pull Request

This pr makes it so reinforced tables can be hooked up to the power
grid, requiring them to be on an open tile with a cable on it much like
grilles, shocking solely people who attempt any of its disassembly
steps.
Insulation obviously still applies.
## Why It's Good For The Game

Saw talk about someone wiring up tables and I think it's funny to have
your table hooked up to the grid.
Allows you to protect your reinforced tables from disassembly, if you're
fine with world's most obvious open cabled tile below your table.
## Changelog
🆑
add: Reinforced tables may now be hooked up directly to the grid much
like grilles, electrocuting people who attempt to disassemble it.
/🆑
2024-10-03 06:20:38 -07:00
Da Cool Boss
03fc7483a3 Fixes syndicate crates using wrong lock icons, plus minor tweaks (#86742)
## About The Pull Request
- Donk Co. crate previously was unlocked, but the sprite had a lock on
it. Now the lock is removed.
 - There's a new secure Donk Co. crate using the old sprite. 
- S.E.L.F.'s crate had no lock on it, but it was a secure crate. The
lock overlay was present and it didn't look good. Now the lock is fully
on the sprite.
- There's a new unsecured S.E.L.F. crate using the old sprite. I gave it
a new description since the description mentioned locks.
- Interdyne's freezer was unlocked but had a lock on the sprite. Now the
freezer is secure. No unsecure variant this time.
- The names of the crates now use proper nouns, and the names of
corporations are capitalised.
- All syndicate crates with a lock now require syndicate access by
default.
- The Interdyne blood freezer no longer spawns the same contents as a
normal blood crate (a list of 9 blood packs plus 1-3 extra random
packs), now it spawns 13 random packs of blood.
- Typepaths were moved around to make the crates easier to find in
mapping tools.
 - Fixed a dang TYPO in the Donk Co. fridge's description.
## Why It's Good For The Game
Lock issue is solved now. The mismatching sprites didn't look good, and
now they match and look good.

Kept sprites for lockable Donk crate and lockless SELF crates and made
them their own crate types.

Repathed stuff to make it tidier. As a side effect the interdyne blood
crate is no longer a subtype of the regular blood crate, so instead of
copy+pasting the long list of contents it used to have it just has a
bunch of random bloods in it. Feels more on-flavour this way I think.

Access changes are because that makes sense for syndicate crates. Most
of these are going to end up mapped in as syndicate-access crates, makes
sense to make that the default. Can always be overwritten.

yea and I fixed that fuckin typo
## Changelog
🆑
fix: Donk Co. and S.E.L.F. crates now properly display their lock (or
lack therof).
image: New sprites for unlocked Donk Co. crates and locked S.E.L.F.
crates.
spellcheck: The names of syndicate-branded crates now use proper nouns.
spellcheck: Fixed a typo in the description for Donk Co. fridges.
/🆑
2024-10-03 04:41:19 +02:00
carlarctg
d33660e716 Ragnarok/Lattice/Species post-merge tune-up (#86606)
## About The Pull Request

### Ragnarok

- Uncomplicated the arena. The center area's river has been muddied
over, the bonfires have been made dense, the ants on the ground
everywhere have been removed.
- The Warrior's loadout has been simplified, removing any Ash aspects
and making it more concise and understandable.
- The Scribe's loadout has also been simplified, and given an additional
rifle clip. (Yes, it's a clip.) It lost cosmic expansion and the
pacifism mansus, but gained mind gate and some formerly bugged labyrinth
handbooks.
- The Crusader should be able to adjust their nullrod now.
- The Rat'var Apostate's beakers are now named so people other than me
can get the joke.

### Lattice
- Unbreakable lattices are now actually unbreakable and can't be snipped
into nothingness.
- Added true invis walls to the edges.
- Moved spare rods to the pockets.

### Species
- Added no_smoothing to the funny, so it's actually hidden now.
## Why It's Good For The Game

Time playing these ingame has shown some oversights and imbalances.
Ragnarok in particular was far too overcomplicated and indulgent to the
detriment of gameplay. Too many things - ants, rivers, bonfires, spells,
it was cloying. I toned this down a lot here to make the arena more fun.
We still do need a way to pre-bind spells but out of scope.
## Changelog
🆑
balance: - Uncomplicated the Ragnarok arena. The center area's river has
been muddied over, the bonfires have been made dense, the ants on the
ground everywhere have been removed. The Warrior and Scribe have had
their loadouts simplified.
qol: - The Rat'var Apostate's beakers are now named so people other than
me can get the joke.
fix: - Unbreakable lattices are now actually unbreakable and can't be
snipped into nothingness.
fix: - Added true invis walls to the edges of Lattice Battles. Moved
spare rods to the pockets.
fix: - Species Warfare: Added no_smoothing to the funny, so it's
actually hidden now.
/🆑
2024-09-29 16:38:09 +02:00
tonty
3f0b4abb8d Replaces world.icon_size (and some magic numbers) with defines (#86819)
## About The Pull Request

All usages of world.icon_size in code have been replaced with new
`ICONSIZE_X`, `ICONSIZE_Y` and `ICONSIZE_ALL` defines depending on
context

Replaces some "32" magic numbers with the defines

A few bits of code have been modified to split up x/y math as well

## Why It's Good For The Game

Magic number bad, code more readable, code more flexible and I'm told
there's an access cost to doing world.icon_size so minor performance
gains

## Changelog

🆑 tonty
code: made some code relating to the world's icon size more readable
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-09-29 13:28:32 +00:00
ArcaneMusic
47430a4c04 A smattering of boulder-related QOL and fixes. (#86834)
## About The Pull Request

This pull request does a little bit of cleanup that I came across awhile
ago while looking at #85081, then forgot about, then came back up when I
was looking at some additional cleanup that needed to be done.

Reorganizes the handle_wave_conclusion function such that it can take a
force arg, to force a ore vent to be completed for debug purposes.
This also fixes a minor bug where vents, when successfully completed,
will still show a warning alert that the waves were failed, and that the
vent has closed up.

Grammar fix to the examine of boulder processing machines.

Moves the can-move behavior of boulders on conveyor belts and during
regular stacking to an early return over a late return (Thank you
Goofball for pointing that out).

Artifact boulders will now default to their artifact icon_state whenever
possible.

Finally, adds an additional sanity check to boulder processing to check
for custom material length, to attempt to avoid zero-content boulders
existing and running into the afforementioned #85081

## Why It's Good For The Game

Largely applies cleanup to several aspects of the boulder processing
system, and a handful of (hopefully) performance related rearrangements
to the existing layout of boulder processing code.

I can't for sure say that it'll fix the linked issue, due to the fact
that I could not for some reason re-create the issue in local testing,
but I'm hopeful that it's some kind of nebulous sanity-related issue.

Cleans up grammar in some spots, and provides a useful debug tool for
admin purposes when you just want a vent to flip. Might be a good
justification for a ore-manager admin panel later? 🤷

## Changelog

🆑
fix: Artifact boulders should keep their alien icon even after a first
round of processing.
fix: Boulders are less likely to exist with zero materials after
processing.
fix: Boulders should be slightly less laggy on conveyor belts.
fix: Grammar of refinery/smeltery examine is corrected.
/🆑
2024-09-28 04:32:15 +02:00
Soupy
42863ba9b0 Fixes typos with the closets (#86900)
## About The Pull Request
Fixes typos for closets.
## Why It's Good For The Game
Proper spelling so it doesn't ruin immersion and user experience.
## Changelog
🆑
spellcheck: Fixed closet typos
/🆑
2024-09-27 15:39:51 +02:00
SmArtKar
d4ac95a0e1 Nobody expects the span inquisition: replaces most <span>s with macros (#86798)
## About The Pull Request
123 changed files and multiple crashes after writing broken regex, I
replaced most remains of direct spans with macros. This cleans up the
code and makes it easier to work with in general, see justification for
the original PR. I also fixed a bunch of broken and/or unclosed spans
here too.
I intentionally avoided replacing spans with multiple classes (in most
cases) and spans in the middle of strings as it would impact readability
(in my opinion at least) and could be done later if required.

## Why It's Good For The Game

Cleaner code, actually using our macros, fixes borked HTML in some
places. See original PR.

## Changelog
Nothing player-facing
2024-09-26 19:36:13 +00:00