* Micro-optimize qdel by only permitting one parameter (#80628)
Productionizes #80615.
The core optimization is this:
```patch
- var/hint = to_delete.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up.
+ var/hint = to_delete.Destroy(force) // Let our friend know they're about to get fucked up.
```
We avoid a heap allocation in the form of copying the args over to a new
list. A/B testing shows this results in 33% better overtime, and in a
real round shaving off a full second of self time and 0.4 seconds of
overtime--both of these would be doubled in the event this is merged as
the new proc was only being run 50% of the time.
* Micro-optimize qdel by only permitting one parameter
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Mech Stress Test Experiment is now SIGNIFICANTLY LESS ASS to do (#80220)
## About The Pull Request
The Stress Test 1 experiment now only requires ONE mech to be broken
down, and the margin of error of the percentage is much more lenient,
being 5% up or down (it was previously only 2%).
## Why It's Good For The Game
This experiment is painful to do right now, the process usually involves
making TWO mechs, damaging them *very close* to the arbitrary percentage
the experiment requires, scan it, realize you went too low so you gotta
weld it back up and start hitting it with your crowbar again, scan it,
get the experiment, pick up the SECOND experiment, kill the mechs, scan
THOSE. Everyone finds these a pain in the ass
## Changelog
🆑
balance: Exosuit Materials 1 now only requires one mech.
qol: Exosuit Materials 1 is much more lenient on the percentage it
requires.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Mech Stress Test Experiment is now SIGNIFICANTLY LESS ASS to do
---------
Co-authored-by: DATAxPUNGED <44149906+DATA-xPUNGED@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Replaces the Exosuit Materials 2 experiment with one about equipping mechs rather than destroying them. (#80267)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
Replaces "Exosuit Materials 2: Excessive Damage Test" with "Exosuit
Materials 2: Load Strain Test". Rather than building and then destroying
two exosuits, you now equip them with any two (compatible) main
equipment pieces. Once the experiment is done, you'll have two exosuits
still, so consider making exosuits that you can donate to other crew
afterwards.
Note that the exosuit *has* to be built by the crew. Round-start
exosuits (or those obtained through other means like the nuke ops'
uplink) will not work.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
The idea of creating and destroying a few rounds of mechs sounds like a
neat concept. But in practice, it burns through station resources for no
real good reason, and is somewhat antithetical to the idea of robotics
making mechs for other departments. With this change, you're still
required to make the two mechs if you want the discount, but now they'll
be available afterwards. If someone has requested a mech for their
department, for example, you can now accomplish that and part of this
experiment simultaneously.
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
add: Adds a new discount experiment for unlocking the combat exosuit
nodes - complete it by scanning two exosuits with equipment in the left
and right hand slots. This replaces the prior discount experiment about
destroying exosuits.
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
* Replaces the Exosuit Materials 2 experiment with one about equipping mechs rather than destroying them.
---------
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* basic cats and mini kitchen helpers (#79800)
## About The Pull Request
this pr transforms cats into basic pets! cats now have some new
behavior. they can carry fish and hunted mice in their mouths to deliver
it to kittens, and kittens will eat them.


if a kitten sees you holding food, it will point at you and meow loudly
until u give it the food.
becareful when putting male cats near each other, there is a small
chance they get into a heated argument and meow loudly at each other
until one of them flees.
also added a new small cat house for cats. cats will use these homes if
u build one near them (using 5 wood planks)

Chefs can craft the cake cat and breadcat. these are useful cats because
they can help the chef around in the kitchen. they will turn stoves and
grills off when food is ready, so they dont burn. and the cake cat will
help the chef decorate his donuts
## Why It's Good For The Game
refactors cats into basic mobs and gives them a deeper ai
## Changelog
🆑
refactor: cats are now basic pets. please report any bugs.
add: the cake cat and bread cat can now help the chef around in the
kitchen
/🆑
* basic cats and mini kitchen helpers
* Modular
---------
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* [NO GBP] fish analyzers can now be actually used for experiments. (#79030)
## About The Pull Request
I've forgot that, for some reasons, both experiments and experiment
handlers have an experiment(or) whitelist var.
## Why It's Good For The Game
This will fix#78921
## Changelog
🆑
fix: Fish analyzers can now be actually used for experiments.
/🆑
* [NO GBP] fish analyzers can now be actually used for experiments.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* [NO GBP] Fixed a few more issues with fishing. (#78904)
## About The Pull Request
fix: Examining twice experiment handlers with an active fish-related
experiment now gives a comprehensible, correctly spaced list of scanned
species rather than something like "pufferfishguppyslimefishchasmchrab".
fix: No more "line snapped" balloon messages everytime the fishing
minigame is over
fix: Getting to the Master level of the fishing skill now correctly
gives you that slight helping hand to identify yet-to-be-caught fishes.
## Why It's Good For The Game
Taking care of some issues I've noticed just yesterday.
## Changelog
🆑
fix: Examining twice experiment handlers with an active fish-related
experiment now gives a comprehensible, correctly spaced list of scanned
species rather than something like "pufferfishguppyslimefishchasmchrab".
fix: No more "line snapped" balloon messages everytime the fishing
minigame is over
fix: Getting to the Master level of the fishing skill now correctly
gives you that slight helping hand to identify yet-to-be-caught fishes.
/🆑
* [NO GBP] Fixed a few more issues with fishing.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* The fishing portal generator expansion (plus skill-chip) (#78203)
## About The Pull Request
This is a PR I worked on last month, but had to put on hold while
dealing with some pressing issues with fishing feature, minigame and
other stuff, and because I had to atomize out some of the stuff
previously present here.
I've expanded on the fishing portal generator to do something other than
dispense guppies and goldfishes. It now has multiple settings,
unlockable by performing scanning experiments for fish types, available
from the get go, which also reward a meager amount of techweb points
upon completion. The generator can now be built too. No longer it has to
be ordered from cargo.
It can also be emagged for the syndicate setting, tho right now it only
dispenses donkfish and emulsijack, both otherwise impossible to get
outside of... exodrone adventures.
The advanced fishing rod now comes with an experiment handler component,
specific to the fish scanning experiment, that automatically scans
fished content. The node to get it now requires 2000 points and the
first fish scanning exp to be unock.
A new skillchip has been added, which adds a trait that changes the icon
of the fish shown in the minigame UI, giving some clues on what the
reward will be. The same trait is also gained by reaching the master
(penultimate) level of the fishing skill.
A new fish type has been added, with its own quirks. One of these quirks
included temporarily switching movement direction of the bait.
Currently, it can only be fished in the hyperspace and randomizer
setting of the fishing portal.
Screenshots:


## Why It's Good For The Game
The fishing portal generator is but a stale and underdeveloped prototype
of the fishing feature right now, so much I was thinking of removing it
at first. However, we also have a lot of fishes which are pretty much
unfishable, so I came up with the idea of adding new portal settings
that allow people to actually get them.
As for the skillchip and trait, it's but an extra to both the vending
machine in the library and the fishing skill itself, which has an
overall humble impact on the minigame.
## Changelog
🆑
add: Expanded the fishing portal generator. It now comes with several
portal options that can be unlocked by performing fish scanning
experiments, which also award a modest amount of techweb points.
balance: The fishing portal generator is now buildable and no longer
orderable. The board can be printed from cargo, service and science
lathes.
balance: Advanced fishing tech is no longer a BEPIS design. It now
requires the base fish scanning experiment and 2000 points to be
unlocked.
add: The advanced fishing rod now comes with an incorporated
experiscanner specific for fish scanning.
add: Added a new skillchip that may change the icon of the "fish" shown
in the minigame UI to less generic ones. Reaching master level in
fishing also does that.
qol: The experiment handler UI no longer shows unselectable experiments.
/🆑
* The fishing portal generator expansion (plus skill-chip)
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Feature: bitrunner, a new supply role (READY)
* Delete bepis.dm
* Conflicts
* Update dynamic_rulesets_midround.dm
* Fixing this invalid icon file path
It was trying to use the aesthetics one
* Bepis is dead
* New digi sprites courtesy of CandleJaxx!!
Now in the correct branch!
* Fixing merge conflict
* bitrunning hotfixes [NO GBP]
* Modular health adjustments
* Revert "Modular health adjustments"
This reverts commit 0ff3c48d398f6c1aac51cdf8fecaf869491bbc86.
* Modular health adjustments
Only this one should be necessary
* The screenshot test
* Bitrunner den for voidraptor (FOR #23865) (#23891)
* no shower in sight
* lets bitrunners actually get to their room and spawn there
* New digi sprites courtesy of CandleJaxx!!
* Revert "New digi sprites courtesy of CandleJaxx!!"
This reverts commit eea9f47de256dd407c78450bc8f2a09b814f93e9.
---------
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Removes bitrunning unit tests (#78607)
## About The Pull Request
Removes the fraction of unit tests I thought would be safe.
Not thrilled that I have to exclude ALL unit tests now, but hey.
The issue is that atmos attempts to process on a turf which hasn't
initialized yet.
## Why It's Good For The Game
Other PRs can pass checks now
## Changelog
N/A
* Update birdshot.dmm
* Tweaks the BEPIS category of the bitrunning order console
* Adds back the flashdark that we had skyrat edited in
* Update tgstation.dme
* Fixes Voidraptor bitrunning den not being connected to the powergrid
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
Co-authored-by: Profakos <profakos@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Anomaly gear: Polymorphic Field Inverter (#77383)
## About The Pull Request
Adds a new device you can research called the "Polymorphic Field Inverter".
It requires Advanced Biotechnology and Anomalous Research to unlock.
Completing that research lets you print out a fancy belt. Using it for 5
seconds on a mob (dead or alive) which is organic in nature and isn't
some kind of human or megafauna (monkeys are fine) will store a copy of
its DNA. Scanning another creature will replace the original stored DNA.
Storing DNA does absolutely nothing unless you have also inserted an
active Bioscrambler core.
If the item is activated with a Bioscrambler core then equipping it
grants you the ability to transform into the same kind of creature as
the one you scanned (and back). As in spells such as Wildshape you share
health with your transformed form and if you die while transformed then
you die, so be careful when turning into something like a cockroach
which has one hit point.
It has an associated experiment which makes the research free, which is
to scan two humans with (non-prosthetic) organs that they didn't have
when the round started. You can accomplish this through surgery, DNA
infusion, or a bioscrambler anomaly. You can do it on some monkeys if
nobody is cooperating with you.
I copied a teeny bit of this code from #73969 although I didn't actually
end up needing most of it.
These are absolutely codersprites so if anyone wanted to make cooler
ones, let me know.
* Anomaly gear: Polymorphic Field Inverter
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Adds an extra malf AI ability: Remote emagging. Also tidies up emag code and coverts a lot of things to balloon alerts
* Update communications.dm
* Modular override
* Some modular adjustments, removes 'emagged' vars in favor of obj_flags
* whoops, mobs don't have obj_flags.
---------
Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
* Experisci now works if at least one RD server works on your z level (#74123)
## About The Pull Request
Experiment handlers now work if at least one RD server works on your
z-level, rather than only checking the first. It was originally done in
a lazy way, and I'm going back on that now to make it more responsive
for players.
## Why It's Good For The Game
This will allow things like off-station and Lavaland to be added to
experisci stuff, which I think would be nice as we can make
mining-related experiments for mining tech just as how there's medical
experiments for medical tech.
It also lets off-station ghost roles do experiments if they don't want
to be a jackass and just waste points, which I think is a positive until
off-station techwebs are added.
## Changelog
🆑
fix: Experimentors can connect to techwebs that have at least one RD
server on the level.
/🆑
* Experisci now works if at least one RD server works on your z level
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Completing experiments after their associated nodes have been researched gives back a partial refund of the discount lost (#73814)
## About The Pull Request
So we're like simultaneously moving two vague directions with research.
One being "experisci grants discounts for prohibitively expensive nodes
so you want to do the experiments to discount them" and the other being
"Let's give Heads of Staff a way to research anything they want without
any communication to the research department, including the very
expensive nodes that scientists may be working on"
You already see the issue, right? You can't have your cake and eat it
too.
It sucks for scientists to be working on a complex experiment like
weapons tech for that huge 90% discount only for the HoS to stumble onto
the bridge and research it anyways. Your time is wasted and RND is
slowed down massively.
We can do something to assuage that.
This PR makes it so completing an experiment which discounts already
completed nodes will refund a partial amount of the discount that
would've applied.
For example, researching industrial engineering without scanning the
iron toilets will refund ~5000 points.
This can only apply once per experiment, so if an experiment discounts
multiple technologies, they will only get a refund based on the first
technology researched.
## Why It's Good For The Game
This accomplishes the following:
- Expensive research nodes with difficult experiments remain expensive
without completing the experiments. If no one does the experiment, they
act the same as before.
- Expensive research nodes with very easy experiments (but time
consuming) no longer put RND on a time crunch to beat the itchy trigger
finger of the Heads of Staff. Stuff like scanning lathes allow the
scientists to work more at their own pace: they can talk to people or
maybe stop at the bar or kitchen between departments without feeling
pressure to get it done urgently.
- Scientists are able to complete experiments which previously were no
longer deemed relevant if they need a point injection. Experiments left
behind are no longer completely useless bricks. Maybe even gives
latejoin scientists something to do.
- Scientists mid experiment can still complete it to not feel like their
time is wasted.
Overall I think this has many benefits to the current science system
where many have complaints.
## Changelog
🆑 Melbert
qol: Completing an experiment which discounts a researched tech node
will give a partial refund of the discount lost. For example,
researching the industrial engineering research without scanning iron
toilets will refund ~5000 points if you complete it afterwards. This
only applies once per experiment, so experiments which discount multiple
nodes only refund the first researched.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Completing experiments after their associated nodes have been researched gives back a partial refund of the discount lost
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Stock Part Datumization Complete (#72559)
So i accidently reverted all my commits in #72511 when resolving a merge
conflict So ummm yeah fuck my bad anyway
Finishes what was started in #71693 and completes the
[initiative](https://github.com/tgstation/dev-cycles-initiative/issues/1)
Except for `obj/item/stock_parts/cell` and its subtypes. All machines
now use `datum/stock_part` for its requested components & component
parts
Not sure if i caught every machine & stuff in the game so merge with
caution
🆑
code: datum stock part for every obj stock part
refactor: all machines & dependent experiments to use datum stock parts
/🆑
* Fixes a teeny tiny Funce mistake :)
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Makes datum stock parts work for Stock parts Experiment purposes (#71907)
## About The Pull Request
Fixes#71845
Sets the machinery scanning experiments up to check for datumised stock
parts.
## Why It's Good For The Game
Scanning module experiment is broken on live due to datumised scanning
modules, as the experiment was not modified to check for datum stock
parts.
## Changelog
🆑
fix: fixed Advanced Scanning Modules Calibration Experiment not
registering upgraded machines to its progress
/🆑
* Makes datum stock parts work for Stock parts Experiment purposes
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
* Better RND logs & Experiment handheld connects to techwebs directly (#71502)
## About The Pull Request
- Adds better feedback to the experiment handler's UI when it can't
connect to a techweb
- Experiment handlers now refs techwebs directly, instead of servers, so
if the server in question breaks there won't have some wonky stuff
happening.
- Adds logs when rnd machines (so techfabs & servers) are disconnected
from a techweb, either on the machine's destruction or when it gets
linked to another techweb.
- Disconnects experiment handlers if the techweb they're connected to
has no more research servers suddenly.
## Why It's Good For The Game
Better RnD logging, better user feedback, and connecting to techwebs
directly instead of servers makes it more resilient to bugs.
## Changelog
🆑
qol: Experiment handlers now give a more reasonable explanation for why
they can't find a server.
admin: Machines being disconnected from techwebs is now logged in
research.
/🆑
* Better RND logs & Experiment handheld connects to techwebs directly
Co-authored-by: John Willard <53777086+JohnFulpWillard@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>
* Adds a special suicide to the Experi-Scanner (#71103)
## About The Pull Request
Adds a `suicide_act` to the Experi-Scanner.
<details>
<summary>LiveLeak footage</summary>
https://user-images.githubusercontent.com/75863639/200129319-d112c8ea-e9f6-49a2-872b-8c2625f97e67.mp4
</details>
The victim's brain also gets placed into the resulting toilet's cistern.
<details>
<summary>Bodycam footage from the clean-up crew</summary>
https://user-images.githubusercontent.com/75863639/200129302-4b9b37fe-9c02-4712-8502-e4732b9258f5.mp4
</details>
The resulting toilet will not drop meat sheets when deconstructed,
leaving only a pile of bones behind.
_might add some bone crunching sounds later_
## Why It's Good For The Game
More variety is nice. A use for the experiscanner-closed icon. An
ultimate sacrifice for a single toilet that you can scan towards an
experiment.
## Changelog
🆑
add: Added a special suicide to the Experi-Scanner
/🆑
* Adds a special suicide to the Experi-Scanner
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
* Adds more multiz support (#69420)
* Adds more multiz support by making use of ``is_valid_z_level`` instead of simply checking if z is the same.
* Adds more multiz support
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Fixes the stress experiment sometimes not working and rebalances it (#68691)
* Fixes the stress experiment sometimes not working, allowing it to have a scan leeway of 2% each way.
* Fixes the stress experiment sometimes not working
Co-authored-by: Ekaterina-von-Russland <109872269+Ekaterina-von-Russland@users.noreply.github.com>
* Combat mech research nodes now require mech-themed experiments rather than bomb experiments. (#67756)
* Mechs require a new Mech scanning experiment centered around damaging/destroying mechs, instead of being behind weaponry, which requires ordnance research.
* Combat mech research nodes now require mech-themed experiments rather than bomb experiments.
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Makes the noblium gas shells experiment explicitly clear that it means hypernoblium (#67898)
* Makes the noblium gas shells experiment explicitly clear that it means hypernoblium
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>