* Grey Tide event light behavior changes and code tidiness (#71230)
## About The Pull Request
Makes a number of changes to the Grey Tide event, some of which are and
some of which aren't player facing.
Player facing bits:
- The lights will once again turn off when the event ends and the doors
begin opening. Originally, the lights would all shatter when the event
hit, providing a cover of darkness for opportunists to sneak around
under. Unfortunately this would prevent the AI from fixing the doors
until the lights were replaced, leading to headaches and the removal of
this functionality in #43159. Now, the lights are simply turned off at
the APC instead of shattered.
- The lights now flicker at certain intervals as the event is running,
rather than just right at the start.
- Announcement has been slightly modified to indicate that the event
hits more than just airlocks.
- Event runs way faster. Doors open all at once, rather than
one-at-a-time.
And now for the non player-facing bits:
- The filename is now grey_tide.dm instead of prison_break.dm. The event
was effectively re-branded to the Grey Tide event six years ago, but the
filename was unchaged.
- potential_areas is now a part of setup instead of a var on the
round_event.
- Cleans up instances of single-character varnames and stuff not in
snake case.
- The event now checks if it has any valid areas (will it work or not)
at the start, rather than at the end.
- The event now sends a global signal when run, rather than checking
everything in the entire world. It should run faster now.
- Everything that can be affected by the grey tide event now stores its
functionality on a signal handler, including the light flickers
## Why It's Good For The Game
Makes the grey tide event a bit more interesting and easier to take
advantage of. Cleans up the backend code a bit.
## Changelog
🆑 Rhials
balance: The lights will now flicker more frequently before a Grey Tide
event
balance: The lights will now be shut off via the APC when the Grey Tide
event opens up a department.
code: Makes some miscellaneous code improvements to the Grey Tide event
code: Grey tide event runs much faster
code: Renames prison_break.dm to grey_tide.dm
/🆑
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Grey Tide event light behavior changes and code tidiness
Co-authored-by: Rhials <Datguy33456@gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Fixup list helpers, remove listoflist footgun from generic list procs, remove duplicated procs. (#71280)
Add helper defines for handling list values in lists to remove the
footgun where `+=` and `-=` with lists as the Right hand side argument
causes the list contents to be added or removed, not the list itself.
Use said helpers to remove the footgun from list helpers that could
reasonably be expected to get called on list of lists.
Remove duplicated clear nulls from list proc. this pr will fail to
compile until i go move those over to the preexisting one, but the
compile errors will tell me where all the consumers are.
This likely fixes some bug(s) in the issue tracker, but we don't know
what they are.
* Fixup list helpers, remove listoflist footgun from generic list procs, remove duplicated procs.
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Wall mounted vendors are no longer a Brand Intelligence liability (#71468)
## About The Pull Request
Wall mounted vendors (currently just the wallmed) are no longer able to
be selected or spread to during the Brand Intelligence event. This is
done by checking the density variable, rather than just excluding the
wallmed, in case any other wall mounted vendors are implemented.
Also, adds and removes empty lines that were bugging me.
## Why It's Good For The Game
Closes#71465.
Wall mounted vendors look wonky when they leave the wall due to their
visual offset, and since they don't look like vending machines it can be
a bit confusing. Less buggy vendors and more immersive slapstick comedy.
## Changelog
🆑
fix: Wall mounted vendors can no longer receive brand intelligence.
/🆑
* Wall mounted vendors are no longer a Brand Intelligence liability
Co-authored-by: Rhials <Datguy33456@gmail.com>
* New random event: Tram Malfunction (#71234)
## About The Pull Request
Random event where for a couple minutes the tram crossing signals stop
working, and it hits hard.
## Why It's Good For The Game
Be careful, don't become a tram statistic! Adds a bit of 'Frogger'
gameplay for a couple minutes.
## Changelog
🆑 LT3
add: New random event added: Tram Malfunction
/🆑
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* New random event: Tram Malfunction
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Adds support for non-science techwebs (+Config) (#71070)
## About The Pull Request
This is an expanding of
https://github.com/tgstation/tgstation/pull/69708
Adds a config to not connect machines to a techweb at the start of a
round
Adds the ability to multitool a server to get its techweb in its buffer,
which can then be used on machines to sync them.
Adds support for some machines to not cry when they don't have a techweb
linked to it, in case they actually don't.
If the config to not have machines connected to the science server is
enabled, research servers will make their own techwebs instead. This is
barebones though and would need more work if this option is used.
For misc stuff:
- I replaced checking ``GLOB.machines`` for research servers, to instead
check ``SSresearch.servers``, where we can use ``as anything``.
- Removed unused vars on the RD server control
- I renamed the operating computer's .dm file to remove the capitalized
letter from it. It's now operating_computer instead of Operations.
## Why It's Good For The Game
This is adding support for 2 different cases that can be used in the
future:
1. Off-station roles, we can make roles like Oldstation have their own
techweb so they don't ruin science's efforts, or use their advanced
research to get things we don't want, or even possibly have some
blacklist webs for ghost roles (like teleporters) so that way we don't
need to have this dance where we have to give them a very specific
amount of materials for them to do things while not being able to get a
teleporter and leaving. I heard discussions that people wanted this a
while back, and one of the main things preventing this from happening is
the lack of support. Hopefully this is encouragement to make it a
reality, because I think it would be a really cool expansion of ghost
roles and a good way to prevent them from messing with the round in
progress.
2. Downstreams who want to do different things with Science. Personally
I made this PR with voidcrew(shiptest) in mind and think this would make
their lives easier. I didn't expand too much on this because I'm leaving
up mostly to the downstreams to figure out what they want to do with
these systems.
## Changelog
This generally isn't really player facing, since most of the changes
would only come into effect if the config is enabled??
🆑
fix: Research servers now only show servers connected to their techweb.
/🆑
* Adds support for non-science techwebs (+Config)
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Moves flick_overlay to atom instead of being global (#71045)
## About The Pull Request
Moves flick_overlay and flick_overlay_view to atom instead of being a
global proc
## Why It's Good For The Game
General performance and syntaxical improvements, makes it easier to
retrieve iconstates
## Changelog
🆑
fix: flick_overlay is an atom proc
/🆑
Co-authored-by: etherware-novice <candy@ notarealaddr.com>
Co-authored-by: Candycaneannihalator <candycane@ thisisnotarealaddr.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Moves flick_overlay to atom instead of being global
* modular flick
Co-authored-by: texan-down-under <73374039+etherware-novice@users.noreply.github.com>
Co-authored-by: etherware-novice <candy@ notarealaddr.com>
Co-authored-by: Candycaneannihalator <candycane@ thisisnotarealaddr.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* should be it
* continuation
* T4 parts are now obsolete
* last touchups
* how did i not notice this good god
* less varedits
* Update pirate_enclave.dmm
* a
* untested need to do this at home later
* ohmygoddddddddd
* Update pirate_enclave.dmm
* doesn't work but i wanna sleep
* gotta test later
* should be it
* Update pirate_enclave.dmm
* Update pirate_enclave.dmm
* Update pirates.dm
* Update pirates.dm
* addresses issues
* addresses issues
* Update pirate_enclave.dmm
* Update pirate_enclave.dmm
* pipe
* Update pirate_enclave.dmm
* Update pirate_enclave.dmm
* a little bit more nice
* i did something?
* buttons i forgot
* Update enclave_pirates.dm
* stupid but it works eh
* this was unnoticed for a stupidly long time
* Update pirate_enclave.dmm
* Update pirate_enclave.dmm
* Update pirate_enclave.dmm
* Apply suggestions from code review
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* it works; good
* should work
* complete remap
* right
* hopefully final remap
* Update pirate_nri_raider.dmm
* пщщв
пщщв утщгпр ш пгуыы,,,,
* Update enclave_pirates.dm
* Update pirates.dm
* Update pirate_nri_raider.dmm
* guh
* DOES THIS EVEN WORK?
I HAVE NO IDEA (It does)
* I don't care at this point
* sounds (cool ones)
* I was asked to
* I was asked to
* shto
* Update pirate_nri_raider.dmm
* :(
* announcer and sound changes thing uh yer
* last touchups
* new batch of improvements
* Update modular_skyrat/modules/assault_operatives/code/base_alarm.dm
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* Update pirate_nri_raider.dmm
* it is i
the cockroach
* it owrks i dont care
* fixes i suppose
* Update pirate_nri_raider.dmm
* Update pirate_nri_raider.dmm
* Update nri_raiders.dm
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* Refactors Rabbits to be a Basic Mob (#71205)
## About The Pull Request
Back in #64175, I reworked rabbits such that their base behavior was
just a cute fluffy snuggle monster, and not have the "easter" variant be
the default. Now that we're transitioning everything from simple_animal
to basic, I figured now was the time to shift that over too.
Pretty much everything should be the same as it was before, I even took
some time to add behavior to some elements to allow it to work (let me
know if I should handle it a different way) but rabbits as a
simple_animal and rabbits as a basic mob should now not be very
distinguishable (beyond the fact that they only speak via subtrees).
I also got rid of the single-letter icon_states in the DMI and
accomodated the code to fix because I finally got irritated enough to do
something about that.
## Why It's Good For The Game
Although I didn't really have any pressing urge to add more complex AI
behavior to rabbits than just pretty much re-implementing what they had
as a simple_animal, this is an excellent first-step to allowing much
more extensible behaviors to these fuzzy creatures.
Also, it takes three more mobs off "the frozen list". Whoopie!
## Changelog
🆑
fix: Dead Black Space Rabbits should now properly have a sprite.
/🆑
The UpdatePaths is useless for the maps we have on our repository
(holodecks use a spawner code-side), but I'm going to be nice to
downstreams who need it.
* Refactors Rabbits to be a Basic Mob
* Fixed the CI and the rabbit on VoidRaptor
* Oops, forgot to remove it from here too
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* The Shuttle Loan event can now roll multiple times per round (#70819)
## About The Pull Request
The Shuttle Loan event can now roll multiple times (up to 3) per round.
When a loan is offered, the event cannot roll again until the current
offer is accepted. If an admin forces the event, the current loan offer
will be replaced by the new one. A specific type of loan offer will not
appear more than once per round under normal circumstances.
## Why It's Good For The Game
I think the Shuttle Loan event is really neat. It's presents Cargo with
the option to take on risk and reap the rewards, with some opportunities
for things to go very very wrong. There are twice as many loan offers as
there were when this event was introduced nine years ago, with more
potentially on the way (wink wink nudge nudge). I don't think it should
be constrained to just one per round any longer.
## Changelog
🆑
balance: The Shuttle Loan event no longer only rolls once per round.
/🆑
* The Shuttle Loan event can now roll multiple times per round
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Refactors disease_outbreak, bisects disease event into the "Classic" and "Advanced" disease events (#70489)
Refactors disease_outbreak, bisects disease event into the "Classic" and "Advanced" disease events
* Refactors disease_outbreak, bisects disease event into the "Classic" and "Advanced" disease events
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Wizard DLC - Tower of Babel (#69629)
About The Pull Request
This adds a new status effect called - Tower of Babel
Any carbon mob afflicted by the status effect will lose knowledge of every known language and gain a randomized one as a replacement. The affected mob will also be hit with a depressing moodlet that lasts for 15 seconds. Silicons are immune to all effects.
This effect is implemented in several ways:
Tower of Babel wizard event (all crew on the station z level are affected. The wizard is not and gains mastery of every language to taunt their victims)
Admin smite option
Admin secret event (can be reversed)
Staff of Babel (formerly the Staff of Sapping) will spawn during spawn magic wizard event
Magicarp will randomly shoot bolts of babel
Staff of Chaos will randomly shoot bolts of babel
Overdosing on Mushroom Hallucinogen will temporarily and sporadically acquire the effect
The effect can be blocked or cured in several ways:
Curators are given immunity
Reading a book of babel (via lavaland loot) cures and gives immunity
Reading a language book cures and gives immunity ONLY for that particular language
Note - The Tower of Babel does not allow tongueless, mute, or tongue tied people the ability to speak
* Wizard DLC - Tower of Babel
Co-authored-by: Tim <timothymtorres@gmail.com>
* [NO GBP] Cleans up some round_event_control setup variables in certain events (#70468)
* Choosing admin setup options on certain events will no longer retain the chosen options for future events.
* [NO GBP] Cleans up some round_event_control setup variables in certain events
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Adds a new kudzu mutation timid and lowers severity of the mutation temperature stabilisation from average to minor (#70306)
* [Code Bounty] Adds a new kudzu mutation timid and lowers severity of the mutation temperature stabilisation from average to minor
Co-authored-by: Salex08 <33989683+Salex08@users.noreply.github.com>
* Makes wizard event not run when it isnt supposed to (#70178)
fix: Wizard's anonymous event won't run near the start of a round anymore.
* Makes wizard event not run when it isnt supposed to
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* fixes scrubber event runtimes on runtime station (#70114)
* fixes scrubber event runtimes on runtime station
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Refactors the Heart Attack event. Adds a new related achievement and admin setup. (#70048)
* So, this moves the "candidate" selection into round_event_control and integrates it into part of canspawnevent. The actual selection is part of a new proc, generate_candidates, which was created so that canspawnevent() and admin_setup() (WHICH OVERRIDES CANSPAWNEVENT AND THEREFORE CANDIDATE GENERATION) don't have to share any code.
The heart attack candidates list is passed down from the event control to the round event. This is used for running a second series of checks via attack_heart(), a new proc on the round event.
The heart attack now fires on every tick, until "attacks_left" reaches zero, which is a value inhereted from the round event control (default 1, modifiable in admin setup).
In attack_heart, the victim pick_weight-ed from the victims (formerly candidates) and is checked to see if they'll be spared from their fate for some special reason. This is so that feedback can be given and smugness can be felt over surviving a heart attack. This check was literally the only thing I wanted to implement in this PR and I ended up rewriting most of the entire thing. Wowee.
* Refactors the Heart Attack event. Adds a new related achievement and admin setup.
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Completely refactors hallucinations, and also adds a few
* delete 5 old hallucination types that should have been removed
* Fixed old leftover tips conflicts
* Fixes all the leftover conflicts and otherwise broken code
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Adds the option to throw a random meteor in admin_setup for stray_meteor event (#69865)
admin complaints reduced by 11%
* Adds the option to throw a random meteor in admin_setup for stray_meteor event
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Merges major_dust event into the space_dust file (#69866)
* wowee, that should be moved
* removes double description definition dumbness
* removes that comment, too
* Merges major_dust event into the space_dust file
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Categorizes the scrubber event (and gives it a description) (#69675)
* categorizes both scrubber events under the Janitorial category, and fixes the scrubber surge's names so they are all bundled together in admin menus.
* Categorizes the scrubber event (and gives it a description)
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
* Removes an unnecessary period from deadchat event announcements (#69800)
About The Pull Request
Removes the period after the name of an event in the deadchat announcement (eg "Bad Thing. has just been randomly triggered!")
Why It's Good For The Game
It looks ugly and needs to be cleaned up
* Removes an unnecessary period from deadchat event announcements
Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
* Dimensional Anomaly (#69512)
About The Pull Request
Everyone has been asking: "When will there be an anomaly like the bioscrambler, but for the space station? Please, we need more things which replace objects with different objects from the same typepath."
Well I made it and it looked like ass because non-tiling floor and walls look terrible, so then I made this instead.
Dimensional.mp4
The "dimensional anomaly" shifts matter into a parallel dimension where objects are made out of something else.
Like the Bioscrambler anomaly, it does not expire on its own and only leaves when someone signals it or uses an anomaly remover.
When it spawns it picks a "theme" and converts terrain around it until it covers a 7x7 square, then it teleports somewhere else and picks a new theme.
A lot of these themes are relatively benign like "meat", "fancy carpet", or "gold". Some of them are kind of annoying like "icebox" because it creates floor which slows you down, or "clown" because bananium is intentionally annoying. Some of them are actively dangerous, mostly "uranium" and "plasma".
The main problem this will usually cause for crewmembers is decreasing area security. When it replaces doors it replaces them with ones which don't have any access control, and it will also replace RWalls with normal and much more vulnerable walls which will make breaking and entering significantly easier until someone has taken the time to fix the damage. But also sometimes it will irradiate them, you never know.
The fact that sometimes the changes are benign (or provide uncommon materials) and might be happening in places you don't care about access to might encourage people to push their luck and leave it alone until it starts turning the captain's office into a bamboo room or repainting medbay a fetching shade of flammable purple, which I would consider a success.
Armour.mp4
If you successfully harvest the anomaly core you can place it into the reactive armour to get Reactive Barricade Armour, which shifts your dimension when you take damage and attempts to place some randomised (not terribly durable) objects between you and hopefully your attacker (it really just picks up to four random unoccupied tiles next to you). If you're EMPed then the changes it make to the environment will often be as unpleasant for you as they are for a pursuer, and significantly more likely to harm both of you rather than just provide obstacles.
Other changes:
I split anomalies out into their own dmi file, seems to be all the rage lately.
I moved the anomaly placing code into a datum instead of the event because I wanted to reuse it but if you have a better idea about where I could have put it let me know.
This also fixes a bug where the material spreader component wasn't working when I applied plasma materials to something, the extra whitespace was parsing as another argument for some reason and meant it would runtime.
Supermatter delamination was still pointing to Delimber anomalies instead of Bioscrambler.
* Dimensional Anomaly
* Fixes the upstream merge skew
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Fixes ghost role / admin events announcing after they failed to spawn the antagonist. Admin spawned blobs will no longer announce immediately. (#69671)
* Fixes ghost role / admin events announcing after they failed to spawn the antagonist.
* Actually, this isn't even needed
* Fixes ghost role / admin events announcing after they failed to spawn the antagonist. Admin spawned blobs will no longer announce immediately.
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Nerfs the scrubber overflow event (#69694)
* The scrubber event now only has a 50% chance per scrubber to actually overflow, leaving some areas without overflow, allowing people to still do stuff.
* Additionally, rebalances the 'safe' chemicals from the vents, removing some unsafe ones and replacing them with carpet.
* Nerfs the scrubber overflow event
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>