## About The Pull Request
Requested by @tralezab
Admin event setups now use a list rather than a single setup. This means
common functionality list setting position and picking an option from a
list can be applied to events that have multiple customizable factors
rather than needing to making entirely overridden subtypes for every
event.
Adds a few new subtypes of event_admin_setup:
- input_number for setting a number value. An example can be found in
the heart attack event.
- set_location for causing an event to occur in a specific location. An
example can be found in the stray cargo pod event.
- question, yes no question that returns true/false. An example of its
usage can be found in immovable rod
- candidate_check, a more niche subtype used to block events that do not
function unless theres a specific number of valid candidates. An example
of its usage can be found in the disease events.
While doing the refactor I also implemented some simple extra options
for some of the refactored events. Classic Disease now has an option for
admins to roll **any** disease rather than just the "safe" ones. And
shuttle catastrophe now allows admins to select which shuttle is used.
## Why It's Good For The Game
Cuts back on duplicate lines of code a lot, should make adding more
customization to events slightly easier. Also more admin customization.
## Changelog
🆑
refactor: Admin event setup's have been refactored to use lists.
fix: When admins customize the pirate event all options will be
available rather than just options that have not been randomly rolled.
fix: The stray meteor event no longer runtimes when customized by
admins.
admin: Admins can now select the shuttle brought in by the shuttle
catastrophe event.
admin: Admins can now randomize the disease outbreak classic event to
roll any disease type, including transformation diseases so have fun
with that.
/🆑
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.
## About The Pull Request
I've pigeonholed myself as the fish guy now. It seems like someone made
events easier to add admin controls for so I thought I'd add some to the
event I most recently touched.
Instead of letting the RNG choose admins can now direct a circle of carp
to converge upon a specific location, or even a trail of specific
locations if they want the carp to just sort of swim in a circle around
the space station (although the ones on the far side of the station from
the starting point will travel all the way through it to get there).
This also works with magicarp.
They don't really move fast enough for you to use this to punish a
specific person but you can use it to annoy a specific location full of
people.
Plausibly there's no reason the code _wouldn't_ work for a specified
atom instead of a turf (as long as it sticks to one z level) but I
couldn't think of an elegant way of selecting that whereas "use my
current ghost location" is very intuitive, so I didn't add one.
## Why It's Good For The Game
Plausibly this permits admins do more fun things.
## Changelog
🆑
admin: Admins can direct where carp (or magicarp) are interested in
going when manually triggering the event
/🆑
## About The Pull Request
The almost-final part of the much larger PR I tried to make a month ago
(there's actually one more thing but I'm waiting on a dog PR to get
merged first).
This adds _new_ behaviour and abilities to carp.
Now when a Carp Migration occurs, all of the space carp who are spawned
are given a path through the station.
Specifically, each carp which shares a z level will try to path to a
specific station area, then back out into space.
https://www.youtube.com/watch?v=0KtTI4_7a0c
Here in this video we follow one carp and its friends as it attempts to
navigate "Kilo Station" in order to return to its ancestral spawning
grounds, via the dormitories.
Why are there walls underneath those windows? That's a question nature
has no answer for.
In order to ensure that they don't destroy Arrivals, Departures, and
anywhere else with windows in the process of trying to get inside they
have also gained a new "Lesser Carp Rift" ability.
This allows carp to teleport a short distance once per minute, leaving a
rift at their exit point. Any other mob can enter the rift to travel to
a similar location to the space carp (within the same 3x3 area).
https://user-images.githubusercontent.com/7483112/209584254-afb5839b-a1cd-4c5a-b701-dbb47a024272.mp4
Teleporting puts their attack on a one second cooldown so you won't be
_immediately_ bitten for 20 damage out of nowhere.
Their AI has been updated appropriately and they will use these
abilities:
- If they're trying to migrate through the station and encounter an
obstacle.
- If they're trying to atack something and encounter an obstacle.
- If they're trying to run away, as soon as possible.
https://user-images.githubusercontent.com/7483112/209584287-4402bf5b-3c41-4603-9205-5c4da8b4cd1c.mp4
That last point includes the HoS's pet Lia, who is an occasional target
of traitor objectives, which can either work in your favour (scaring her
to a less secure location) or against it (wait, where did she go?).
Also this fixes an embarassing bug where space carp weren't spaceproof
but I am going to pull that out into its own PR so it can be merged
without also needing to review this.
## Why It's Good For The Game
Carp are an iconic space animal but also quite boring, which this
hopefully remedies.
In the current game the Carp Migration event announces itself to the
crew and usually advertises to ghosts that a cool shark mob has spawned
and this changes essentially nothing about the round, the only people
Carp will usually attack are people who go out to set up the solars, and
the occasional wandering curator or lone operative.
This should make the announcement mean something, as suddenly it means a
belligerent animal might unexpectedly try to pass through your
workplace.
Non-magical space carp are weak enough that even an unarmed spaceman can
take on one or two at a time (and even being mildly armed with makeshift
weapons you have around makes them fairly non-threatening) but it can
give you a bit of excitement.
The ability for Carp to teleport allows them to do this without causing
_too much_ property damage or breaching the station, in my tests they
will _generally_ find a way in which doesn't involve them busting
windows open en masse. Also it just makes them a bit more interesting.
Traitors with dehydrated carp are not much able to make use of the Carp
Rift ability as there isn't any way to get them to do it on demand, but
you could spawn one which is not allied to you and then try to scare it
in an appropriate direction which I think is a fun use of the item.
This undoubtedly will make Space Dragon player-controlled carp more
dangerous in a way which is difficult to predict, but it also makes
playing as them more fun and might encourage some guerilla tactics and
cooperation which wasn't previously possible.
## Changelog
🆑
add: Space Carp seem to have begun associating the station with food and
attempting to enter from the outside, rather than simply congregating
around solar panels. Employees are advised that these are wild animals,
and should not be fed.
add: Space Carp can intermittently teleport short distances, leaving a
short lived rift which other nearby carp will be attracted to follow
them through.
/🆑
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
## About The Pull Request
Wow we're finally here. This turns carp into Basic Mobs instead of
Simple Animals.
They use a variety of behaviours added in previous PRs to act in a
marginally more interesting way than they used to.
But don't worry there's still 2 or 3 PRs to follow this one until I'm
done with space fish.
Changes in this PR:
Carp will try to run away if they get below 50% health, to make use of
their "regenerate if not attacked" component.
Magicarp have different targetting behaviour for spells depending on
their spell;
- Ressurecting Carp will try to ressurect allied mobs.
- Animating Carp will try to animate nearby objects.
- Door-creating Carp will try to turn nearby walls into doors.
You can order Magicarp to cast their spell on something if you happen to
manage to tame one.
The eating element now has support for "getting hurt" when you eat
something. Carp eating can rings and hating it was too soulful not to
continue supporting.
## Why It's Good For The Game
Carp are iconic beasts and I think they should be more interesting.
Also we just want to turn mobs into basic mobs anyway.
## Changelog
🆑
add: Carp will now run away if their health gets low, meaning they may
have a chance to regenerate.
add: Lia will now fight back if attacked instead of letting herself get
killed, watch out!
balance: Magicarp will now aim their spells more intelligently.
add: Tame Magicarp can be ordered to use their spells on things.
refactor: Carp are now "Basic Mobs" instead of "Simple Mobs"
fix: Dehydrated carp no longer give you a bad feeling when they're your
friend and a good feeling when they're going to attack you.
balance: Tamed carp are now friendly only to their tamer rather than
their whole faction, which should make dehydrated carp more active.
Order them to stay or follow you if you want them to behave around your
friends.
/🆑
## About The Pull Request

