* BCIs now come with one bci action (#61521)
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
* BCIs now come with an integrated circuit with a bci action which is also now removable
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
* Things that love the station may no longer leave the station, even when Dr. Anomaly says they should. (#61335)
Bluespace anomalies detonating Move() things. When something is Move()d, none of the logic in forceMove() or doMove() is called, and thus stationloving things can't tell when they've left the z-level (since that's where the logic for it is).
There are a number of approaches I could have taken: Refactoring anomalies to use different movement code. Refactoring Movement code to send more signals in various scenarios. Refactoring the stationloving component.
I settled on two steps. First, refactoring the component to bring it up to modern code standards. Second, moving the logic for COMSIG_MOVABLE_Z_CHANGED to Moved() so the signal always fires regardless of if Move() or forceMove() or doMove() is used, with an optional var for whether the z-change is communicated to contents. This means the ore box was changed to actually send the signal instead of just returning with no parent call or signal sent. Stationloving ore boxes when?
stationloving procs no longer call SIGNAL_HANDLERs directly. Var names are now more descriptive. Things are renamed and documented. At least for the parts of the code I know.
Probably some other code cleanups.
* Things that love the station may no longer leave the station, even when Dr. Anomaly says they should.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Removes the hardcoded material restriction for exporting protolathe designs to autolathes. A new variable is used in its place. (#61161)
Title. I have removed the hardcoded iron and glass only restrictions from designs imported to autolathes from R&D and added
a new variable autolathe_exportable in its place that restricts designs from getting the AUTOLATHE build type flag if FALSE. Energy bolas, gun part kits, tele shield, enegy bolas and jaws of life currently have said var set FALSE.
Currently a draft PR because of a problem I have noticed at the last minute: The MATERIAL_NO_EFFECTS flag has to be replaced with a MATERIAL_EFFECTS one to avoid more snowflake code. EDIT: DO NOT MERGE BEFORE #61166.
* Removes the hardcoded material restriction for exporting protolathe designs to autolathes. A new variable is used in its place.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Nerfs bone wounds to make them less miserable (#61196)
So I've always kinda known that bone wounds are unpleasant to receive, but since paying some closer attention to how they affect peoples rounds in the last few months, I've realized that they need to be reigned in some more. So, let's break down the big changes...
General bone wound nerfs
Limping on a busted leg is now a chance with each step of that leg, instead of always happening: No matter how small the delay added to your move time after each step (like if it was just a dislocation), and even with slings, bone wounds on your leg crippled you with the constant slowdown, because they happened every time you stepped on that leg. Now, the chance to limp on any given step with that leg is higher with worse wounds, and applying a sling to that leg further lowers that chance, as well as lowering the delay from that limp. A dislocated leg, for example, only limps 30% of the time, while a compound fracture limps 70% of the time.
Skeletons and plasmamen (aka carbons with no flesh) can now use bone gel directly on cracked limbs to fix them, in 1/4th the time it takes the normal bone gel + surgical tape improvised fix to heal them, and with none of the damage. I felt bad that the ability for skeletons to stick dismembered limbs back into their slots was destroyed because the limbs would be critically wounded already, and still useless. Now, skeletons and plasmamen can be treated with just bone gel and some time. At some point after this is merged, someone should give the pirate ship some free bone gel.
The speed of the improvised bone gel + surgical fix for broken bones is even further improved by laying down and by sleeping than it was before, meaning the improvised fixes can be cut down further by laying down for a bit while it works.
Makes bone wounds less obnoxious, reducing their ability to single-handedly ruin your round when you suffer one. I want to go further in the future and add an easier improvised fix for hairline fractures soon, but those changes can come later after these are merged.
* Nerfs bone wounds to make them less miserable
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Proper labeling for blood packs with Ethereal blood (#61411)
* LE packs
* better way about it, var names, balloon moment
* LE check on newly filled bags
* Update code/modules/reagents/reagent_containers/blood_pack.dm
* revert cobbys evil touch
Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com>
* Proper labeling for blood packs with Ethereal blood
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com>
* Fixes logging with Say not showing up as forced if whispered. (#61505)
Until now, if a mob is forced to say something it won't show up as such in game logs if whispered, common if the mob is in critical condition for example.
Fixes logging for administrators, if a mob is forced to say something due to an in-game source it should be listed as such in Say logs/game.log which previously did not if it was whispered.
* Fixes logging with say() not showing up as forced if whispered.
Co-authored-by: Pepsilawn <reisenrui@gmail.com>
* Antagonist Panel for Slaughter Demons, Laughter Demons, and Imps(?!) (#61087)
uses the power of ANIMATION (the flavor text is altered a bit on this for better wording, by the way)
* Antagonist Panel for Slaughter Demons, Laughter Demons, and Imps(?!)
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* cleans up some silly uses of greet(), alongside a no longer needed async call. (#61298)
Makes greet be more like what it says on the tin. Cleans up some unused/unneeded code
* Cleans up some silly uses of greet()
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Eng/Atmos/CE tablet come with Canary (Alarm monitor) preinstalled (#61322)
Tablets are often found thrown around a corner of the foyer, and I'm tired of bullying people to use it at this point. It's IMO the most powerful tool engineering has to keep the station in good condition but only a few players ever download anything in a round.
So let's make their lives easier, engineering tablets come preinstalled with Canary and the Atmos with the Gas Scanner too. (Even if I never saw anyone use that, just because the tablet comes preinstalled with the sensor that enables it.)
Canary is a powerful tool to assist on station maintenance that is not well known to the player, maybe this will get people curious enough to open it and start to enjoy having all alarms green as much as I do.
Nothing hurts more than a small breach at science that goes unfixed for half an hour and slowly creep in turning the station into Firelock hell... and nothing is funnier than screaming "Atmos alarm at the HoS Office!" the second it pops up only for the AI to lock the shutters down and tell sec that a random lizard broke the window and is trying to Esword the HoS locker.
* Eng/Atmos/CE tablet come with Canary (Alarm monitor) preinstalled
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
* hopefully fixes buckshots only shooting one projectile (#61464)
* hopefully fixes buckshots only shooting one projectile
Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
* You can no longer use chameleon IDs while in crit/have hands blocked (#61493)
* You can no longer use chameleon IDs/clothes while in crit/have hands blocked
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* HFR: Actually consume oxygen when mitigating iron (#61416)
fuck it's even worse than I realized in #61321
dumping a canister of oxygen into the moderator had it evaporate at
what looked like 10mol/s plus a bit of spare change for evaporation,
but it was actually all just evaporation all along
it didn't even runtime because of operator overloading aaaaaaaaaaaaa
* HFR: Actually consume oxygen when mitigating iron
Co-authored-by: esainane <esainane+github@gmail.com>
* Admins can now save custom shells (#61307)
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
* Admins can now save custom shells
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
* Winter coat allowed item fixes (#61450)
Sometime ago I cleaned a slice of the winter coats to cut on copy pasta in their allowed list and important items being missed there but I misunderstood how the global list of allowed security items work, which ended up with the global list overwriting my base list.
So this fix that, also thanks Athath for bullying me about this issue a few months ago before I went on coding hiatus...
Also since I was here I decided to fix the allowed list for the janitor winter coat, it had some odd items without a worn_icon so we had the annoying bugged sprites with it.
* Winter coat allowed item fixes
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
* Nuclear Operatives will now see the nuke codes in memories (#61448)
This adds the ability for the nuclear operatives to check their memories for the nuke code. Memories are the successor to notes, the latter being where the nuke code was stored before. Many thanks to tralezab for helping me make this change. Also shoutout MrDoomBringer for making the messages suck less
* Nuclear Operatives will now see the nuke codes in memories
Co-authored-by: Burgermancoding <79515258+Burgermancoding@users.noreply.github.com>
* Adds plates to the autolathe (#61433)
You can now print plates to eat food with or throw in tense situations. This is good for the game because the mechanic of vendor restocks is barely ever seen or used, getting more plates can be annoying because most people will take the plate and not leave it back when you leave food out on them, additionally you can print basically every other piece of dinnerware in an autolathe even cleavers if they're hacked, so there is no reason why you shouldn't be able to print a plate as well.
* Adds plates to the autolathe
Co-authored-by: Burgermancoding <79515258+Burgermancoding@users.noreply.github.com>
* restore dynamic lighting to some areas that lost them
* Update centcom.dm
Co-authored-by: Couls <coul422@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* fix aux base console (#61306)
the Auxbase console is a subtype of consoles, despite being a wallmount, therefore it inherits consoles density = TRUE, despite being on a wall
this means that you get THIS ..... its on the WALL and the tile is EMPTY, but you cant step onto it, because the consoles there technically and dense
(I feel i should clarify before its asked: when a console is deconstructed it spawns a new console frame and copies the circuit over, that new frame will be dense again. so it only lacks density once its finished and on the wall)
* Makes Auxbase console a proper wallmount
Co-authored-by: 小月猫 <alina.r.starkova@gmail.com>
* grey to omni (#61292)
Swaps the default color of fluid ducts from "grey" to "omni."
Fluid ducts also read from the global list of pipe_paint_colors but were not updated when grey was changed to omni in #61162 (fef3629d11)
* Fixes "grey" fluid ducts.
Co-authored-by: sqnztb <zephyrthebreeze@gmail.com>
* Slight refractor to borg reboot boards, allows them to be reusable (#61232)
Refractors the cyborg reboot module to be an independent item rather than a subtype of cyborg upgrades. The new item is no longer consumed during use.
Rebooting now makes a different sound when rebooting an AI shell or ghostless borg, rather than no sound at all.
A recent PR fixed a longstanding apparent bug that allowed reboot boards to be resused. A bug it may have been, but the reboot board being a single-use item is kinda terrible, and doesn't make a lot of sense that the board is somehow destroyed when used. Mothblocks, who merged the bugfix PR, has given me permission to PR this change.
Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>
* Slight refractor to borg reboot boards, allows them to be reusable
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>
* adds logging for all canisters opened, logs all gases in spooky gas cans too (#61289)
admins are now alerted when miasma, freon, and co2 canisters are opened, and are informed of the contents of canisters containing dangerous gases in general, not just the spooky gas on its own.
added overall logging for all canisters opened
* adds logging for all canisters opened, logs all gases in spooky gas cans too
Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
* Add french kissing (#61392)
If you wear the french beret you get the garlic breath trait added.
This also happens if you consume garlic reagent containing items
This trait makes your kisses become french and causes your breath to
smell of garlic
* Add french kissing
Co-authored-by: oranges <email@oranges.net.nz>
* Fix HFR interface units (#61382)
* Fix HFR interface units
Exposing units in terms of tickrate to users shouldn't really happen,
but in this case the HFR also already respects delta_time for moderator
filtering rate.
See hfr_main_processes.dm:
```
moderator_internal.remove_specific(gas, (moderator_filtering_rate / filtering_amount) * delta_time)
```
Also consistently use `mol` over `g` for other types, and while the
typical equation symbol for Magnetic Flux Density is `B`, the SI unit
is Tesla (`T`).
* HFR: Fix fuel injection rate control
I don't know how this ever worked, but `remove_specific` already checks
to make sure that there is enough gas to remove, and caps appropriately.
With the lowest proportion possible (0.5 for both old and new units),
this very quickly absorbed all gas available from the fuel port. This
commit changes behavior so that the fuel injection rate is properly
respected.
* Fix HFR interface units
Co-authored-by: esainane <esainane+github@gmail.com>
* You no longer shove yourself into a disposal unit (#61384)
Being shoved into a disposal unit tells you who shoved you in, rather than saying you shoved yourself.
* You are no longer told you've shoved yourself into a disposal unit.
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Ghoster? I barely knew her! (#61413)
Right now, if you try to enter any mob/posibrain as a ghost and instead of clicking "yes" you click the x icon, it'll make you possess the mob anyways, even though you didn't want it to. This fixes that.
Also, you could just ghost as a posibrain and calmly get back in it with no repercussions, this also fixes that by making you not able to re-enter a posibrain after you left it.
* Fixes an issue in which pressing x while trying to enter a mob as a ghost would make you enter said mob, and disables re-entering into a posibrain.
Co-authored-by: TheSmallBlue <ilanmori@hotmail.com>
* Lavaland bottle holyness correctly not a species trait (#61409)
This is not a species granted trait, seems it was like this out of laziness but correct me if you know better
(Arm: It's just a remnant of angel's being a species in the past)
* Lavaland bottle holyness not a species trait
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
* Fix documentation in emote.dm (#61438)
Changes documentation in emote.dm to go with dmdoc format
* Fix documentation in modules/mob/emote.dm
Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
* The Odysseus is no longer an artillery mech. (#61372)
Removes the ability for the Odysseus to fire syringes filled with dangerous chemical combos that only react on impact. Does this by removing the NO_REACT flag when syringe darts are created.
This doesn't change any behaviour of handheld syringe guns. You can't fire a Water/Potassium syringe out of a handheld syringe gun as doing so requires creating a syringe of Water/Potassium, which will instantly react. The same holds true for other chem reactions. The traitor reagent dartgun which synths its own syringes uses different projectiles that are not impacted by this change. It functions identically to how it did before and is unchanged and untouched.
This change specifically targets Ody behaviour.
The Ody is intended to be a medical support mech. Stop using the Ody as a cheap spammable artillery mech with RDX/Teslium combos.
Use the Odysseus the way God himself intended. Fire sleepy chems into your victim, abduct him in your vore chamber and keep him sedated with a slow infusion of sleepy chems for the rest of the shift.
* The Odysseus is no longer an artillery mech.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Tom shock immunity is innate instead of species trait (#61408)
This is not a /datum/species granted trait and since those also get treated differently this might avoid bugs
* Tom shock immunity is innate instead of species trait
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
* observe button uses alert instead of tg alert (#61404)
observe button uses alert instead of tg alert
if your tgui is broken you literally cant join the game other than spawning as a job and ghosting out, id say its a critical enough button to keep as old alert
* observe button uses alert instead of tgui alert
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* Mentions stopping allergic reactions on medipens (#61285)
Because a lot of people didn't know that epinephrine stops production of histamine during allergic reactions.
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@ users.noreply.github.com>
* Mentions stopping allergic reactions on medipens
Co-authored-by: Chloe <lyric_wolf@outlook.com>
* Fixes (somehow) killing nar-sie in the last second not properly clearing the hostile environment (#61116)
Someone forgot to add GLOB.cult_narsie so I think what would happen is, despite narsie being dead, the shuttle wouldn't leave.
Was a non issue because the round ends if nar nar is last minute killed. There is not enough time for the shuttle to even leave.
That said, unimportant failures are still failures, so let's get going
* Fixes (somehow) killing nar-sie in the last second not properly clearing the hostile environment
Co-authored-by: FlamingLily <80451102+FlamingLily@users.noreply.github.com>
* Makes tank explosions scale with volume and have diminishing returns. (Nerfs singlecaps) (#60600)
Changes tank explosions to take tank volume into account and use sqrt scaling when calculating explosion range.
This basically means that they scale faster at lower pressures and slower at high pressures.
Rebalances tank explosion scaling so that maxcap TTVs are where they used to be pressure-wise.
Rebalances the research doppler arrays cash generation algorithm so it maxes out at the same TTV pressure. This does however mean that the doppler array will grant more points at lower explosion pressures.
Rebalances blastcannon shot range calculation so it scales as it used to with normal TTVs.
The comparatively tiny emergency tanks no longer produce the same size explosion as a TTV at the same pressure.
It is much more difficult to carry around 70 maxcaps in a single duffle bag. (I don't think it renders this completely impossible but it does kill oxy-trit emergency tank singlecaps as far as I know.)
Lemon posting past this line.
How it works:
Change assumes maxcaps should be just as easy with the standard ttv setup of 2 70L tanks.
So it divides the bomb's strength by 14, then scales it using dyn_explosion's (x*2)^0.5.
If you graph it the strength is exactly the same with a 140L reaction vessel, but as volume goes down, strength falls off very quickly because of that division, and the use of dyn_explosion.
Hopefully this will effectively disincentivize singlecapping, and remove the everpresent threat of someone leaking the station leveling method.
Reasoning for when github blows up:
I don't think single caps are on the same level as typical atmos antag threats. They're a hell problem
1: tanks should explode when someone hyper pressurizes them
2: we want all tank explosions to act the same, for the sake of a believable world
3: really well put together tank explosions (ttvs), should be really powerful
4: reaction code is a son of a bitch
I do think knowledge gating has some place. Knowing how to do something well should have a benefit. but that isn't like, an ultimate truth.
I've seen what proper, full on atmos autism single capping looks like. I don't like that level of absolute destruction at speed being feasible full stop.
I consider single caps to be a necessary side effect of how explosion code works. I think it's really cool that people have gotten so deep into this game and the systems around it that they've started optimizing this side effect into a tool/bragging rights thing.
But I'm still not a huge fan. If big booms are gated only by knowledge, then as soon as that knowledge spreads we're fucked. I've seen this happen before with things like rad batteries (cue crit being cringe).
It's not just single caps mind, the destruction you can make with em scales with knowledge.
I'm not in love with this pr mind, because it means I need to worry about bomb code when someone makes some silly tank volume balance pr. but it's a good solution. better then what's been tried in the past. still leaves space for things just blowing up in your face without maxcaps coming into the equation easily.
* Makes tank explosions scale with volume and have diminishing returns. (Nerfs singlecaps)
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Native languages for tongues (#61352)
If a mob (human one) speaks with a language their tongue tracks as native (for their language's anatomy), the message's text will not be changed with default language's text replaces.
Basicly, if a lizard (or other human mob) with lizard tongue speaks with draconic, their speech will be without accent changes
It looks a bit strange when races speak at their own language with difficult without real reasons for it. The changes remove that part.
* Native languages for tongues
Co-authored-by: Kush1Push1 <78963858+Kush1Push1@users.noreply.github.com>
* Actually fixes temperature pump exploit. Removes limit as it's redundant now. (#61406)
Temperature pumps were bugged and generated heat while exchanging heat. This fixes that and removes the limits as they were only used to stop people from creating infinite heat.
Exploit bad, and the limit was below a temperature that can be obtained legit(imately, which was annoying.
(I was initially against this pr, was under the impression that the heat pump actually pumped heat. apparently it doesn't. currently considering if it even needs to exist.)
* Actually fixes temperature pump exploit. Removes limit as it's redundant now.
Co-authored-by: 170141183460469231731687303715884105727 <58013024+170141183460469231731687303715884105727@users.noreply.github.com>