7071 Commits

Author SHA1 Message Date
nikothedude c3c54bf66c Heretic rework & reintroduction - less prog, less murder, more cultsim LARP (#5445)
# Before TMing this please contact me on discord, I'd like to observe
the TM

## About The Pull Request

### There is a shimmer in the air, again. Familiar. The nighttime walk
of dreams yet again takes the uncomfortable form of an icey woodfield,
moths and owls swooping overhead. An uneasy shiver runs down the spine
of the world. The gaze of the Light focuses on our lowly region of space
- will you knock?

Design doc V1 (Tentative, may change based on feedback):
https://hackmd.io/@NikoTheGuyDUde/B1XEAAv3Zg

Reverts https://github.com/Bubberstation/Bubberstation/pull/5268 by
reworking heretic into a far less scaling, less dangerous, and less
murdery antagonist. Read the design doc for more.

### DISCLAIMER
I was not a mainline heretic player, nor someone who had constant
contact with ehretics. Therefore, I am not the best judge of heretic's
balance. A lot of this is **prone to change**.

### Changes
Heretic is now named **acolyte.**

#### Base kit
1. Heretics can no longer blade break. This is because jesus christ
blade breaking was annoying but also as a way to remove some of
heretic's crazy mobility.
2. Cloak of shadows and warren king's welcome are now 0.5 cost shop
items.
3. Passives are purchased now, with cost based off the path itself.
4. The same is true for blades and the mansus grasp mark, being 2 cost
nodes.
5. The heretic aura is now completely disabled, until I find some way to
use it.
6. The living heart ritual now requires plasma. You cannot get a heart
in perma, good riddance.
7. You can no longer shovestun after a grasp. Still a very useful tool,
though.
9. _**ASCENSION IS GONE.**_ Your only progression is with your
objectives. Find a gimmick to do if you want. Opening ways will be hard
enough.
10. Rituals & Mansus grasp are disabled if you have no heart. Its now
complete neutering.

#### Countermeasures
1. No heart = No rituals and no mansus grasp for anything but runes.
2. Added antimagic collars to security and cargo that act the same as
having no living heart, but is less invasive and can be more easily
removed.
3. Most heretic items have examine hints to non-heretics now.

#### Progression
1. Heretics now only progress via their intrinsic objectives, and only
up to a point. Ex. 0.5 points per influence, 2 points per way.
4. Passive generation is also substantially slower.
5. Heretics now have access to **fifteen knowledge points** on spawn,
and **their entire research tree+draft shop**. No more draft freebees
exist, either. (This is prone to change)
#### Objectives
1. Drain Influences - Influences now passively drain sanity aroudn them,
cause hallucinations, and have a rare onetime chance to spawn a heretic
mob. The heretic must drain **six-seven** influences to gain **two**
knowledge points.
2. Open Ways - Ways are a new type of heretic influence that spawn
exclusively in high-importance or high-traffic areas. A heretic must
perform a ritual with four randomly generated items on the way to open
it. Once open, the way has a variety of effects, the majority of which
are **beneficial, but in a bad way.** Ex. spawning 5000 mols of a
valuable gas. The heretic must drain **three** ways to gain **four**
knowledge points.
3. Wildcard - There are currently five wildcard objectives any heretic
can roll. **One:** Steal 1000-1250 credits from crewmembers using the
Claw of the Capitalist ritual. **Three:** Have 9-10 crewmembers consume
potions from the Mawed Crucible. **Four:** Perform a ritual in the SM
chamber to neuter its output for 10 minutes. **Five:** Perform a ritual
in the AI upload to upload 3 ion laws to the AI.
#### New spells
1. Cloak of shadows & Warren king's welcome are now 0.5 cost knowledge -
This gives me a reason to give heretics just a bit more starting
knowledge.
2. The Owl's Secrets - Sacrifice a radio, a pair of ears, and a
bluespace crystal to cast a curse on the telecomms processors. For five
minutes, any outgoing message will be corrupted into heretic-speak, and
will damge the sanity and brain of anyone who hears them. If you start
seeing hypnophrase in the chat, take off your headset or turn off the
processors. 2 uses, as this has the potential to be really annoying. 1
cost.
3. Paranoia's eye - A silent, focusless spell that curses nearby people
to see everyone around them as heretics and disables their ability to
examine them for one minute. 1 cost.
6. Claw of the Capitalist - Allows you to transmute someone's blood into
money by stealing it from their account. Each 1u of blood of 5% drained.
If the blood is from a phylactery, it wont steal any that will reduce
the target's account below 300 credits. The target is notified when this
happens. 1 cost.
7. Voice of the mansus - Single use, but re-researchable, ritual that
allows you to do a fake announcement. 1 ears, 1 radio. 0.5 cost.
12. Trickster's pen - Transmute a pen, a sheet of plasma, and a pair of
eyes into a pen that can be used to change the name, age, job, and trim
of a card, and clicked to turn you momentarily near-invisible. 1 cost.
13. Trickster's mask - Transmute a bandana and a spraycan into a
chameleon mask. Thats it. Best with the pen. 0.5 cost.
14. Trickster's Promise - prestidigitation. You can make an item glow,
clean a atom (cleans forensics), shoot confetti, or my personal
favorite, increase the food quality of an edible by 2 and add 5u of a
weak synth-healing omnizine to it. Perfect for chef heretics. 1 cost.
15. Unwrap Minds - EARLY PULL FROM
https://github.com/tgstation/tgstation/pull/95796/. Scalpal, glass
shard, paper, victim. Hypnotizes the victim with whatever is on the
paper. 2 cost.
16. The Blacksmith's Hammer - One diamond, one set of wirecutters,
upgrades your mansus grasp to emag whatever you hit on right click. One
time use - has to be reinvoked every time. 1 cost.
17. Watching Eye - One set of eyes, a sheet of plasmaglass, and a
blindfold creates a one-time small item that can be viewed as if it was
a long-rnged x-ray camera. Has 10% opacity, for sneakiness. While
uncontained in anything, the heretic can whisper a phrase - such as
sleep, blind - to create a short-term, localized negative effect on
non-heretics that the eye is viewing (but only if theyd be viewable
without x-ray). 2 cost, only one can be made - high risk, high reward.
Sprite by Burger, from path of exile.
#### Spell rebalance
1. Ether of the newborn now doesnt heal normal damage. Get a medkit for
that. Additionally, implants remain. Get a _doctor_ for those, or use
any of the other methods to break them.
2. Mawed crucible potions can now be consumed by non-heretics, albiet
disgusting. The potion shop gimmick is real. Additionally, crucible soul
now lasts for 20 seconds and leaves a trail towards the location you
jaunted from when you return. This is because I've heard quite a few
people complain about this thing in the olden days. This doesnt make it
useless, but it does make it more difficult to use.
4. Space phase now has a 2 second do after before phasing out,
uninterruptable. This is mainly for tramstation and icebox when holy
fucking shit it is ridiculous.
5. Wave of desparation now costs 3 points.
8. Armor is now four points.
9. Rust kit and paintings are gone.
10. Codex morbus is gone. Sorry, I dont want to deal with rebalancing it
right now.
11. Phylactery now needs LOS, and has a 3 second do after.
12. Void cloak now disguises itself instead of going invisible.

### Changed paths

#### Void
In the interest of making void a little less murderkill, I opted to add
some flavor and alternate use to void's abilities.

**Void chill** can now put you to sleep if you click its status. This
sleep will heal you via cryoxadone. Being hit will wake you up, as will
void chill going away.
* This is intended to add a alternate, medical use to void, as well as
to nerf void chill a little bit. It does nothing to help you in active
1v1 combat, but if the void heretic disengages, you can heal yourself.
Its alsl nice and flavorful.
Void chill is also now nearly 100% countered by leporazine. Coffee and
tea help with the slowdown, but dont help with cold at 5 stacks.

**Void pull** is gone. **Cloak of darkness** replaces it, with perfect
invisibility taht prevents the use of any tools or abilities while its
active. Being hit instantly banishes it. The cloak slowly cools the air
around you, so if people are aware of your status of a void heretic,
they might be able to guess the chill in a previously warm room might be
you.

**Void conduit** no longer griefs windows and doors. It now chills the
air around it, while putting people to sleep - using the same eldritch
sleep that void chill does. You can use coffee to counteract this, or
simply fire at the conduit from a distance.

**Void cage** now heals the target for 2 of each damgae type a second.
Can now be self-cast. _Still useful for its intended roles._

**Void phase** now has a 40 second cooldown instead of 20. 20 is
ridiculously low for a jaunt with guaranteed EVA power, and 40 should
prevent its abuse.

_Void will probably receive further changes._ On the docket is a void
phase nerf and a void conduit nerf.

#### Moon

**Ringleader** no longer stuns you if you kill a clone, only knocks
down.
**Lunar parade** now lasts for 45 tiles, down from 60.
The passive's healing is reduced by 25%.
The blades upgraded brain damage is now 20, and the sanity threshold for
insanity is now disturbed.
The armor now translates slughtly more health, meaning its less
protective.

_I understand moon the least of all the paths, but I love its flavor, so
I decided to focus on it. Im balancing based off what Roxy suggested
were the issues._

## TODO

- [x] Void path rework
- [x] Investigate if we need to nerf moon more, maybe reflavor it as
well
- [x] Implement the third objective
- [x] Rigorous bug testing
- [x] Rewrite UI
- [x] Remove irrelevant tarting spells (sacrifice, notably)
- [x] Add more non-combat spells

### Implemented paths

- [x] Void
- [ ] Moon
- [x] Lock
- [x] Flesh
The paths beneath this line will be focused on after the initial TM is a
success.
- [ ] Blade
- [ ] Ash
- [x] Cosmic
- [ ] Rust
## Why It's Good For The Game

Heretic is one of the most flavorful internal antagonists in the entire
game, flavorful enough people were making characters around heretic,
people had entire storylines based on heretic, and I feel a lot of value
was lost with heretic. Simulatniously, uh, _**heretic was one of the
worst designed antags in the game?**_ Too powerful, too scalable, and
generally just has a "I HAVE A ANTI-EVERYTHING SHIELD" vibe.

This PR brings it back as a static, traitor-style antag with limited
progression. Variety is always good.
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>
TODO
</details>

## Changelog
🆑
add: Heretic - Now reworked as a far less oppressive and far less
scaling antagonist
/🆑

---------

Co-authored-by: Roxy <94389951+SapphoQueer@users.noreply.github.com>
2026-06-18 20:37:25 +02:00
nikothedude 99786302fe Pull #96417 from tg - Fixes diamond and bluespace artifact boulders not containing any diamonds/bluespace crystals (#5783)
## About The Pull Request

https://github.com/tgstation/tgstation/pull/96417
## Why It's Good For The Game

bugs bad
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>

tis a upstream pull

</details>

## Changelog
🆑
fix: Fixed diamond and bluespace artifact boulders not containing any
diamonds/bluespace crystals
/🆑

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2026-06-13 16:25:21 -04:00
shayoki f601a6ddaf Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 2026-06-03 01:23:54 -05:00
SmArtKar f3283799e7 Reworks lavaland tendrils into minibosses (#96186) 2026-06-02 21:00:15 +10:00
ArcaneMusic b1ae4ddce9 Diamonds and Bluespace Crystals ore vent rebalance. (#96135)
## About The Pull Request

A few tweaks regarding diamonds and bluespace crystals with regards to
ore vents.
With the quantity of bluespace crystals and diamonds that have been
reintroduced to the game, in an attempt to maintain their status as the
rarest tier of material to obtain for the station, both materials have
been removed from the standard pools of ores that can spawn into
boulders. What this **means** is that it can't roll as a primary
material for a boulder, providing 25-10 sheets worth of material.

**However,** diamonds and BS crystals are now available from all tapped
vents as an artifact boulder spawn. These artifact boulders will spawn
at a flat 7% chance, previously set as a random range of 0-10% randomly
per vent. Because this chance was never communicated to players, I think
it's fine at this point to split the difference, lock it in at 7%
(Considering that we're adding more things onto the artifact boulder
outcomes as is, I've elected to throw it to a slightly higher chance,
based purely on vibes). For clarity, these two artifact boulders add a
flat 1-5 sheets of their respective material to the boulder on spawn,
the same as mining a single tile of their respective ore from a wall.

Additionally, the overlays when scanning an ore vent will now show a
flashing icon to represent the rare chance that these two materials may
spawn. Text has been added to the examine for ore vents to explain this
behavior.

Boss vents may still spawn diamond and bluespace crystals, but at a
lower weighting than all other materials.

Due to diamonds and BS crystals being removed from the standard ore vent
weightings, their distributions within the ore vent mineral distribution
used on roundstart has been shifted, while otherwise keeping a similar
distribution of minerals across vents, according to the rough intent of
what minerals should show up at what rarities.

As previously stated, these two artifact material boulders add their ore
to the boulder itself, meaning that you may also want to pick out
artifact boulders in order to do limited chemical boosting for up to 50%
more materials.

## Why It's Good For The Game

Diamonds and bluespace crystals are intended to be rare, valuable, and
desirable enough to go out of your way to obtain. Ore vents ideally
should have had some sort of built-in scaling that tweaked the amount of
that specific material they produced, but I never got around to
implementing that and as a result they've been really, REALLY common for
the last while. One of the design goals of the new mining PRs that have
been released recently as to try and reintroduce some rarity and
desirability into these high tier minerals by adjusting their
availability while not completely locking them off from the rest of the
game.

This was a compromise to also still provide some utility to doing ore
vents with the reintroduction of ores being more common from
wall-mining. Wall diamonds and bluespace crystals will still exist, but
this way completing a small collection of ore vents will help to supply
the station with materials, where it's the quantity, not the quality of
vents that provides the best value, while noting you're still going to
be recieving these drops somewhat rarely unless optimizing your factory
output.

## Changelog

🆑
balance: Non-boss ore vents may no longer contain bluespace crystals and
diamonds.
balance: All ore vents now have a flat 7% chance to spawn an artifact
boulder.
balance: There are now 2 new artifact boulder types, which may contain
1-5 sheets worth of bluespace crystals or diamonds respectively. These
boulders may have their rare ore boosted via chemical boosting.
balance: ore distribution in vents have been adjusted to accommodate for
bluespace and diamonds being removed from vents accordingly.
spellcheck: Ore vents now explain the artifact boulder mechanic on
examine.
/🆑
2026-05-29 23:13:26 +02:00
Wisemonster e93488eb69 Gives QM locker a flash (#96233) 2026-05-28 13:18:11 -04:00
levels0 7cf1670987 Mirrors can trap dormant revenants (#95942)
## About The Pull Request
If glimmering residue (revenant ectoplasm) is scattered in the vicinity
of a mirror, the revenant will be trapped inside it instead.
-When mirrors are cursed in this way, the reflections are shifty and
distorted, like the revenant's reflection when it's alive.
-In this state, the revenant may only communicate via telepathy with
people reflected in the mirror (it's more like "standing close to it",
but that's probably ok).
-If the mirror is broken, the revenant will reform. If it's catatonic, a
new candidate will be pulled, much like with ectoplasm reforming.
-If the mirror is destroyed in another way, the revenant will be
destroyed as well.
-There is a 1/500 chance that a mirror will be haunted roundstart
## Why It's Good For The Game
You can now torment the revenant by eternally trapping it if it really
pissed you off

## Changelog
🆑
add: you can now trap dormant revenants in mirrors
add: haunted mirrors may very rarely appear roundstart
/🆑

---------

Co-authored-by: l0 <-->
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2026-05-24 12:10:35 +02:00
Tim 054653de87 Add a "Prison Block" holodeck map (#96032)
## About The Pull Request
This adds a new "Prison Block" holodeck simulation, accessible only when
the holodeck safeties are disabled (or emagged). The layout features
four functional jail cells with holographic flashers, a security desk,
evidence lockers, an electric death chair, and camera/record consoles.

<img width="288" height="320" alt="StrongDMM-2026-05-10 20 22 24"
src="https://github.com/user-attachments/assets/f32da2c6-9281-4681-b415-4eac5d9bf167"
/>

## Why It's Good For The Game
While many departments have dedicated holodeck programs, Security
currently lacks a specialized simulation. By placing a functional brig
within an emagged simulation, we create opportunities for emergent
scenarios:
- Antagonists now have more non-lethal options to detain and hold
personnel
- Security now has a backup brig during station emergencies
- Power cuts, EMPs, or AI intervention can trigger instant prison breaks
- With the press of a button, switching the simulation can transform it
into a death trap for everyone inside

This creates high-tension gameplay for both the captors and the
captives.

The electric chair was only used in the pirate shuttle (ruin?) and
didn't work properly, so it needed some code updates. Also, I did not
like how insulated gloves prevented electric shocks from working, so I
made it bypass insulation.

I had to add holodeck versions of brig lockers and security windoors so
now any ID can open windoors/lockers. People cannot open
windoors/lockers without an ID, so you must strip them of their ID when
imprisoning them, otherwise they can just walk out.

## Changelog
🆑
map: Added a "Prison Block" holodeck simulation, accessible via the
disabled safety/emagged menu.
code: Fixed electric chairs to work, and they now bypass insulation from
gloves when executing a mob.
code: Added holodeck versions of brig lockers and windoors that allow
anyone with a station ID card to access them.
/🆑
2026-05-23 20:41:43 +02:00
SmArtKar 9a30336b56 Crematorium can no longer destroy indestructible objects (#96101)
## About The Pull Request

Cleans up crematorium code, moves it to timers instead of sleeping, and
stops it from deleting indestructible objects.

Closes #96091

## Why It's Good For The Game

While this does have some balance implications, we no longer have an
objective to destroy the blackbox (with this being one of the few means
to do so, only other common method being the supermatter) so I presume
it is okay to prevent it from destroying otherwise indestructible items.
I've checked with NecromancerAnne about this and she said it shouldn't
have too much of a balance impact?

If I have missed any potential scenarios this breaks, please note under
the PR and I will try to rethink this.

## Changelog
🆑
fix: Crematorium can no longer destroy indestructible objects
code: Cleaned up crematorium code
/🆑
2026-05-21 19:52:20 -06:00
Leland Kemble 5fb48548f2 Right clicking with a multitool on an abandoned crate no longer puts you at risk (#96074) 2026-05-20 21:23:19 -04:00
MrMelbert c85dd6575b Fix historian mode sfx (#96087)
## About The Pull Request

Never set

## Changelog

🆑 Melbert
fix: sfx that plays when entering historian mode of a trophy case is no
longer mute
/🆑
2026-05-16 02:50:50 -04:00
Alexis 21b4095dfd [MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026

fixes https://github.com/Bubberstation/Bubberstation/issues/5549

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: loganuk <fakeemail123@aol.com>
Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com>
Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com>
Co-authored-by: Isratosh <Isratosh@hotmail.com>
Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com>
Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com>
Co-authored-by: Alexander V. <volas@ya.ru>
Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com>
Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com>
Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com>
Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com>
Co-authored-by: Josh <josh.adam.powell@gmail.com>
Co-authored-by: Josh Powell <josh.powell@softwire.com>
Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com>
Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com>
Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2026-05-16 00:56:00 +02:00
ArcaneMusic ddc51bd5d8 Adds screentips to grilles, moves deconstruction to RMB. (#95903) 2026-05-14 14:54:25 +02:00
Arturlang d67ca75e37 kills cargo imports (#5491)
## About The Pull Request
kills cargo imports with no mercy, moves it into goodies with
newly-added subcategories
also adds a persi only agent ID single pack per request
also also tarkon and persi can buy private packs via id money
## Why It's Good For The Game
ugly UI that doesn't work for other factions and needs hacks to work
with cargo ui is not great

## Proof Of Testing


<summary>Screenshots/Videos</summary>
<img width="1268" height="1124" alt="image"
src="https://github.com/user-attachments/assets/fd3d9a58-ea0b-4242-88d2-b6123a214c72"
/>

## Changelog

🆑
add: cargo imports moved into it's own category with a brand subcategory
system, and orderable without a private account (god why did i do this)
add: persistence only agent ID single pack
add: persistence and tarkon can now buy stuff via ids directly
add: captain access can always unlock departmental orders
fix: persistence and persistence cargo consoles sending cargo pods to
the station if cargo bay is selected
del: entire cargo company imports system
/🆑
2026-05-12 17:20:32 -07:00
KateAnbolho 779b7c2590 Allows you to build computers on tables again (#5548)
## About The Pull Request

being able to build cool table computer setups is pretty neat and /tg/
removed it 4 no reason

## Why It's Good For The Game

being able to build cool table computer setups is pretty neat and /tg/
removed it 4 no reason

## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>
<img width="315" height="280" alt="image"
src="https://github.com/user-attachments/assets/34599eb3-0499-416f-8def-6cad0f7fd89d"
/>
</details>

## Changelog
🆑
add: You can make computers on tables again 
/🆑
2026-05-09 06:39:03 +02:00
SmArtKar 940d91bb62 [MDB IGNORE] Adds new features and tiles for lavaland biomes (#95955)
## About The Pull Request

Adds new floor types and natural decor to both Siderite and Shale
biomes, as well as makes flora and fauna spawns differ between said
biomes.

<img width="1216" height="997" alt="dreamseeker_uIv1OgVkpD"
src="https://github.com/user-attachments/assets/327d9caa-a58c-4d70-acbe-477da69b4d71"
/>

---

Basalt biome now spawns more legions and goliaths, but less watchers and
no brimdemons. You can rarely find new volcanic pore rocks which will
spew out lava when destroyed.

<img width="505" height="361" alt="dreamseeker_TA9rXzOgad"
src="https://github.com/user-attachments/assets/fb19a60a-c927-441b-abad-161ce5022a60"
/>


Siderite biome has a lot of rock formations and may sometimes spawn new
stalagmites. You can expect to see a ton of bileworms, raptors and
watchers there.


<img width="747" height="613" alt="dreamseeker_uZgRX8qqh3"
src="https://github.com/user-attachments/assets/d356f1c6-371a-4b8b-899b-470edb0d2790"
/>


Shale is full of lobstrocities, goldgrubs and brimdemons, and home to a
new glowgrowth "plant" - colony of bioluminescent fungi growing on
natural air vents.

<img width="274" height="220" alt="dreamseeker_EtxiS4X9M7"
src="https://github.com/user-attachments/assets/cbefba67-b618-4a65-ad12-9ee5182b650c"
/>


While it cannot be planted by itself, it contains luminescent fluid
inside which will grant whoever eats it minor night vision as long as it
is inside their bloodstream (as well as cyan-glowing eyes)

---

Ruins now properly respect their biome's rock (and now floor as well)
type, since it was broken for some of them previously.

<details>
<summary>More images under the dropdown</summary>

<img width="1216" height="997" alt="dreamseeker_fpXXV0Rt3D"
src="https://github.com/user-attachments/assets/fa790ca1-7045-490e-bcb2-c1f9da9f277c"
/>
<img width="414" height="303" alt="dreamseeker_l6E8S2fzCe"
src="https://github.com/user-attachments/assets/8b10dcca-c546-41ce-9363-a12b0f225881"
/>
<img width="784" height="587" alt="dreamseeker_RUWQo0unNp"
src="https://github.com/user-attachments/assets/d7364abc-ec68-4daf-b3cb-a03b8ba7e5de"
/>
<img width="1216" height="997" alt="dreamseeker_zoltABvkBw"
src="https://github.com/user-attachments/assets/324f50f8-83c9-4451-8eff-33ebf81c1d0d"
/>
<img width="1125" height="571" alt="dreamseeker_ky5qvl2XtC"
src="https://github.com/user-attachments/assets/ff08d22f-fc15-4961-b76e-7c10d7814096"
/>

</details>

Credit for original versions of new flora/feature sprites to
SentryPrimis on the /tg/station discord

## Why It's Good For The Game

Makes biomes more distinct and interesting, as well as gives them unique
atmosphere, since right now they only differ in rock type and mineral
distribution.

## Changelog
🆑 SmArtKar, SentryPrimis
add: Siderite and Shale lavaland biomes now have unique floors, as well
as flora, features and fauna!
fix: Fixed some ruins generating with default basalt walls instead of
their biome's walls
/🆑
2026-05-07 10:20:43 +01:00
Bloop b39968afde Adds signboards (#95824) 2026-05-06 01:47:27 -04:00
MrMelbert 0d8e223e90 Adds some tier zero (penguin, plant) and a tier one (stoat) gene infusion (#95923) 2026-05-05 10:35:12 -04:00
Time-Green b9dfbcaca3 Adds more SeCrEt ChEmS (#95952) 2026-05-05 10:25:32 -04:00
MrMelbert cee225fecb Moves hair and eyes into standing overlays (#95781) 2026-05-04 22:50:36 +02:00
CabinetOnFire 2ede6af8bc Fix basic mobs triggering click cooldown erroneously. (#95906)
## About The Pull Request

Basic Mobs used to always trigger cooldown on clicks. This resulted in
missed attacks causing you to have a delay before you could attack
again, this makes it really punishing to play as a basic mob.

To resolve this I did a mini-refactor on basic mob's attack chain to
allow for the return values to determine whether we go on cooldown or
not. Preventing attacks that did nothing (due to not passing checks, or
simply not having any behavior) from causing cooldown.

This fixes #95605

## Why It's Good For The Game

being able to perform melee with the same rules as /human is only fair

## Changelog

🆑 DresserOnFire
fix: Fixes a bug where player-controlled basic mobs would get a cooldown
when their attacks miss
refactor: basic mob attack chain can now decided whether an attack
resulted in a cooldown or not.
/🆑
2026-04-29 21:59:01 +01:00
Bloop 966d6547e8 Big tooltype decargo-culting (continued) (#95814)
## About The Pull Request

Gets some instances that I caught missed by
https://github.com/tgstation/tgstation/pull/95408
2026-04-29 12:19:00 -05:00
ArcaneMusic b8bec80de9 Geysers now provide some audio feedback when scanned. (#95902) 2026-04-28 12:14:38 +02:00
John Willard aa4dc56835 Removes Station-time (more time changes) (#95744)
## About The Pull Request

Removes Station-Time entirely
Server Time is now NST (Nanotrasen Standard Time). SS13 takes place
exactly 540 years in the future of the current day, so every second is 1
second in-game.
Round Time is now PT (Pay-Time), how Nanotrasen keeps track of how long
the current rotation of Employees has been working for.

Telecomms uses NST due to its importance of being the communication to
the blackbox.

Autopsy report, clocks, scientific reports and requisitions use both
timestamps due to them being more official documents that NT may need to
know beyond just the current round (just for flavortext).

Pretty much everything else (Det scanner, PDA, IC logs, Time-of-Death,
AI law changes, Cyborg file downloading) uses PT

PT
<img width="305" height="217" alt="image"
src="https://github.com/user-attachments/assets/cef73025-6292-4f9c-8565-197397bda2ca"
/>
<img width="168" height="59" alt="image"
src="https://github.com/user-attachments/assets/a99db568-045d-45fc-8206-0d9a7b13c7d2"
/>
<img width="308" height="122" alt="image"
src="https://github.com/user-attachments/assets/37ca6f17-8916-4af2-9c91-0f0707038ca5"
/>



https://github.com/user-attachments/assets/29445051-c98b-4af3-a657-812083aab91a


Clock (Literate)
<img width="748" height="292" alt="image"
src="https://github.com/user-attachments/assets/c824e812-91b5-4737-858d-768336e9a7c4"
/>

Clock (Illiterate)
<img width="446" height="94" alt="image"
src="https://github.com/user-attachments/assets/90d5ea0d-eaff-4ced-aa31-ffdf0b4832a5"
/>

New paperwork time working properly

<img width="311" height="190" alt="image"
src="https://github.com/user-attachments/assets/6d048926-db61-4c91-893b-ce93e1ea7775"
/>

NST
<img width="800" height="115" alt="image"
src="https://github.com/user-attachments/assets/35ffde49-13c1-4ce7-ab24-858e48b608bd"
/>
<img width="1288" height="142" alt="image"
src="https://github.com/user-attachments/assets/40c30d16-e0de-4efc-b460-9486eeb901d6"
/>

# Other changes

1. Circuit time checker will now get the value of the given input (Hour,
Minute, Second) rather than the full dedisecond time converted into
hour/minutes/seconds

<img width="270" height="67" alt="image"
src="https://github.com/user-attachments/assets/097440cc-1c45-447f-9976-18de7f9c722c"
/>

2. Turns nightshift into a round event that'll last approximately 22
minutes
3. 12-hour pref (doesn't apply to the stat panel because it's global
info) & removal of "TCT" time

<img width="569" height="440" alt="image"
src="https://github.com/user-attachments/assets/d39083b1-d248-41c0-9a1c-b2398ca203a7"
/>

4. The chocolate pudding negative moodlet is now based on the server's
IRL time.
5. Admins can now use ``class``, ``style`` and ``background`` (they were
already given perms to use ``img`` so hiding background, which was
removed to prevent image embedding, is pointless)
6. Also fixes ``year`` being off on localhost.


## Why It's Good For The Game

Server Time is approximately 1s = 12s converted, not including it
desyncing from lag (I believe?).
This makes it pretty much impossible for people to actually use this as
a unit of measurement for in-game actions.
Different things also uses different timestamps which is a bit more
confusing.

The main change here is for accessibility and, hopefully, using time as
a source of immersion. "20 minutes ago" is no longer OOC, they're just
speaking in PT. There's no timezones in space, Nanotrasen Standard Time
is the closest there is, but Pay Time is how NT considers when you get
your paychecks, so it's what is more commonly used.

It also fixes major inconsistencies between "IC time" and "Station
time", things like breakfast moodlet was the first 15mins of the round
despite the round starting like 7 hours in? Nukies with an L6 SAW firing
down the halls was shooting like 1 bullet every 3 seconds (assuming 4
bullets per second), overall there was just a disconnect between how
long time actually is in the universe.

The secondary reason for this change (though it is what pushed me to
actually get around to making this change) is the greater stat-panel
removal. This hopes to lessen the dependence on the stat panel for
station-time by making it easier to understand, and the end-goal I have
is for this information to be limited to Admins & the AI (AI will get
the IC version with the accurate year), so until that happens I would
like to improve the use of station-time by making it consistent (for
example, you should only care for PT for IC, which is also what your PDA
displays), so that when it gets removed it won't leave players timeless.

If you haven't already, and is interested in helping remove the stat
panel, every entry that needs to be removed can be found here -
https://hackmd.io/443_dE5lRWeEAp9bjGcKYw?view

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

## Changelog

🆑
del: Removed Station Time, now we use NST (Nanotrasen Standard Time),
which is IRL server time +540 years, and PT (Pay Time), the amount of
time since the round has started.
del: Station nightshift is now a Station event rather than being based
on Server time.
balance: Time circuit's Unit of Measure now tells the amount of time in
hour/minute/seconds rather than giving the whole time translated to
hours/minutes/seconds.
qol: Added a 12-hour clock pref for people who prefer it.
qol: Hovering over NST timestamps on official documents will now
translate how much it is in PT/Shift Time.
admin: Admins can now use style/class/background in their papercode.
/🆑

---------

Co-authored-by: Isratosh <Isratosh@hotmail.com>
2026-04-25 14:13:31 -06:00
Ben10Omintrix 7763db34a1 Basic beepskies and some ED209 additions (#95783)
## About The Pull Request
this PR refactors beepskies and ED209s into basic mobs. ive also added a
few features for the ed209 because i cant keep my hands to myself:

ED bots can now wear hats! a few hats give them some new unique
dialogue. Putting a cowboy's hat on an ED will have it acting like a
town Sherrif

EDs are now rideable when emagged. theyll still be shooting people while
ridden. youll also have the ability to charge at people full throttle
running them over

ive also added a new Nukie variant, purchasable from the uplink. These
versions come fitted with an LMG and will patrol the station and shoot
all walks of life. If emagged, theyll blow up people with (weaker)
rockets (im still working on balancing this). they are rideable but i
highly suggest against it; youll be caught in the crossfire. (i
understand if ud prefer i atomize this feature)

## Why It's Good For The Game
gives some personality to EDs, as well as updating all these bots to the
cool new ai system

## Changelog
🆑
refactor: beepskies, and ed209s have been refactored. please report any
bugs
add: ed209s can now wear hats! some hats give them new dialogue
add: emagged ed209s are now rideable! 
add: added evil versions of the ed209s to the syndie uplink
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2026-04-25 00:25:28 +00:00
ArcaneMusic 0c91535120 Arcmining: Chemical Boosting (#95530) 2026-04-23 17:46:06 +02:00
FinancialGoose e98cb75c57 Refactor gasmix mole change into a proc (#95327)
## About The Pull Request
Refactor the majority of the current gasmix mole change use cases into a
proc called adjust_gas which simply adds the designated mole count of
the species into the gas mix while also handling asserting the gas and
garbage_collect()
I also added adjust_multiple_gases and convert_gas() for modifying
multiple gases and within a gasmix

## Why It's Good For The Game
Lemon wanted this to be done as part of the air group refactor 

## Changelog

🆑
refactor: refactored majority of gas_mix mole change into adjust_gas()
proc
/🆑
2026-04-21 13:43:47 -07:00
SmArtKar 2680aafa3f [MDB IGNORE] Lavaland Mineral Rework: Yapmining 2026 (#95682) 2026-04-20 10:52:59 -04:00
Jacquerel 039a0a8180 Wizard Wand blind box & wand bandolier (#95563)
## About The Pull Request


![dreamseeker_vQmIqvqtUo](https://github.com/user-attachments/assets/462d95f8-7447-45e2-90a8-9111fa07fe11)

This PR adds 16 more wands to the game, try and guess what they all do!
I finished coding this PR 6 weeks ago but it turns out I had to sprite
16 wands after that before I could PR it.

<details>

**Wand of Animation**- It's like the Staff of Animation but doesn't
recharge itself, obviously.
**Rod of Babel**- Grants victims a new random spoken language and then
removes all of their other languages.
**Shearing Rod**- It renders you bald. If you are covering your hair
with a helmet, it pops the helmet off (possibly its most useful effect).
If you're already bald, your bald head will shine brightly and blind
nearby people.
**Party Wand**- Fires projectiles that are incredibly alcoholic. Two of
them will destroy the livers of most targets and kill them (although it
gives them a good leadup time to get that fixed before dying of alcohol
toxicity), so try one at a time if you're just there to have fun.
**Wand of Ice**- Freezes people temporarily, making them really cold and
unable to move. It also spawns slippery ice on impacted tiles.
**Wand of Chaos**- Forces targets to hallucinate from a curated list of
hallucinations. It looks and is named sort of like the Staff of Chaos
just in the hopes that people are more likely to believe that the wizard
did actually just instantly kill them, set them on fire, or turn them
into a demon. Even if it doesn't, a lot of these cause you to stop
moving or be temporarily knocked down or in some other way disoriented.
**Lifting Rod**- Removes gravity from a target for two minutes, which
funcionally immobilises them if they're in the middle of a room or you
can use on yourself to cross big pits.
**Rod of Compassion**- Heals you and your target a little bit, and also
gives you both Pacifism for 30 seconds. This gives you time to talk out
your problems, or deliver a monologue.
**Wand of Snacking**- Turns things into pizza. If fired at a mob, will
put some pizza in their hands and force them to start eating it.
Unlikely to be deadly, but it might spawn mouldy pizza, a food they are
allergic to, ethereal battery acid pizza, or pizza which dismembers you.
**Pestilent Wand**- Confers a transmissible plague which causes you to
periodically cough out vermin of various degrees of danger and hostility
depending on disease level, treated via traditional methods of exorcism.
**Wand of Pratfalls**- Slips and pies the target as well as creating
small amounts of lube foam.
**Wand of Rebellion**- Removes a limb from the target, then animates
that limb. Stop hitting yourself.
**Rod of Repulsion**- Throws things you shoot away from you.
**Switching Rod**- Swap places with the hit atom, as with the spell
Swap.
**Restraining Rod**- Summons a tentacle from the ground to grasp the
target, immobilising them for 20 seconds or until someone helps them.
**Wand of Zapping**- Briefly locks up the target's nerves with lightning
(it's secretly a classic ss13 taser).

</details>

They are available to wizards via the new option "Wand Assortment
(Bargain Bin)" which only costs a single spellbook point, but gives you
an assortment of 6 wands picked at random from this list of new wands
and some of the existing ones.

If you buy two or more sets of wands (and are wearing the wand belt from
the first one) then instead of spawning wands in a belt it will spawn
them in a bandolier, which fits into your backpack or can be worn on a
suit slot.
Wand bandoliers in a suit slot will automatically replace an empty wand
you try to fire with a wand that still has ammo in it.

Several of these wands' projectiles are now also possibilities from
firing the Staff of Chaos (making it more chaotic) and some of them also
have their own Magicarp types.

Also I made it so that if you animate an animating weapon then it
focuses on animating more things instead of shooting its animating bolts
at mobs that are already animate. I could do this for more specialty
wands too at some point (door wand projectiles don't exactly hurt
anyone) but if I do that it'll probably be in a different PR.

## Why It's Good For The Game

A good number of these wands come from a downstream antagonist that's
essentially a lower-threat wizard. I thought these were all fun or funny
effects to have in the game upstream but also not ones that people would
typically want to buy as a dedicated spell (or alternately, that would
be pretty good as a dedicated spell but quite boring), so instead
they're limited use spells that you get in bulk for cheap.
I didn't think we'd really want to bulk up the spellbook with several
different kinds of themed bundle though (and frankly, they don't share
themes), so it's a blind box instead.
The bandolier was added to compensate people for buying random wands
multiple times, so they can have more of a wand-based playstyle.
Now you can spend all of your points on 60 wands (maybe more if you take
the gambling trait...) and be a sort of wizard cowboy, or split them
among your apprentices, or just leave them everywhere like candy and see
whether the crew fuck things up for themselves with their new power I
guess.

## Changelog

🆑
add: Adds 16 more wizard wands to the game, which wizards can buy
cheaply but randomly, or are available via Summon Magic.
add: If a wizard buys more than one set of wands they will receive a
"Wand Bandolier" holster which fits in the backpack or, if worn in the
suit slot, will automatically exchange an expended wand for a full one.
balance: Staffs (and wands) of animation that are animated will try to
animate other objects instead of firing at living mobs, which are
already animated.
balance: Animating a wand of nothing will turn it into a wand of
animation (and animate it).
balance: The staff of chaos can now do more things.
balance: Magicarp now additionally come in Babbling, Frigid, Quantum,
and Weightless varieties. Collect them all!
/🆑
2026-04-20 09:31:55 +12:00
SmArtKar 9ecf33adf9 Ore vents now turn transparent and clickthrough when there's a mob behind them (#95646)
## About The Pull Request

When a mob enters a tile above the vent its top half (and the rig, if
the vent has been tapped) will turn transparent and clickthrough. The
bottom half residing on the tile below is still clickable.


https://github.com/user-attachments/assets/5ed1cd3a-4f33-4692-adce-471eb2942d45

Same applies to ore type overlays. Also I've cleaned up ore vent code a
bit.

## Why It's Good For The Game

During combat some mobs, especially legion skulls, can end up hiding
behind the vent and be extremely hard to hit, requiring the player to
pull up the alt click menu to dispatch of them. This should resolve that
issue.

## Changelog
🆑
qol: Ore vents now turn transparent and clickthrough when a mob enters
the tile above them. The bottom half of the vent is still clickable.
code: Cleaned up ore vent code
/🆑
2026-04-13 13:59:59 -04:00
Leland Kemble 61d791f27f Fix toiletbong (#95679)
## About The Pull Request

Item's reagents

## Why It's Good For The Game

fixes #95669
2026-04-13 12:42:49 -05:00
Lucy 79e7aa569e fixes up some math defines to use byond builtins instead of workarounds (#95652)
## About The Pull Request

this translates some various
- `FLOOR(x, 1)` -> `floor(x)`
- `CEILING(x, 1)` -> `ceil(x)`
- `SIGN(x)` define is gone, just uses the native BYOND `sign()` now.

Also, the `MODULUS` define is just a wrapper for the [BYOND `%%`
operator](https://ref.harry.live/operator/modulomodulo) now.

would be nice if someone double checked to make sure there's no
potential subtle oddities resulting from this.

## Why It's Good For The Game

These procs presumably did not exist whenever the defines were written -
and they are BYOND builtins, meaning it will just be, say, one `sign`
instruction, instead of two comparisons and a subtraction.

## Changelog

no player-facing changes
2026-04-13 15:32:42 +12:00
John Willard 76c88edea9 Removes Object & Server tab (#95292)
## About The Pull Request

Removes Object tab, which didn't work as it required a whole reload of
your verbs to update to what verbs would show up in it (which is very
hard to actually trigger as a player), but leaves the verbs that had
them show in the dropdown menu.

Removes the Point-To and Examine verbs from the Stat panel, now it's
commandbar only. Originally only did Point-To, but because the stat
panel sorts itself by the category of the item, then the order of the
name, I had to remove Examine's category so it would remain sorted the
same.

bruuuuuh

<img width="1259" height="985" alt="image"
src="https://github.com/user-attachments/assets/ea89db24-fafd-41d6-939e-4dbc7bbf3828"
/>
<img width="309" height="244" alt="image"
src="https://github.com/user-attachments/assets/3b8d9c52-056b-44ce-8ee8-051439a2fa51"
/>


Removes Server tab for players (not Admins) by moving Show Map Vote
Tallies to the OOC tab, as that was the only verb there.

Activate Held Object has been moved to IC since it's a roundstart verb,
I thought I should leave it be (do we have numbers on how many people
use these? Why would someone use the verb over clicking on the item
in-game or Z? Should I remove this too?).
Admin's Object Possession verbs are now in Admin Fun instead of Object.

Player stat panel
<img width="299" height="194" alt="image"
src="https://github.com/user-attachments/assets/8a3c9ad0-514a-44c5-b023-f71e57de4758"
/>

Admin stat panel
<img width="581" height="224" alt="image"
src="https://github.com/user-attachments/assets/7232485f-af41-469e-abfd-fce066816eec"
/>
<img width="624" height="297" alt="image"
src="https://github.com/user-attachments/assets/6eb540be-4912-44f6-be36-5fe3a74b7f19"
/>


## Why It's Good For The Game

We have 2 tabs that exists for a total of 3 procs, 2 of them fit
elsewhere and the last one doesn't work at all. Most verbs here don't
show up in the stat panel at all for the vast majority of players due to
the stat panel not actually loading them in when it's available, which
to me shows that it's a feature that isn't really cared about anyways.

It also helps newer players because there's less tabs to navigate and
less verbs to sift through, we have a ton of verbs that basically don't
need to exist and they only exist to make looking for the important
verbs a larger hassle.

## Changelog

🆑
del: Deleted Object tab, and Server tab for players. Activate Held
Object verb is now in the IC tab. Examine and Point To was removed from
the stat panel.
admin: Object possession verbs have been moved to Admin Fun.
/🆑
2026-04-05 20:21:59 -07:00
MrMelbert 024a276dcc Recovered crew/Thanatorenasia bodies are shown as "revivable" when orbited in a morgue tray (+makes it shake) (#95602)
## About The Pull Request

If you orbit a recovered crewmember or thanatorenasia body situated in a
morgue, the indicated will change from red to green, indicating the body
is revivable

Additionally, orbiting a recovered crewmember or thanatorenasia body
will cause morgues or bodybags to shake. This is an extension of the
existing behavior where orbiting the body causes it to twitch.

## Why It's Good For The Game

Allows doctors to store bodies in a safe place while they wait for a
ghost to occupy it, also means you don't have to repeatedly defib them.

## Changelog

🆑 Melbert
qol: Recovered crew/Thanatorenasia bodies in morgue trays change the
indicator to green when a ghost is orbiting them (to allow ghosts to
signal they want it to be revived)
qol: Recovered crew/Thanatorenasia bodies now cause morgue trays /
bodybags to shake when orbited, much like how the body itself shakes
when orbited (to allow ghosts to signal they want it to be revived)
/🆑
2026-04-03 22:56:37 +02:00
SmArtKar b77d459820 Fixes incorrect usage of world.view or viewers() in some places (#95558) 2026-03-30 20:07:36 -04:00
Hatterhat 3bbf35905e Installing/moving windoor electronics only happens after the do-after (#95518)
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2026-03-28 12:25:53 +01:00
Leland Kemble 607d0953b4 Prevents infinite plasteel from girders (#95524)
## About The Pull Request

Pass `amount` to `use_tool()`

## Why It's Good For The Game

fixes #95519

## Changelog
🆑

fix: You can no longer create infinite plasteel with girders

/🆑
2026-03-28 09:54:04 +01:00
SyncIt21 7585035f1b Fixes 2 sink frame bugs (#95321)
## About The Pull Request
- Fixes #95310
- Depends on #95319

## Changelog
🆑
fix: you cannot install infinite water recyclers in the sink frame
fix: you can attach sink frames to walls in most cases regardless of
what's on the wall(except when there is already a light fixture, camera
or another sink)
/🆑
2026-03-28 09:23:16 +01:00
MrMelbert af27eda051 Adds support for gags underclothing / Uses it to make them look less jank on lizards (#95454)
## About The Pull Request

1. Underclothes have all been repathed as
`/datum/sprite_accessory/clothing`

2. Underclothes now have support for GAGS. Currently it ONLY supports
static GAGS colors, ie only preset colors, however prefs support could
easily be added in the future

3. Uses the GAGS support to implement the existing digitigrade
templating system for some undergarmants - lizards will use a generic
template for their underclothings when applicable

Example

<img width="169" height="124" alt="image"
src="https://github.com/user-attachments/assets/30b6689b-13a4-4cf9-811c-0d5d0bd5da59"
/>

## Why It's Good For The Game

Existing undergarmants look really jank on lizards

<img width="170" height="140" alt="image"
src="https://github.com/user-attachments/assets/de0704e0-d403-4bdb-a4c5-432d704b9c99"
/>

<img width="118" height="102" alt="image"
src="https://github.com/user-attachments/assets/7ec47327-c2a9-4a90-aab5-fb57105d5111"
/>

I would like to solve this, and well... the two solutions are "we force
lizards to run around naked" or "we use the cool templating system". The
latter seemed preferable


<img width="165" height="125" alt="image"
src="https://github.com/user-attachments/assets/6a8e4225-10a4-4044-9a12-c220713cd613"
/>

I did yoink the template from the jumpsuit template so it might look too
similar, might need to tweak it

## Changelog

🆑 Melbert
add: Some undergarmants will now use a generic replacement on lizard
body shapes that fit more appropriately
refactor: Refactored how undergarmants generate their icons, report any
oddities with that
/🆑
2026-03-23 20:06:58 -07:00
LemonInTheDark 9d14e327b5 Begins Improving Sparks/Flares Somewhat, Adds Animatable Light Overlays (#95362)
## About The Pull Request

[Adds a visual tick helper, integrates it into SSmove and
such](https://github.com/tgstation/tgstation/commit/e97035f9f74fad5c67c5bf19d8d5d3bb4bd476b4)

Basically, if we do "stuff" during verb time then the next chance
clients have to actually see it is on the next visual tick (rather then
the normal "this tick"). This is cause clients get their next frame
during maptick, and maptick runs before verbs.

We want to be able to handle this properly because if you say, create an
object and then move it on the same VISUAL tick (NOT game tick), it will
just teleport instead of playing out the move. I don't want this for
stuff like sparks, so we need a way to work around it.

[Moves most users of the _FAST flag to
_INSTANT](https://github.com/tgstation/tgstation/commit/6f96daac00519c69adc7554f52114798a65f3ad5)

These are the kids that don't immediately spawn something and the move
it, and we want to allow them to move actually as soon as possible
(important for stuff like space)

[Improves basic effect systems, makes their products delete when they
stop
moving](https://github.com/tgstation/tgstation/commit/172cb25d80ed34e1ec523172a1677fb524239fba)

Moves some stuff out to getters or vars so children can better decide
how long effects should last/how fast they should move. Uses this to
clean up weird dupe code used by explosions.

Makes all these effects delete on contact with something that stops
them. I'm doing this because an effect just hanging in the air looks
really really odd. Does have consequences for sparks that are already
moving at a wall though, might need a better way to handle that.

Makes all these effects use _FAST loops so they don't just hang in the
air for a second on spawn

Adds a setter proc on sparks for their duration, gonna use this to
improve their effects some

[Refactors overlay lights, adds support for animating their
images](https://github.com/tgstation/tgstation/commit/3ad0083cf2b536df51a6d93dca40eac20c1d62d1)

Implements light_render_source and relevant setters, this allows us to
replace the components of an overlay light with basically whatever we
want

Refactors overlay lighting to handle its images more consistently,
allowing us to hook into an image being modified

Combining the two of these will allow us to consistently copy a light's
image, modify it in some way, and then relay that modification back
down. Allowing us to animate it or do more advanced effects painlessly

Also, fixes ranges of 1 or less not rendering at all on initial set
(thank you kapu)

[In which I get fed up and add a macro helper for UID
generation](https://github.com/tgstation/tgstation/commit/aab48b03d407104d4f9cf9acb034494237def911)

[adds vv hooking for all existing lighting
vars](https://github.com/tgstation/tgstation/commit/b81c6200a0d74c36b440aa3f4c1f22c422090a2d)

[Upgrade effect system's dir picking to avoid duplicates when
possible](https://github.com/tgstation/tgstation/commit/18b622586b509c6be4c4bca4e3e7c175ad75fe91)

[Uses the technique described above to animate spark's lights out as
they
move](https://github.com/tgstation/tgstation/commit/67ba177982213799984a70e89536c5efb3d17e14)

This is a decently nice effect imo, it allows us to bump their power
(read, alpha) since it'll get animated away. I try to sync the animation
to the actual icon state's flow (it's 0.7s long). I also sped them up
somewhat to hopefully have a nicer looking effect? we'll see.

[Abstracts away intercepting overlay lights into a holder
datum](https://github.com/tgstation/tgstation/pull/95362/commits/b3f1fe74f2c3bab1d8912ab8a666bd05677ad032)

This should make it far easier to reuse this pattern!

[Fixes overlay lights flashing to double intensity when picked up off
the
ground](https://github.com/tgstation/tgstation/pull/95362/commits/1d83f2031fa2b33312b2aea4359c0c37c9d04ac7)

We needed to clear out their underlays BEFORE the animation

[Adds a flickering effect to flares and their
children](https://github.com/tgstation/tgstation/pull/95362/commits/b7a858e04a607c58b6c7fbe1476ffe2239e63bde)

I'm still not 100% happy with this, I was trying to avoid it feeling
like a heartbeat with random noise and I.. THINK it worked? it's
honestly quite hard to tell

[Adds the same flickering to lighters, welding tools and life
candles](https://github.com/tgstation/tgstation/pull/95362/commits/3ec44027e17835ae96702cec5f0b12d1f4deb32b)

Also, updated light candles to mirror the appearance of normal candles
and use overlay lighting

EDIT:
I realized while working on flares that I accidentally double applied
color, so if you saw the sparks animations before now it was different
(less vibrant). IDK if I like this better or worse but it is RIGHT and
that's what matters.

## Why It's Good For The Game

I got mad about how bad these looked, and this is a start at improving
them.
Also, adds a framework for more dynamic effects applied to overlay
lights (you could use this to apply a sort of "emergency rotating"
effect, or flicker/buzz for example).

<details>
 <summary>Before</summary>


https://github.com/user-attachments/assets/66437f27-ee3c-4f14-a7ee-4a1c3e68533a


https://github.com/user-attachments/assets/ed14fff8-a7eb-47fe-bab5-9a490ac96629

</details>

<details>
 <summary>After</summary>


https://github.com/user-attachments/assets/fb24ff2e-c745-42a5-8e11-c8a1eeef35a5


https://github.com/user-attachments/assets/fd8c2116-cb92-4fe6-ad3e-786a6538e52a

</details>

## Changelog
🆑
add: Reworks how sparks render. They're now a bit brighter, will fade
out as they move/if they hit something, will stack with each other less
and also won't start hang in the air on spawn.
add: Added a flickering effect to lighters, welding tools, flares,
torches and candles (since they're flames).
fix: Overlay based lights (think flashlights) will no longer flash to
double intensity while being picked up.
refactor: Reworked how some effects (explosion particles, sparks, some
reagent stuff) function, report any bugs!
/🆑
2026-03-20 14:48:57 +13:00
Iajret e1464a5704 Fixes runtime from buckling basic mobs to surgery tables ( + fixes vitals monitor when doing so) (#95426) 2026-03-17 17:25:25 -04:00
MrMelbert 065c9eb763 Revenants are always visible in mirrors (#95379)
## About The Pull Request

Revenants, even while invisible, can be seen in the reflection of
mirrors

<img width="231" height="254" alt="image"
src="https://github.com/user-attachments/assets/135341b8-192c-4f9b-b9c3-0da2c96c6fac"
/>

They have an ethereal, ghostly effect applied to their reflection while
invisible (it's an animation so you can't see it in the picture), this
effect is removed if they become visible. It also doesn't apply when
reflecting in a magic mirror.

Additionally, "Defile" will now break mirrors, though not magic mirrors.
Also, Revenants no longer elevate over tables. They're ghosts after all.

## Why It's Good For The Game

It's a thematically appropriate way for a Revenant to reveal themselves
to the crew without, well, outright revealing themselves.

Also there's a hypothetical world where Medbay puts mirrors everywhere
to catch a Revenant.

## Changelog

🆑 Melbert
add: Revenants are always visible in mirror reflections, even while
invisible.
add: Revenant "Defile" now shatters mirrors.
qol: Revenants no longer elevate over tables.
/🆑
2026-03-12 09:39:36 +13:00
SmArtKar 9f941d2b21 Fixes toilets being able to delete objects (#95300)
## About The Pull Request

Closes #95229

## Changelog
🆑
fix: Fixed toilets being able to delete objects
/🆑
2026-03-04 16:45:44 -05:00
ArcaneMusic fb58e99934 Admins can add new custom blackmarket listings, and tweaks the "Launch" shipping option. (#95191)
## About The Pull Request

Two main items:

1: Admins can now use the new "Create new Blackmarket Item" verb, which
prompts them about the item, price, quantity, name and description of
the item they'd like to list. If successful, the item will be listed to
the black market, available to purchase by the crew.

Prices can be set very, very high, though I've limited the available
quantity to 100 per listing as a nice middle-ground value. The verb can
be used any number of times, allowing for admins to use the black market
to run events, as such. Of note, this verb will spawn a fresh typepath
of the object listed, so it cannot be used to list var-edited objects
as-is, but it's still quite useful for offering unique or rare items to
the crew based on the needs of the round.


2: This PR does a few tweaks to the "launch" shipping option on the
black market. The text displayed when having an object launched to the
station has been adjusted to reduce some ambiguity on if the item is
potentially deleted when launched. The launch behavior has not been
modified in this way, as the object is still launched at the station
using similar logic as before.

**However**, the item is now launched to the station in a faux-energy
bubble, which destroys itself and empties it's contents when it makes
thrown impact or is opened by hand. In practice, this is only noticeable
if you were outside when the order is launched at the station, or if the
crate makes impact with you. This allows for black market objects that
create spawners to arrive at the station harmlessly, which also
potentially reducing some of the randomness of an object being thrown at
the station, and then leaving the z-level immediately based on the extra
collision involved. Additionally, I've lowered the **shipping cost to
0** of launched items.

Misc:
Did some code cleanup by adding defines for each of the categories of
black market items, and a list-define for every category together.

## Why It's Good For The Game

I've wanted to have the option for admins to be able to list things for
the crew to buy for quite awhile now, without requiring them to barter
by hand or through a reliable means that can't be bypassed by 3
assistants with baseball bats. This offers that option, while also
having some flavor of being offered on the black market, if that's
desirable. Otherwise, it's no impact on the average round as it's
admin-only.

Regarding the launch options, this started as a grammar tweak as I was
talking with Arm on discord and the lack of clarity raised the whole
shipping option to our attention. After confirming that launching things
to the station was NOT, in fact a literal noob trap, just an awful
choice, I started work on the shield-bubble idea in an attempt to see if
I could try and reduce some of the randomness involved with that
shipping option. It already sucks due to the risk of going out into
space, there's no need to make it suck worse by potentially losing any
of the cooler items available on the black market at the same time. So,
price down and a mild consistency up. I also ran into #95183 while I was
testing all of this, so this should fix #95183.

Lastly, code cleanup. Made a few things look 3% nicer.
2026-03-02 16:42:04 -06:00
Alexis 5c5a636485 Merge branch 'master' into upstream-feb12-2026 2026-03-02 07:42:16 -05:00
MrMelbert 4fe16acd0b Minor shock() refactor (#95204)
## About The Pull Request

`shock` was copy pasted across a bunch of base types
I needed the behavior unified and it was fairly trivial to do 
So now we have `/obj/proc/shock` which all the old implementations call 

## Changelog

🆑 Melbert
refactor: Made some minor changes to how things like airlocks, vendors,
and autolathes shock you. Report any wierdness with that
/🆑
2026-02-24 21:12:59 -05:00
SmArtKar b42ebeb4c2 Adjusts all get_temperature() accesses to compare it to a value (#95236)
## About The Pull Request

``get_temperature()`` returns a value in kelvins, not a boolean. Trying
to treat it as such will result in ***any*** item with a thermal value,
like condensers, being treated as a lighter.

## Why It's Good For The Game

Consistency, allows us to have actually functioning cooling items that
don't act like lighters all the time.

## Changelog
🆑
fix: Condensers can no longer be used to ignite things
/🆑
2026-02-24 21:05:44 -05:00
Leland Kemble ba58f35ecf Fixes paper making bodybags inescapable (#95248)
## About The Pull Request

passes `user` in the `open()` for when someone attempts to leave an
unlocked, unwelded container such as a bodyag. The reason for the bug
was attempting to give a null user the pinned piece of paper.

Also adds an exception for no user being passed into `open()` for the
sake of revenant's defile & likely other things in the future.

Also fixes an unrelated bug where the reason that taking off the pinned
paper from a bodybag would stop it opening was a runtime rather than
returning false. Behaviour remains identical.

## Why It's Good For The Game

fixes #95247

## Changelog
🆑

fix: Pieces of paper no longer make bodybags inescapable

/🆑
2026-02-25 14:44:31 +13:00
Roxy 3dbcdd9be3 Add tap all ore vents admin secret (#95231)
## About The Pull Request

Add a new button to the fun tab of admin secrets that taps every ore
vent

## Why It's Good For The Game

Quick button to get steady stream of ore flowing into the station is
nice

## Changelog
🆑
admin: added tap all ore vents button to secrets panel
/🆑
2026-02-22 21:10:49 -05:00
Leland Kemble 4c0d9485b5 Fixes infinite machine guns (#95220)
## About The Pull Request

Fixes infinite `do_after()`s making infinite machine guns by making the
`do_after()`'s `target` the relevant machine gun.

## Why It's Good For The Game

fixes #95218

## Changelog
🆑

fix: Fixed infinite machine guns

/🆑
2026-02-22 09:47:12 -05:00