First step of atomising #71421
This PR adds GAGS configs to megacarp and magicarp.
Magicarp were already just "carp but a specific colour", now instead
they are differentiated by having animated glowing eyes.
Megacarp have a randomly generated colour.
Additionally, inkeeping with the fantasy theme (they're wizard event
mobs) magicarp are colour coded by what spell they cast and gain a name
prefix based on the same, so you can tell what they're going to do to
you before they do it.
_Chaos_ magicarp change colour randomly every time they cast a spell.
Holographic carp don't have a colour config, Lia always uses the old
Magicarp colour, and Cayenne still has a random colour with an increased
chance over regular carp to be silver.

## Why It's Good For The Game
It makes "big carp" share a feature with their smaller cousins in a way
which I think looks nice.
It makes it easier to tell the more dangerous magical carp from the
regular ones (rather than just memorising which colour means they can
cast spells) as well as what specific _way_ they are dangerous.
## Changelog
🆑
qol: You can see what kind of spell a magicarp will cast by hovering
your mouse over it.
imageadd: Megacarp now have a random colour.
imagedel: Magicarp are now colour coded based on their spell, or change
randomly if they're Chaos Magicarp.
/🆑
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
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
About The Pull Request
Brings back the scrubber overflow event, previously removed in #53549
This version has nerfed numbers because foam changes made it stupidly powerful.
Also snake_cases some event variables.
Why It's Good For The Game
More dangerous but not station-damaging events. Bonus: janitor content.
Changelog
cl
add: Re-adds the scrubber overflow event as a random event
/cl
About The Pull Request
Deletes /obj/shapeshift_holder, replaces it with /datum/status_effect/shapechange_mob
Refactors Heretic worm form into a shapeshift spell
Refactors Wabbajack, and associated code
Fixes#69117Fixes#65653Fixes#59127Fixes#52786
Why It's Good For The Game
/obj/shapeshift_holder was one of the worst remaining abuses of /obj direct subtypes, so I replaced it with a cool fancy datum.
This also decouples the shapeshifting behavior entirely from the shapeshifting spell. So we have support for shapeshifted mobs not sourced from a spell. Which is neat, we could technically swap Wabbajack to use this in the future.
Changelog
cl Melbert
fix: Wabbajacking a shapeshifted mob no longer runtimes horribly. When a shapeshifted mob is wabbajacked, they'll now be removed from their shapeshift and stunned.
fix: Transforming via a shapeshift should no longer rob you of your hearing / runechat awareness.
fix: Shapeshifting plays nicer with holoparasites.
fix: Being polymorphed from a xeno to a non-xeno correctly makes you a non-xeno
refactor: Refactored shapeshifting, the shapeshift holder is now a status effect instead of an object.
refactor: Heretic worm form is a shapeshift spell now, this might have some minor behavioral changes but should overall be the same.
refactor: Refactored Wabbajack (+ cursed pool). Overall a bit more clean / consistent behavior.
/cl
About The Pull Request
kép
This PR does the following:
Force event menu uses tgUI.
Arranged events into categories, and added a little description to each. The descriptions appear as tooltips when you hover over the Trigger button.
Rewrote how "Announce to crew?" works. It no longer pops up a panel after the event has been already announced. Instead, the admins select it via a checkbox, and the result is passed through an optional argument.
announceChance's comment is tweaked a bit to reflect how it actually works at the moment.
Moved rpgtitles to wizard events, where it belongs.
Fake Virus and Electric Storms show up to observers, as I believe they are not as common as Space Dust or Camera Failure, and should be cancelable.
Potential issues:
This only solves half of #68408, I don't think admin triggering having a timer and a cancel button is a big issue, as it allows other admins to overrule you if needed, but if i is, I will try to fix it within this PR.
Fixes#68408. Events now spawn immediately, and the the announceChance is overwritten before it begins.
My choices for categories and descriptions might not be the best, feedback would be appreciated.
Why It's Good For The Game
The old spawn menu was completely unorganized, and you could only search using the browser search tool. I believe a built in search bar helps with this issue a bit. I also believe that organizing the events into categories, and adding descriptions will help with newer admins who might not be familiar with all events.
Changelog
cl
refactor: The Force Event UI has been refactored
refactor: Events now have categories and descriptions
refactor: Admin triggered events happen immediately
balance: Fake Virus and Electric Storms are shown to admins, making them cancelable
/cl
## About The Pull Request
stop forgetting to include mapload, if you don't include it then every single subtype past it by default doesn't include it
for example, `obj/item` didn't include mapload so every single item by default didn't fill in mapload

