Cascade walls were processing on object subsystem, they are now in their own subsystem that ticks once per second and should be more reliable even in case of high td
better description for the walls to be more interesting
I wanted to add some nuance to the used gasmix in the powerfist but i want to do some cleanups first so here we are, i've also added some more text in examine and item use for a bit of quality of life
FUCK.
In #66736 (7517e79), I forgot to change this line. It worked fine in the screenshot because the screenshot came from before I spun it out into it's own DMI. Whoops.
Updates atmosmachines layering in a way that they keep the same layer in all piping_layer and colors. dense machines have a static OBJ_LAYER that doesn't change regardless of color/layer
Added a check for if the applicable_jobs list got completely eliminated. The if(!length(possible_machines)) check immediately after this while loop with then cause the objective generation to cleanly fail.
* Splits Engineering and Atmospherics bounties
* Lowers the rewards from Medical bounties
* Adds refined anomaly, Assistant and Engineering bounties
* Removes Sunglasses and Briefcase bounties
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Add mapping helpers for signs, make names snakecase
* Update maps
* Couple of lost signs in the elephant graveyard
Co-authored-by: tattle <article.disaster@gmail.com>
This reverts commit f021767645.
This reverts commit f021767 from:
Add stamped requisition forms now give bonus credits #66230
This bug was encountered when we were testing this PR but I thought it got fixed.
Why It's Good For The Game
Cargo crates will now reappear.
Refactors the confusion status effect. Removes "confusion strength" and replaces it with duration, which is measured in seconds.
This also allows them to use the adjust_timed_status_effect procs instead of their own.
Fun fact! 2 years ago when confusion was refactored into status effects, all confusion effects in the game were halved in duration. They were changed to status effects, which tick every 1 second by default, from life, which tick every 2 seconds by default, without any values changing.
I don't know when we removed sandbox but this datum doesn't exist anymore and this var is unused
Also the config does nothing anymore so might as well throw that out
Judging from code this is a fix, although I initially thought it would be a feature. It tried to update color but there was nothing in ethereal code to make that do anything. Now it does.
Moth wings also do not update. I tried to figure it out but species code makes me want to hit my head against a wall so I gave up on that.
default_color wasn't used anywhere except for ethereals, so I made it a var unique to ethereals.
This is somewhat a port of BeeStation/BeeStation-Hornet#6805 with slight changes, credits to Rukofamicom for the original PR.
Kinetic crusher is supposed to be a high risk high reward weapon, but with current hiero wall trophy it just ends up with the player cheesing mob and boss AIs. To fix this, here we change hiero trophy to spawn a hierophant chaser instead of a wall, which will increase player's DPS without offering them any protection.
However, this creates another issue: right now colossus is unbeatable with crusher without cheesing it with the wall due to it's shotgun attack which kills and dusts you point blank or 1 tile away, which is extremely unfair and unfun. To fix this, I add what should've been done from the start - make colossus telegraph it's attacks before starting them. Player has 1.5 seconds to react(unlike 3 seconds in the original PR which made the fight much easier) and dodge the attack or at least get away from the colossus to have a chance to survive.
Since this does make the fight significantly easier, colossus gets a special final attack during which it shouts "Perish" and uses different attacks. Unlike in the original PR, he can only use it once, so it's not as deadly and bullshit. This should make the fight more epic and similar to other bossfights which get cool attacks near the end of the battle.
Goodbye 4 GBP, you served me well.
For some reason the sign on the if check was reversed, which causes freon burn rate to be based on freon moles instead of oxygen moles if there is lacking oxygen for full burn. Not sure why it got flipped, but I'm just flipping the freon burn rates to correct it, so it should be based on oxygen moles if there isn't enough oxygen for fullburn.
Also for some reason freon fires checked if the holder was in a turf before reacting, and returning no reaction if it was not in a turf. This caused cold fire hotspots to kill themselves due to them not being a turf while making the gasmixture react, returning no gas reaction results then setting volume of fire to 0.
Fixes that by allowing freon to react in any gasmixture, but it can't create hot ice if it's not in a turf.
This has been bothering me for ages, it doesn't make sense for wounded and regenerative core status effects to have the same icon and in the original PR author said that he didnt put regen core into the icon instead of the skull because he didnt want wounded status effects to have the regen core as its icon, so here you go. Wounded effects still keep their skull while regen cores have proper sprites.
Turned the cyborg drink refilling feature into a componebt to clean up
the code since it was pretty snowflakey. Also, organizes robot item code
and fixes some bugs that existed with said code (i.e. child drink
holding aparatuses were getting a beaker + their specific glass type
inside of contents)
Reduces the length of the brainwashing from six minutes to two. Adds a second charge to the mindshock gland to compensate.
Makes it so that having a mindshield will protect you from the effects of a mindshock gland. The includes the passive effects that mindshock glands have on people near them, as well as the brainwash command from the mental interface device.
Since the implant itself is handling the brainwash broadcast, it will still succeed in broadcasting the message even if the gland holder is mindshielded. Mindshields only prevent you from receiving the brainwash message. Tinfoil hat functionality is untouched and remains the only way to block the message from being broadcast.
When a projectile bumps into something, it decides what it actually hits by calling /obj/projectile/proc/select_target on that atom's turf. This lets the projectile prioritize either its original target or any mobs on the tile over whatever other crap is there, but does not account for border objects in the way of the projectile's path, which should always be the first thing the bullet hits.
This PR makes select_target() prioritize the bumped atom if it's a border object, so that things like directional windows and firelocks properly block incoming fire. /turf/Entered already prioritizes border objects in the relevant direction when picking what to pass to Bump(), so we don't need to recheck the direction.
* Initial pipecrawl work
Ok so pipecrawl images were updating EVERY TIME YOU MOVED
This was not good mojo
What I've done here is twofold
First, I ensured pipecrawl updates only when the net changes. This
breaks the current implementation, but I intend on fixing that
Second, I moved our method of getting pipes to the spatial grid
This isn't that great at the moment, but I intend on adding support for
tracking entered/exited cells, which should make this much better
* Much faster pipecrawling processing, niceties
Adds a concept called a cell tracker datum.
It manages a list of cells a passed in bound is "inside", and when
queried will return a list of new cells, and old cells.
Because we only really care about maintaining an absolute window of
"CELLS WE ARE IN" and less about always removing cells we're not in, we
can manage a second window to prevent moving up and down on a cell line
causing a ton of updates.
Uses this concept to optimize pipecrawling significantly, from 3ms per
call before to roughly 0.03ms per call.
Also moves pipecrawl images to their own plane, so they don't overlap ui
elements
* Pipecrawling effects niceties, direction help
You can now move in more then one direction when pipecrawling
This works as expected, if you hold up and left, move up for a while,
and come to a fork, you'll go left
Added some effects to pipecrawling. It'll darken the lighting plane
slightly, so you get a nice effect instead of just fullbright.
Also added a color matrix and drop shadow to the pipe images, this way
they stand out a bit more.
You now glide between pipe moves, rather then moving instantly. This
doesn't effect your actual move rate, but it no longer feels jittery
with say, 60fps
* Bounds
* Fixes runtimes, cache something somethign sonic speed
* Reworks how being interested in the spatial grid is tracked
Rather then checking multiple variables on the atom to consider, we
instead check for the existence of a string key.
This key is used by a list on the spatial grid subsystem to retrive a
cached list of all of the atoms "types"
Doing this requires doing a bit of extra work in
important_recursive_contents code, but it allows us to separate being a
part of the spatial grid from using important recursive contents, which
is very nice.
As a consequence, I've had to unroll some lazylist macros in important
recursive contents logic. It's not ""that"" bad but it's not great
either.
Oh and this adds a slight cost to enter/exit cell, but it's minimal.
Basically, rather then checking for different features of a grid member,
we just iterate the list their string key points to. Very handy
So there's an added cost of a list copy and all, but we save the
headache of more types technically increasing the cost of
addition/removal.
I also made adding/removing from the grid into one "pulbic" proc rather then two
different ones for each operation, because it was starting to get silly
* waaa waa it doesn't compile
* chord -> coord
* Ensures important_recursive_contents is actually emptied on removal
* Removes soul
* Kyler's review
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Kyler's review 2
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Kyler's review 3
Moves some procs around, improves some documentation, catches a few
small issues
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
A new anomaly is here! the Delimber anomaly!
contrary to its name, this anomaly doesn't do you dirty by removing all your limbs.
It will instead improve your body by randomizing your limbs with every species known! Isn't that amazing?!
Incredibly enough it can also change your organs, improving them and expanding them! (we think this is amazing!)
Now you can also harness that power by constructing a reactive armor with its core, but be aware to not get hit by an EM pulse, our insurance doesn't cover that.
A note on safety, this anomaly doesn't stop, will keep on pulsating until eliminated.
bout The Pull Request
Hey there,
We had a lot of marker colors previously locked behind the in-game "random marker" mechanic that mappers couldn't really use since you'd have to varedit those shits. Now, instead of just... Burgundy, we now have:
Bronze!
Yellow!
Lime!
Olive!
Jade!
Teal!
Cerulean!
Indigo!
Purple!
Violet!
Fuschia!
All for your mapping enjoyment.
There were also a few instances of weird var_edited mapping markers that I also got rid of in this PR as well. I also split off markers out of lighting.dmi into their own .dmi.
Why It's Good For The Game
image
Gives mappers the power to use these sprites that we already have in the codebase in their conquest to make stuff look better.
Changelog
cl
add: On the mapping end, mappers are now able to add a wide range of funky new colors to maps. Keep an eye out, for they might just be coming to a station near you sometime soon.
/cl
This PR fixes exporting computer parts. Previously none of the unique export datums ever got a change to trigger, because of /datum/export/modular_part which, due to its include_subtypes = TRUE overwrote all of the other computer part exports.
Ever been bothered by why titanium glass and plastitanium glass do not drop their own shard types? Well this is the perfect PR for you! Titanium and plastitanium glass shards never existed, and it is probably because the person who made glass way back in the day didn't have time to add these shards. Luckily I decided to add them after all this time. Every piece of code created has been carefully considered and copied form other code, so then you know it is good code. Also I added more tags, I looked at the guidelines and found that adding the fix and qol tags probably boosts my pr score so it will get merged.
Increases kudzu's maximum mutation severity to 25 from 20.
Event-spawned kudzu now will have a flat +10 bonus to its maximum severity, meaning that it'll now range from 27 to 35 to compensate for it not being manually made.
Explosive kudzu mutation is now classified as maximum severity.
New "Temperature stabilisation" SEVERITY_AVERAGE mutation as a compensation for coldmos and the worry that cold environments can be too harsh to kudzu without the coldproof mutation by offering another alternative. It has the same power as the space heater at 40000J per atmos tick (101.325 kPa of air mix at 293.15K has 2079J/C of heat capacity, so around 20C change to that turf per atmos tick, even larger if its depressurised).
Nerfs the venus human trap's vine throw by making it have the cooldown of a regular baton (4 seconds vs previously 3), since the knockdown is only 1 second long this should be fair in exchange for keeping the 85 stamina damage in.
Doubles the mutativeness scale factor, meaning that the probability of kudzu mutating in general has been doubled.
Also adds some previously missing #undef's at the end of the file.
NEW CHANGES:
Kudzu spread rate has been changed, event kudzu is now guaranteed to spread at least 3 times per second (which is now actually adjusted for delta_time), and in general kudzu now gets a boost when it just spawned to help it not die instantly. A graph of the new formula is https://www.desmos.com/calculator/ynvbzspkmo.
Slightly more documentation to some of kudzu's variables
Destroyed player PDA / tablet drops half of the steel_sheet_cost as a stack on destruction. Having this set to 1 creates zero sized stacks of iron. Rather than fix the code that drops, I just upped this to make it drop 1 sheet on destruction, which is probably the intended effect.
This adds silver as a requirement to make surgery tools from the autolathe. This idea was taken from #66278 when another person suggested it as an alternative which I liked. I made it so that half the amount of iron needed is the requirement for silver for most surgery items.
10 stacks of silver are needed to make a full set of surgery tools + iron and glass requirements.
Requisition forms now grant bonus credits when they are stamped by the appropriate stamp listed under "Authorization Required:" on the form. Initially I was just going to have the req forms give the same amount of credits as the manifest but I was convinced to lower both of them so it doesn't unbalance crate returns too much.
Steal objective can now be cashed out early for less reward, but completing the time in its entirety will give extra TC and reputation.
The smuggling objective has been removed and replaced with the 'Destroy Machinery' objective, which focuses on disrupting workflow by destroying stuff like protolathes, telecomms and research servers.
Made the easier steal objectives worth slightly less TC
After a little bit of EVEN MORE misunderstanding, it's apparent that tgui text handles null differently, which meant fixing last whisper for tgui inputs users (chads) would mean that it would be broken for byond input users (lizards).
All jokes aside, this changes it so that text inputs will return null when you hit cancel or X for BOTH tgui and stripped_input.
This is part two of my previous food additions, this time with much more variety. This will add:
Chips and salsa: An item I have long wanted to see on the list of things you can make, and a staple of Mexican dining.
Fish tacos: Adds more variety to seafood menus, and of course, because fish tacos.
French toast: Another addition I have wanted to see for a long time. The raw version will be prepared and then be required to cook on a griddle.
Updated stuffed cabbage/pierogi sprites, because I wasn't too pleased with my previous ones.
Seaweed sheets: Made at a biogenerator and are used for making sushi.
Vegetarian sushi: Straightforward vegetarian option for sushi, can be sliced into four pieces.
Spicy filet sushi: An omnivore specific sushi with a bit of spice, can be sliced into four pieces.
French silk pie: A decadent desert that finally adds a form of chocolate pie. Sliceable.
Refactors how bots scan for stuff and also improves Cleanbots' code.
This started off as a Cleanbot refactor but I got too-deep into how it scans for stuff, so I decided to instead focus my PR on that first since it's something I want to tread carefully with.
removes oldloc var from Cleanbot, Medibot and Floorbot, because it was all unused.
I didn't even notice how bad this was before, because Secbots use their own snowflake thing instead of scanning like all the other bots do, which sounds like a good future PR.
This PR adds the resonance cascade to the SM (idea ported from vg but with total rewrite)
The resonance cascade will turn reality into crystals that devours and destroy everything.
It can be triggered by delaminating the SM when is in contact with hypernoblium and antinoblium, both at over 40% and with as many moles to trigger a singulo delamination. The cascade can't be triggered if the SM is already under 80% integrity and if at any point any of the gases gets under 40% or the total gets lower than the amount for singulo, it will stop the cascade and can't be retriggered unless you reset the SM to over 80% integrity.
A lot of bugs came to my attention with bandana dyeing after #65760 was merged. This should cover all of them.
fixes#65947, by making you unable to dye bandanas while they are adjusted. You also can't dye bandanas that have skulls or stripes on them since that causes all sorts of problems with GAGS and switching from multiple layer to only 1 and same thing reversed.
When you dyed a bandana and then adjusted it into a neckerchief and back it would reset its name to what it was originally before being dyed. This was because it used the initial proc. I fiddled around with trying to catch the dyed name in a var but it would get way too complex and unnecessary so I came up with the idea to just make a visual change instead of name change, by making the bandana slightly wider like a neckerchief would be when adjusted.
This is the first of hopefully many prs to fix and improve our current reactions to be sane and also easier to understand and explain to players.
Current freon reaction is a mess of numbers and incoherent amounts, with consumptions made up and without a logical sense.
This PR fixes that by using proper equations and amounts for ratios and formation.
Minimum amounts for gases changed from random 40/20/20, to MINIMUM_MOLE_COUNT * 6/1/3 (encourages players to keep the ratio later)
This file sucks. It's big and full of specific stuff that could be contained elsewhere. I think I split off the procs into appropriate files, I'm sure it could be shortened even further but I couldn't think of where the remaining procs could go, so I left them where they were.
Lower the amount of anomalies spawned from the SM delamination
Lower the probability of getting a flux anomaly
Flux anomalies spawned by the SM in this way will have the explosion size reduced by 4