* Removes Starlight Config (#74289)
## About The Pull Request
It was config'd off to save init time, but having it function in testing
and mapping is more valuble then the time spend on it.
On that topic, we spend roughly 1.7 seconds of init on this.
~1.3 is spent handling the light sources and their light object
modifications (this is potentailly inflated since other sources could
cause the same objects to need updates)
~0.3 is spent searching for space turfs around lighting_objects during
init.
This will impact change_turf slightly too, costing about ~0.07 in local
testing.
It does save time for live however, since we avoid these config checks.
## Why It's Good For The Game
I believe this time is worth spending.
I've had people try to "fix" artifacts of starlight not being enabled,
things that aren't bugs.
The test environment should as much as we can make it reflect the visual
reality of the game. This helps ensure that
## Changelog
🆑
server: The starlight config has been removed, as it is enabled by
default
/🆑
* Removes Starlight Config
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Tram signs malfunction during tram malfunction (#74210)
## About The Pull Request
Tram signs will now display incorrect information when malfunctioning.
## Why It's Good For The Game
For improved Frogger gameplay, no more being crafty and reading the
indicator board to know if the tram is coming.
## Changelog
🆑 LT3
add: Tram signs will now malfunction when the tram is malfunctioning
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Tram signs malfunction during tram malfunction
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* create_midwife_eggs() now checks for safe atmos and spawns each cluster at a different location (#74051)
## About The Pull Request
Bad things always come in pairs. Spiders are no exception. Midwife
spiders, however, don't really benefit from spawning as a pair.
Ultimately, the room they spawn in will fill up with eggs, and then
there's nothing but uncomfortable waiting as they hatch.
Placing the two broodmothers in separate location gives room for each
broodmother to grow their own hive, and means that one wayward
maintcrawler or cyborg won't _completely_ trash the threat. Single
points of failure are BAD! I originally thought spider eggs spawning
together was unintended behavior (bug!!) because of how little of a
difference the second broodmother makes, but there's nothing pointing
towards that being true, so it goes as a balance change.
As for the safe atmos check, I was watching a round and saw both sets of
eggs spawn in a bombed-out room, leading to instant death upon hatching.
I saw it, said to myself "huh, that's lame", then made this PR.
This also makes a minor code adjustment, which makes it so that spider
eggs will spawn until there are no more valid turfs, rather than not
spawning any unless there are enough spots (which wasn't really an issue
until I made the proc pick distinct locations for each egg).
## Why It's Good For The Game
Atmos checks prevent people from spawning into certain death.
There's only so many tiles you can spit eggs out onto before it just
becomes a game of waiting. Giving each broodmother their own space to
work with means less waiting, and less risk of the entire threat being
wiped out by a passing greytider, broken window, or other minor
inconvenience. I guess this constitutes a spider buff, but hey, I'm of
the opinion that they could use the boost anyways.
## Changelog
🆑
balance: midwife spider eggs now spawn in separate locations. Divide and
conquer!
fix: midwife spider eggs can no longer generate in atmos-hazardous
areas.
/🆑
* create_midwife_eggs() now checks for safe atmos and spawns each cluster at a different location
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Fixes stray cargo pod false alarms runtiming. (#74135)
False alarms for stray cargo pods were no generating a impact_area which
is used for the announcements, I've added code that checks if the alarm
is false and generates one in this case.
* Fixes stray cargo pod false alarms runtiming.
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Audits usage of isanimal() vs isanimal_or_basic_mob() (#74029)
## About The Pull Request
There's a couple of open issues which fix places where only simple
animals were considered, but they are doing it piecemeal.
I decided to just go through every instance of `isanimal` or
`subtypesof(mob/living/simple_animal)` I could find, identify which
should also affect basic mobs, and fix them.
I left out the two others which are already in PR, I'm not stealing your
GBP.
Fixes https://github.com/tgstation/tgstation/issues/68881
## Why It's Good For The Game
Consistency, mostly.
As far as I can tell all of these things _should_ have effected basic
mobs, but didn't.
This fixes a fair number of bugs but also they're bugs that nobody
noticed or reported.
There are a couple of places I did not update which will need updating
in future. These are:
- Dextrousness checks, because basic mobs don't have that yet.
- The Charge cooldown action, because frankly I couldn't tell what it
was trying to do.
alright here goes
## Changelog
🆑
fix: Carp will once again be healed from being near carp rifts
fix: Sepia slime cores and the rewind camera now work on Ian
fix: Sapient ridden carp (or cows) can throw off their riders by shoving
them, or by performing the spin emote.
fix: Giant Spider AI will be disabled by the timestop spell
fix: Ian can eat envirochow
fix: Mice, Frogs, and Cockroaches will no longer set off bear traps
fix: You can put a macrobomb implant into Cayenne (or Ian)
fix: Ian will now recognise that being squeezed by a cyborg is a nice
hug
fix: The player panel will tell admins if you're currently a corgi
fix: The staff of storms deals massive damage to Bileworms and Giant
Spiders
fix: Ian will whimper if forced to scream
fix: Slimes can consume space carp
fix: Mice can be captured in xenoballs
fix: You can use pacifying potions on Giant Spiders
fix: Sgt Araneus can be fitted with a xenobiological radio implant
fix: Sapient corgis no longer count as living players for the purpose of
highlander escape objectives
fix: The random sentience event can now target corgis and sergeant
araneus
add: The random sentience event can target a wider array of farm animals
fix: Petsplosion wizard event can target corgis
add: Petsplosion wizard event will now target farm animals and
mothroaches
fix: The colossus possession crystal can now actually possess the
cockroach it spawns, does not kill you instantly upon ending possession
/🆑
* Audits usage of isanimal() vs isanimal_or_basic_mob()
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Admins can now customize the wisdom cow event. (#74045)
## About The Pull Request
Gives admins the ability to customize the spawn location of the cow and
the wisdom that it grants.
## Why It's Good For The Game
Wisdom cows lack any sort of customization at present, this allows
admins to set what type of wisdom which is granted which may be thematic
for events and adding positional spawn support for them is a pretty easy
addition.
## Changelog
🆑
admin: Admins can now customize the wisdom cow event.
/🆑
* Admins can now customize the wisdom cow event.
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Log forced events in game log (#74000)
## About The Pull Request
Forced events will be logged to game log. Not sure why we don't already.
## Why It's Good For The Game
Even outside of admins forcing events, new code that forces events to
trigger is added often. They should be logged to, just so it's not
completely up to guesswork that something happened
## Changelog
🆑 Melbert
admin: Logs when forced events trigger
/🆑
* Log forced events in game log
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Station Trait: Spider Infestation (#73893)
## About The Pull Request
Hate having your cables eaten by mice? Nanotrasen have heard your
complaints and settled on a natural, _organic_, and eco-friendly
solution.
When this station trait is active, roundstart and event mouse spawns
have a chance to instead be replaced with duct spiders (both will exist,
it doesn't remove mice).
Duct spiders are largely harmless to humans, actively hunt other
maintenance creatures (such as mice), and have only one _tiny_ downside.

These mobs can also sometimes be spawned by a minor scrubber clog event.
As a side note, all spider basic mobs with AI (except Araneus) will now
try to automatically fill a small area around them with webs.
Also I made it so that mobs will ignore their random_walking behaviour
if they're engaged in a `do_after`, just in case.
## Why It's Good For The Game
Adds a little bit of variety to things which can slightly annoy you in
maintenance.
Spiders will automatically make places they live in look like spiders
live there.
## Changelog
🆑
add: A station trait which sometimes populates maintenance with small
spiders. You can wear them as a hat if you wanted to have a spider on
your head for some reason.
add: Spider mobs will automatically start webbing up their environment.
/🆑
* Station Trait: Spider Infestation
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Grand Ritual: Alternate Wizard objective (Wizard Events II) (#72918)
Adds an alternate greentext objective for Wizards known as the "Grand
Ritual". This was initially the gimmick of a different wizard-related
antagonist downstream. I didn't get permission to port it, so I'm
attaching it to regular Wizards instead.
Wizards will spawn in with a new Grand Ritual button next to their
antagonist info button. Pressing it will pinpoint them towards their
next Ritual Location (a randomly chosen region of the space station).
Once within that location, pressing it will summon a magic circle and
obliterate any dense objects which are in the way. This also puts the
ability on a two minute cooldown.
Clicking on the magic circle with an empty hand will begin a three-stage
invocation to gather magical power. You can interrupt this invocation at
any time and will resume from the last stage you completed (if you
finished two stages you only need to do one more).
Once you complete a ritual, a random event will be triggered based on
how many rituals you have performed so far. These tend to be ones which
annoy the crew in some manner, and Wizard Events are included in the
list. Additionally, something weird will usually happen to the room you
are in.
Then you are assigned a new location and can toddle off to do it again.
Once you have done this three times, you will be picked up by the
station's sensors every time you start a subsequent ritual and should
expect annoyed company to come investigate.
Once you have done this six times, you can finally spend all of that
accumulated power on the seventh Grand Finale ritual. Completing this
grants you victory at the end of the round and will have a larger,
flashier effect which you can pick from a list of options, think of it
like a wizard equivalent of a Traitor Final Objective or Heretic
Ascension.
After that you can still keep doing rituals if you want to pester the
crew further by summoning more random events, you've already "won" at
this point so now it's your job to make them want to go home.
I think it'd be more fun to just find out what the Finale ritual can do
by seeing it happen but maintainers will probably want a list of its
precise capabilities, so here it is:
Currently completing a ritual also has a chance to create Heretic
Reality Tears (of both varieties, available for Heretics to eat and
visible to crew) as a kind of cross-antagonist interaction which seemed
to make sense to me but if this seems thematically or mechanically
inappropriate it's easy to strip out.
* wew
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Fix admin lookup/follow on disease outbreak [NO GBP] (#73717)
## About The Pull Request
In https://github.com/tgstation/tgstation/pull/73599 my copy/paste
screwup removed the admin lookup in Disease Outbreak: Advanced. Puts it
back.
## Why It's Good For The Game
Admins are supposed to have a link to jump/follow, not message the ckey.
## Changelog
🆑 LT3
fix: Admins can jump to/follow patient zero of a disease outbreak again
/🆑
* Fix admin lookup/follow on disease outbreak [NO GBP]
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Buff scythes, goats, and plantbgone vs PLANT biotypes (#72889)
This buffs scythes, goats, and plantbgone vs PLANT biotypes:
- Scythes now deal x1.5 damage to venus flytraps (3 hits to kill)
- Scythes now target the flower bud vines
- Goats now target flower bud vines and deal 15 damage to PLANT biotypes
- Goats have a eating sound whenever they bite PLANT biotypes
- Plantbgone now does 2 dmg per unit to PLANT biotypes (10 dmg per
spray)
- Plantbgone now has a 75% chance to remove weeds and deals large damage
to flower buds
- Weed control crates now come with a pair of leather gloves
- Golems are immune to thorn effects
- Any kind of thick glove material will prevent thorn effects when
attacking
- Flower buds will now take x4 damage from fire and sharp weapons
(unless they have fire trait)
- Regular scythes are now a sharp object
Also this fixes a few runtimes with spacevines and nulls. The bane
element now accepts `mob_biotypes` bitflags as an argument.
Before my changes:
- Plant-b-gone was doing 0.4 dmg per unit to PLANT biotypes (2 dmg per
spray)
- Scythes took 5 hits to kill venus flytraps
- Goats only affected podpeople
- Flower bud vines were being ignored by weed killing code
- Plantbgone only had a 50% chance to remove weeds (and this was very
inconsistent due to RNG)
- Botanical gloves and thick gloves didn't protect from thorns
- Golems were getting pierced by thorns despite having pierce immunity
- Flower buds were not taking the x4 damage like they should have been
- Regular scythes were not a sharp object, but other scythes
(chaplain's, megafauna loot) were sharp
This makes the weed killer crate more effective since people were
complaining about it being worthless vs vines and flower buds. These
changes give people more options to respond to threats vs plants.
🆑
add: Add a pair of leather gloves to weed control crate
balance: Mobs with the PLANT biotypes (venus flytraps, pod people,
killer tomatoes) are now much weaker vs scythes, goats, and plantbgone.
balance: Plantbgone is now more effective at destroying weeds.
balance: Regular scythes are now a sharp object
fix: Fixed scythes, goats, and plantbgone not affecting flower bud
vines.
fix: Thick and botanical gloves not protecting from thorns
fix: Golems not having pierce immunity from thorns
fix: Runtime where vines tried to spread into null turf
fix: Runtime where null vines that were destroyed were trying to spread
to nearby turfs
soundadd: Add eat food sound when goats eat plants
code: Improved goat targeting code
code: The bane element now accepts `mob_biotypes` bitflags as an
argument.
/🆑
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* You can't teleport easter prizes with your brain (#73680)
## About The Pull Request
Fixes#69258
I assume nobody else tackled this because it was _too_ simple and they
assumed someone else would.
Opening a kinder egg will now deposit its contents in the _egg's_ turf,
which has the same result as it did before for using it in your actual
hand, and no longer teleports objects if done via telekinesis.
## Why It's Good For The Game
Minor consistency issue.
## Changelog
🆑
fix: Opening a surprise egg with your mind will no longer teleport the
contents
/🆑
* You can't teleport easter prizes with your brain
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Improves admin rod logging and fixes un-aimed rods being aimed. (#73668)
## About The Pull Request
Logs wont say a rod has been aimed at null location anymore and instead
will say "a random location"
Also admin rods that were not aimed were retaining the location set by
previous rods which is bad since it meant un-aimed rods were actually
aimed.
## Why It's Good For The Game
Bug fix + better logging.
## Changelog
🆑
fix: Un-aimed admin rods will now actually be un-aimed instead of aimed
at the previous aimed rods target.
admin: Admin aimed rods will now log that they're aimed randomly when
not aimed.
/🆑
* Improves admin rod logging and fixes un-aimed rods being aimed.
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Missed
* Disease Outbreak retries on event setup failure [NO GBP] (#73599)
## About The Pull Request
- When Disease Outbreak starts, instead of failing on the first attempt
picks a new target if the chosen target is no longer valid for
infection.
- Corrects transmission of disease, assigning a stat. Positive viruses
with a resistance higher than transmissibility provide immunity from the
disease outbreak.
- Improved logging and admin information
## Why It's Good For The Game
- Along with https://github.com/tgstation/tgstation/pull/73596 this
makes the event reliably fire instead of giving up if the first
selection has changed during setup. (Death, new immunity, infected with
different virus, whatever.)
- Disease transmits as expected to unprotected. Positive viruses provide
immunity from infection based on their resistance stat.
## Changelog
🆑 LT3
fix: Disease Outbreak doesn't give up so easily when trying to start the
event
balance: Disease Outbreak will not spawn on positive virus mobs, but can
be transmitted if resistance is low
fix: Disease Outbreak creates an entry in the virus log like it should
admin: Admins can see Disease Outbreak virus stats when the event starts
/🆑
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Radiation Leak event can no longer target machinery that doesn't use power (#73609)
## About The Pull Request
The Radiation Leak event will no longer target machinery that doesn't
use power. This includes a lot of non-machine machinery, like the
anomalous crystal, the chef's icecream vat, or IV drips.
## Why It's Good For The Game
Closes#73558.
## Changelog
🆑 Rhials
fix: The radiation leak event no longer targets machinery that doesn't
use power.
/🆑
* Radiation Leak event can no longer target machinery that doesn't use power
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Disease Outbreak/Heart Attack candidate lists clear themselves before generating (#73596)
## About The Pull Request
When canSpawnEvent is run for the disease outbreak event, it would
generate_candidates() and add whoever was a valid infectee to a list.
Unfortunately, this list would not be cleared until the event was
actually run, meaning the candidate list could become malformed if the
event was cancelled, interrupted, or otherwise stopped before it could
properly start.
Additionally, this issue would arise if the admin setup process was
begun without actually running the event, or if two admins were
attempting to press buttons at the same time.
The list could contain duplicates, or players who were valid candidates
on the first candidacy check, but not at the present moment. The list
now clears itself every time it is generated, meaning that a fresh
candidate list is made every time one is needed.
Since the heart attack event uses the same candidate generating system
as the disease event, the change has been made there as well.
## Why It's Good For The Game
Closes#73552, hopefully? I can't imagine it's an issue with how the
candidates are selected, and am like 99% sure it's just the list getting
fudged somehow.
## Changelog
🆑
fix: The disease outbreak/heart attack event candidate list will now
clear itself before generating.
/🆑
* Disease Outbreak/Heart Attack candidate lists clear themselves before generating
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Fixes Disease Outbreak: Advanced [NO GBP] (#73358)
## About The Pull Request
- Corrects severity thresholds for med/harmful/dangerous
- Removes tier 1 cures from cure pool
- Dangerous/Biohazard disease correctly show up on HUD at spawn
- RNG actually listens to what severity the symptoms are supposed to be
- Fixes various symptoms that were in the wrong severity list
- Disease is now assigned illness name based on its highest severity
component
- Converts old code to snake_case
## Why It's Good For The Game
Disease Outbreak works as expected, both on random spawn or admin custom
disease creation. Ensures that diseases that are harmful or potential
for quick spread are visible to scanners and HUDs.
## Changelog
🆑 LT3
code: Disease Outbreak: Disease max severity replaced with requested
severity
code: Disease Outbreak: Generated disease now includes symptom based
name
code: Disease Outbreak: Disease name is now included in the station
announcement
code: Disease Outbreak: Now in snake case
balance: Disease Outbreak: Tier 1 cures removed from pool
fix: Disease Outbreak: Dangerous/Biohazard diseases are now visible
fix: Disease Outbreak: Event setup generates the correct severity
fix: Disease Outbreak: Various potential symptoms were in the wrong
symptom pool
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Fixes Disease Outbreak: Advanced [NO GBP]
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Adds a new event, "Radiation Leak" (#72655)
Adds a new random event, "Radiation Leak".
A random machine in a random department will begin leaking radiation.
This includes a radiation aura around it, and semi-regular puffs of
smoke clouds containing mutagen and polonium.
The machine will stop leaking after some time, but can also be stopped
by using a random tool on it, indicated in its examine text.
I added a new "radiation emitter" component, for simple "emits
radiation" behavior. Then I made the radioactive mutation use it. This
means that the radioactive gene emits radiation while on stasis and
dead, rather than only in life.
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Admins can now customize the stray drop pod event. (#72975)
## About The Pull Request
Gives admins the ability to rig where the stray drop pod will drop in
addition to rigging what type of cargo crate regular drop pods contains
and how many telecrystals and which uplink syndicate droppods will use.
## Why It's Good For The Game
More control for admins regarding drop pods, while admins can spawn drop
pods normally these drop pods have slightly different behavior that
changes their usecase. I think it'd be highly useful for admins to for
example spawn in a clown ops surplus crate as part of a TC trade or
randomly spawn a crate full of gnomes thats announced to the crew so
they can hunt for them.
## Changelog
🆑
admin: Admins can now customize the crate type and landing zone of the
stray drop pod event.
/🆑
* Admins can now customize the stray drop pod event.
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Adds the Ectoplasmic Outburst, a rare ghost-centric anomaly event (#73024)
## About The Pull Request
This PR description might be a bit rushed because I accidentally
submitted the PR and want to bang out a quick explanation of what this
is before people start asking questions.
Adds a new, rare, ghost-themed anomaly event -- The Ectoplasmic
Outburst.

This event increases in power as more ghosts orbit it, with three
important thresholds to meet.
If 10% or more of all active observers are orbiting the anomaly, an
effect will occur in the nearby area akin to the revenant's defile
spell, damaging flooring, windows, and making a mess.
If 35% or more are orbiting the anomaly, nearby objects in the effect
radius have a chance to become haunted, and will fling themselves at
anyone nearby for a bit. Spooky!
Now, at 50% or more participation, things get serious. Ghosts orbiting
the anomaly will be polled to be brought back into the world for a brief
period as a vengeful spirit, anchored to a SUPER spooky ghost portal.
The portal closes after two minutes (alternatively, smash it with a
toolbox) and deletes all of the ghosts it spawned. Vengeful spirits are
mostly just meant to smash stuff and be a nuisance while they can. It's
a wonderful opportunity to let deadchat desalinate a little.

Oh, also, the anomaly is deadchat controlled. With enough ghosts, you
could theoretically outrun anyone trying to neutralize it!
The associated reactive armor has an effect similar to the anomaly,
haunting nearby objects for a time when the wearer is struck. Not
particularly outstanding, but it can introduce an element of chaos into
a fight that your opponent might not expect.
## Why It's Good For The Game
Anomaly events are great for ghosts. Why not make one tailored just for
them!
Gives admins something to spawn when a wizard has killed half of the
crew but it's not quiiiite time for an ERT.
It's a bit of a silly event with a novelty reward, but I think it's rare
enough not to be a huge issue.
## Changelog
🆑 Rhials
add: Ectoplasmic Outburst anomaly event
add: Reactive Ectoplasm Armor
/🆑
* Adds the Ectoplasmic Outburst, a rare ghost-centric anomaly event
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Refactors Admin Setups on Forced Events + Refactors Vending Sentience + Refactors Shuttle Loans (#72998)
- [x] TEST EVERYTHING
tested:
- Pirates
- Vending Machines
- Shuttle Catastrophe
- Anomalies
- Immovable Rod
- Sandstorms
- Scrubber Overflow
- Stray Meteor
- Madness
- Department Revolt (Well obviously, it is my super robust code after
all)
- Shuttle Loan
- Mass Hallucination
- Heart Attack
- False Alarm
Disease Outbreak is probably fine aha... It correctly reports that there
are no candidates before aborting.
allow you to let the game decide where previously you had to choose!
I need to refactor and datumize how admins set up special conditions on
forced events, so I did! Now `/datum/event_admin_setup` handles admin
settings, with a few prototypes to make it easier to give events admin
options in the future. This was exhausting and what 90% of the pr is.
The code was so bad I could not datumize the admin part of it so I
cleaned it up, making a lot of things in the event get decided in
`setup()` where they should.
The code was so bad I could not datumize the admin part of it so I
cleaned it up AS WELL, by datumizing the shuttle loans. Should be easier
to add more types in the future, actually kinda stoked.
This is preparation for a tgui change to ForceEvent.ts an admin has
requested. Phew!
🆑
refactor: Refactored a bunch of admin-related event code, hopefully you
won't notice much
admin: ... But you specifically may notice some minor differences. Raw
inputs changed into tgui ones, minor soul removal, etc.
/🆑
* remove override
* merge conflict
* dm update
* merge conflict
---------
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Big Paperwork: Adds the Paperwork loan offer, paperwork fraud, and ancient paperwork! (#70863)
Adds paperwork -- an indecipherable mess of papers that only a seasoned
department head could hope to decipher. If processed and sent to Central
Command via the cargo shuttle, the budget gets a bonus.
Paperwork is distributed through a new Shuttle Loan offer. A nearby
station needs some paperwork reviewed. Do you have what it takes to
handle BIG PAPERWORK?
Processing paperwork is relatively simple. You can inspect it to see
which head of staff it "belongs" to, and you can use their stamp to
complete it. You get a lot of these, so the bonuses can add up if you
get them all in. Just be careful not to return any unprocessed
paperwork.
With big paperwork comes big paperwork fraud, and big fines.
You can photocopy your completed paperwork to double-dip with Central
Command and squeeze out a little bit more money. The more paperwork
fraud you commit, the higher the chance you'll be caught and fined.
On top of that:
Some say that in the long forgotten halls of maintenance, there lies
_ancient paperwork_. Documents whose importance has long since passed,
but are still important for bookkeeping at Central Command. With a keen
eye, you might spot one of these while scouring through maintenance.
Make sure it gets forwarded to the right person, cargo will thank you.
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Fixes admin "power failure" secret. (#73277)
## About The Pull Request
- Fixes "power failure" secret not working.
`GLOB.the_station_areas` is a list of types, not list of areas.
This `as anything` was causing runtimes, as it was accessing values on
types, and not area instances.
Swaps it over to use `GLOB.areas` + location check that the areas are on
station Z level.
- Fixes "power failure" secret having no announcement if no grid check
has occurred
`GLOB.power_failure_message_cooldown` starts at 0, so it was always
lower than `world.time` if an admin uses it when no grid check has
occurred. Delving deeper, these should not have been linked whatsoever.
The power failure spam prevention is now tied to the grid check event
itself. I also don't believe it to be necessary, as we fixed discounts
having infinite stock, but I'll keep it just cause.
## Why It's Good For The Game
Secrets work as advertised
## Changelog
🆑 Melbert
fix: Admins, "All areas unpowered" in the secrets menu will now function
again.
/🆑
* Fixes admin "power failure" secret.
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Update Event: Tram Malfunction (#73118)
## About The Pull Request
We've had it for a couple months and from watching, making some tweaks
the parameters based on how it's worked out in the real world.
- Spread between min and max damage is reduced
- Event length decreased
- Calculates damage based on the mob's max health instead of static
value
- Lethality multiplier during event decreased
## Why It's Good For The Game
- Min damage and max damage were too low and too high, respectively for
mobs with 100 maxHealth
- Tram hits won't have those occurrences of it doing like 500 damage
- 15 minutes is too long, people forget it's even running. Better to
have shorter bouts of malfunction, potentially more often
## Changelog
🆑 LT3
balance: Tram Malfunction: Decreased spread between min and max damage
balance: Tram Malfunction: Event length decreased
balance: Tram Malfunction: Damage multiplier added to account for
different base health levels
balance: Tram Malfunction: Event collision lethality multiplier
decreased
/🆑
* Update Event: Tram Malfunction
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Tram Mk. IV hotfixes [NO GBP] (#73243)
## About The Pull Request
Fixes some little issues in
https://github.com/tgstation/tgstation/pull/73057
- tram doors only crush people if either emagged (100%) or
malfunctioning (15%)
- emag works on tram doors
- crossing signals use correct amount of power, increased brightness
- crossing signals and destination signs consume power when idle
- green static crossing signal shuts off when power lost
- left/right emag icons are swapped
- tram bench override shouldn't override all benches | Fixes
https://github.com/tgstation/tgstation/issues/73250
- reduced damage from tram door crushing (60 > 45)
## Changelog
🆑 LT3
fix: Fixed motion sensors on tram doors, they will now crush you much
less often!
balance: Reduced damage from being crushed by tram doors
code: Un-nested emag blacklist
code: emag works properly on tram doors
fix: Backwards tram door sparks animation
fix: Tram displays power consumption
fix: Tram crossing signals power consumption
balance: Increased brightness on tram crossing signals
fix: West Wing NW/SW and East Wing NE/SE crossing signals now shut off
when power is lost
fix: Tram benches don't override standard benches
fix: Reduced saturation and brightness of standard bench
/🆑
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Tram Mk. IV hotfixes [NO GBP]
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Fixes ghost roles announcing when they fail (#73175)
## About The Pull Request
Fixes ghost roles from being announced if they haven't managed to get a
player to spawn as the mob. We do this by killing and returning when we
fail to spawn a player, while the ruleset isn't processing.
Also makes these rulesets FAIL by default, so they aren't secretly
passing events that don't exist.
## Why It's Good For The Game
Closes https://github.com/tgstation/tgstation/issues/38241
Players no longer get announced about events that aren't occurring, and
weren't intended to be played (like fake announcements), making actual
fake announcements actually fake.
## Changelog
🆑
fix: Announcements of ghost roles don't play if no one accepts the poll
to play as the role.
/🆑
* Fixes ghost roles announcing when they fail
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Adds an ghost orbit popup for the wise cow (#73065)
## About The Pull Request
Ghosts now get a "hey look orbit here there's something cool going on"
alert when a wisdom cow spawns. This only applies to event spawns, not
any instance of a wisdom cow spawning.
This not being a thing has annoyed me for a LONG TIME and I've kept on
forgetting to do it.
## Why It's Good For The Game
There might not be a huge reason to orbit a wisdom cow, since it's not a
particularly juicy event or anything. Regardless, it gives deadchat
somewhere to congregate and appreciate the cow's extensive dialogue
choices before a player disintegrates it.
## Changelog
🆑
qol: ghosts now get an orbit notification for wise cows!
/🆑
Co-authored-by: Rhials <Datguy33456@gmail.com>
Carp won't eat an empty space station (#73048)
## About The Pull Request
I saw complaints in a few places that after changes to make them try to
come inside, Carp Migration would fuck up marathon servers or other
rounds where people playing with very low population.
Trivial fix: Now the event won't trigger if there are less than 12
players, rather than the previous completely pointless requirement of
two players (why would it be unacceptable for carp to haunt the solar
panels if there was only one player?)
## Why It's Good For The Game
Carp aren't individually very dangerous but if there's more of them than
there are you it can be a problem. The maintenance issues also add up if
you're playing a really long round with no people in it to do a
construction project.
## Changelog
🆑
balance: The carp migration event won't trigger if there are fewer than
12 players.
/🆑
Co-authored-by: Jacquerel <hnevard@gmail.com>
Adds admin panel description to Tram Malfunction (#72820)
- Adds missing event panel description explaining what Tram Malfunction
does.
- Modifies announcement to let the crew also know what Tram Malfunction
does.
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Unwacks immovable rod in hyperspace (#72506)
closes#72497
Immovable rods, including wizard, will ignore the hyperspace drift
🆑
fix: fixes wizard rod form infinitely travelling in hyperspace
/🆑
* Unwacks immovable rod in hyperspace
Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Adds an announce_to_ghosts for the Scrubber Clog event (#72556)
## About The Pull Request
Gives the ghosts an orbit announcement when the Scrubber Clog event
occurs.
I don't think I should get GBP for this because it was just something I
forgot when making the event.
## Why It's Good For The Game
It's standard for most other events and prevents people (me) from having
to fly over to the scrubber.
## Changelog
🆑 Rhials
qol: The Scrubber Clog event now gives an orbit popup to ghosts!
/🆑
* Adds an announce_to_ghosts for the Scrubber Clog event
Co-authored-by: Rhials <Datguy33456@gmail.com>