## Regex used:
procs without args, not even regex
`/Initialize()`
procs with args
`\/Initialize\((?!mapload)((.)*\w)?`
cleanup of things i didn't want to mapload:
`\/datum\/(.)*\/Initialize\(mapload`
Done using this command sed -Ei 's/(\s*\S+)\s*\t+/\1 /g' code/**/*.dm
We have countless examples in the codebase with this style gone wrong, and defines and such being on hideously different levels of indentation. Fixing this to keep the alignment involves tainting the blames of code your PR doesn't need to be touching at all. And ultimately, it's hideous.
There are some files that this sed makes uglier. I can fix these when they are pointed out, but I believe this is ultimately for the greater good of readability. I'm more concerned with if any strings relied on this.
Hi codeowners!
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* fish friends
* fish pals
* fish pals
* dumb
* hunting knife now is useful
* hunting knife now has a sprite
* FUCK
* inhand
* rohesie reviews
Co-authored-by: Fikou <piotrbryla@onet.pl>
* Removes bolts of death from all magicarps.
The bolt of death has been removed from the Magicarp and Chaos Magicarp.
* Only xenobiology carps are affected.
Wizard event carps still got their bolts of death.
* Gives xenobiology magicarps the correct colors.
Fixes a would-be bug where xenobiology magicarps would have normal carp colors. - I really shouldn't have made a commit at 2AM while being tired as hell...
* Removes call with no recieving end. (probably)
Removed a ..() which led to nowhere.
* Adds empty space, removes a tab.
Removes a tab at 82. - Oops.
* Removes another call going nowhere.
Removed another ..(), but for the chaos variant this time. - Travis please I'm getting worried.
* Cleans up code a little.
Compressed code a bit more. - God I love redefines.
* Compresses the code even more.
Since procs inherit I managed to save some more space. - Thanks cobb.
* Stops tracker from tracking nonexistent changes.
It's the same list as before this PR now.
About The Pull Request
This PR ports Baystation color carps. In short, normal carps can now spawn in variety of colors,
This only affects normal carps, not special ones like magicarps or megacarps, these retain their own unique sprite. There are also some pretty rare color variant for carps and our friendly Syndicate carp Cayenne has increased chance to get it.
Why It's Good For The Game
Better aesthetics and immersion.
Changelog
cl
imageadd: Normal carps now spawn with a random color! There might even be some really rare color variant.. try asking Cayenne about it.
/cl
* Add the system for managed global variables
* Travis ban old globals
* So you CAN inline proccall, that's neat
* Fix that
* master.dm
* Remove the hack procs
* Move InitGlobals to the proper spot
* configuration.dm
* Fix the missing pre-slash
* clockcult.dm
* This is probably for the best
* Doy
* Fix shit
* Rest of the DEFINES tree
* Fix
* Use global. for access
* Update find_references_in_globals
Always hated that proc
Whoever made it must've bee a r e a l idiot...
* __HELPERS tree
* Move global initialization to master.
Fix the declaration
* database.dm
* Dat newline
* I said DECLARATIVE order!
* Here's something you can chew on @Iamgoofball
* game_modes.dm
* Fix this
* genetics.dm
* flavor_misc.dm
* More stuff
* Do it mso's way. Keep the controllers as global
* Make master actually see it
* Fix
* Finish _globalvars/lists
* Finish the rest of the _globalvars tree
* This is weird
* Migrate the controllers
* SLOTH -> GLOB
* Lighting globals
* round_start_time -> ticker
* PAI card list -> pai SS
* record_id_num -> static
* Diseases list -> SSdisease
* More disease globals to the SS
* More disease stuff
* Emote list
* Better and better
* Bluh
* So much stuff
* Ahh
* Wires
* dview
* station_areas
* Teleportlocs
* blood_splatter_icons
* Stuff and such
* More stuff
* RAD IO
* More stuff and such
* Blob shit
* Changeling stuff
* Add "Balance" to changelogs
* Balance for changelog compiler + Auto Tagging
* Update the PR template
* hivemind_bank
* Bip
* sacrificed
* Good shit
* Better define
* More cult shit
* Devil shit
* Gang shit
* > borers
Fix shit
* Rename the define
* Nuke
* Objectives
* Sandbox
* Multiverse sword
* Announce systems
* Stuff and such
* TC con
* Airlock
* doppllllerrrrrr
* holopads
* Shut up byond you inconsistent fuck
* Sneaky fuck
* Burp
* Bip
* Fixnshit
* Port without regard
* askdlfjs;
* asdfjasoidojfi
* Protected globals and more
* SO MANY
* ajsimkvahsaoisd
* akfdsiaopwimfeoiwafaw
* gsdfigjosidjfgiosdg
* AHHHHHHHHHHHHHHHHHHHHHHH!!!!!
* facerolll
* ASDFASDFASDF
* Removes the unused parts of dmm_suite
* WIP
* Fix quote
* asdfjauwfnkjs
* afwlunhskjfda
* asfjlaiwuefhaf
* SO CLOSE
* wwwweeeeeewwwww
* agdgmoewranwg
* HOLY MOTHER OF FUCK AND THATS JUST HALF THE JOB?!?
* Fix syntax errors
* 100 errors
* Another 100
* So many...
* Ugh
* More shit
* kilme
* Stuuuuuufffff
* ajrgmrlshio;djfa;sdkl
* jkbhkhjbmjvjmh
* soi soi soi
* butt
* TODAY WE LEARNED THAT GLOBAL AND STATIC ARE THE EXACT SAME FUCKING THING
* lllllllllllllllllllllllllllllllllllllllllll
* afsdijfiawhnflnjhnwsdfs
* yugykihlugk,kj
* time to go
* STUFFF!!!
* AAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!!!!!
* ngoaijdjlfkamsdlkf
* Break time
* aufjsdklfalsjfi
* CONTROL KAY AND PRAY
* IT COMPILEELEELELAKLJFKLDAFJLKFDJLADKJHFLJKAJGAHIEJALDFJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* Goteem
* Fix testing mode
* This does not belong in this PR
* Convert it to a controller
* Eh, fuck this option
* Revert controllerization Ill do it some other time
* Fix
* Working controllerization
* FOR THE LOVE OF CHRIST PROTECT THE LOGS
* Protect admins and deadmins
* Use the inbuilt proc
* Mob Initialization
* new_player Repath
* Fix the dme
* Fix the shit
* Fix a loc
* Fix another loc
* But, in my haste, I forgot the cola!
* Another loc
* ANOTHER LOC
* Further docs
* Where'd that s come from
* Fix shit
* Better
* ZAP!
* YOU DID NOT SEE THAT
* YOU DI NOT SEE THAT 2
* object orientated pr
* gdi
* protection
* object orientated pr v2
* REEEE
* blacklists
* Update magicarp.dm
Magicarp now randomizes from typesof(initial(projectiletype)) instead of from typesof(/obj/item/projectile/magic) to allow future carps that inherit it to fire whatever they want without changing the code