This PR makes it so using a wand on a top-hat makes a rabbit appear in
your hand! Fun! There's a 10% chance that instead of a cute bun you get
angry bees though, but a true performer will soldier on anyway. You can
now also scoop up rabbits in your hands, and scooping animals only
requires one free hand to do so instead of all your hands being free.
* Removes mirror shield and shielded robe from forge, removes eldritch longsword from equipment and moves it to the forge, adds the nar'sian hardsuit to the forge with no slowdown and comparable stats to the shielded robe, gives eldritch longswords and cult daggers block chance
Some devices break when they are connected with a single pipeline in more than one nodes. This happens because returnPipenetAir uses a Find proc that only returns the first element in the list, making other_airs miss out on several gas_mixtures. This attempts to solve that and other related issues with assuming only one node can be connected to any pipeline.
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
So a month or so ago I wanted to make it so dogs in my dog AI PR could path through doors if they had access, and was told I'd need to improve our pathfinding efficiency if I wanted to use full pathfinding for them. Thus, enter JPS, a pathfinding algorithm that allows for massive timesavings in systems with uniform cost grids like ours. This code is still fairly rough and needs polishing, but it's fully functional and already shows massive savings over traditional A*! I plan for this to replace A* as our default pathing method, but I'll leave the A* code in place in case someone ever needs it for whatever reason, like if a specific case needs variable cost pathing.
Note that this allows for diagonal pathing instead of the cardinal pathing our A* uses right now, and the current version of the code costs the same to move diagonally as it does to move laterally, which may change later. There's also a lot of dummy/test code in right now in general, but you should still be able to test it out for yourself by spawning a bot like a medibot and using your PDA to summon it.
Preliminary Profile Results
A preliminary profile is available here. Using one medibot by itself on Metastation, I generated a list of 500 random blob spawn points around the station, gave the medibot all access, then let each algorithm tackle the list. The old A* algorithm took a total of 86 seconds to complete the list and processed 978065 nodes, while JPS took a total of 46 seconds and processed only 100062 nodes, for a 47% decrease in total time and an almost 90% decrease in nodes processed!
Why It's Good For The Game
Significantly cheaper pathing, which will very much come in handy for the AI datums I'm looking to dig into, what's not to like?
moves ammo icons, projectile icons and hitscan effect icons to guns folder
renames projectile.dmi to ballistic.dmi so its less confusing
moves rcd ammo from ammo.dmi to tools.dmi with the rcd
edits sprites for wizard cult constructs to have more sheen
fixes wizard cult constructs not working
makes soulstone code a bit cleaner i think
makes cult spells use second defines
fixes wraith jaunts being invisible
* fixes reagent chamber and other similair machinery breaking
* Removes pointless src. and changes R into holder
* Updates var to be more reflective of what it is
Much easier to add to this panel, before with flexboxes it was nearly impossible but stacks are a lot more friendly.
Miscellaneous old garbage I caught:
For some reason, monkey and only monkey button sent a to_chat to the world of your sins. I cut that, that's unacceptable
I accidentally left out species change from my last pr, it's back in.
Makes the supermatter crystal consume miasma in the air to power itself. The rate at which it consumes miasma scales with the partial pressure of the miasma and the gas mix of the surrounding air.
Miasma also increases gasmix_power_ratio, but by half as much as is normally standard
NanoTrasen has now graciously created new outfits for their esteemed members of Central Command! These include new turtlenecks, a fancy coat, a new cap, and a skirt edition of the current Official jumpsuit.
Atomized out of the pipegun PR, this fixes specifically regal pipeguns jamming when they're meant to not carry any of the detriments of their parent gun.
Dead examination messages are just like they were before. If they are revivable, they are simply dead and lifeless. If they are not, their soul is departed. No needless text.
Adds a new GUI that can be opened from the chem dispenser that will let you look up all reactions and reagents presently in the game (except secret recipes).
For the colours:
purple - clicking this will give you a recipe
blue - clicking this will give you a reagent
green - clicking this will turn it off (or it's also green if the reagent is present in the associated beaker the UI is linked to)
red - clicking this will turn it on
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
Since reactions now require a bit more involvement from chemists, ghetto chemistry is a bit harder. This seeks to help some of those problems by providing new tools for those without a chem heater/reaction chamber.
Also some of these might be useful for chemists in the lab too!
Here's what you can make:
image
the burners are similar to candles - except they burn their internal reagents. The temperature they heat by is dependant on the flame, fuel and oil burn for a lower amount, ethanol for a higher amount and plasma for the highest amount. They can be put on tables and bonked with beakers for a quick way to heat them (similar to lighters). You'll need to light them with a match or lighter too, though, and can be put out by use in hand.
The thermometer looks like this and gives you temperature readings!
thermom
The pH booklets are the same as before - but you can now craft them by making universal indicator. These are the best way for a ghetto chemist to check their pH, and multiple sheets should be used over a reaction.
The improvised chem heater looks like this, and is a reconfigured space heater, it requires more materials and tools lending itself to a static drug den, but has the best method of adjusting temperature and fighting against exo/endo thermic reactions:
Improv_heater
Finally, the cooling spray lets chemists do the oposite of a lighter on their beaker - cooling the reagents within. In addition, fire extinquishers perform the same function.
In addition ice and universal indicator have been added as reactions.
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
- Makes `/mob/living/proc/Life` and most related procs use `delta_time`
- Procs that had snowflaked timing systems, such as breathing, addiction, and advanced diseases were left unchanged.
Creates update_name and update_desc
Creates the wrapper proc update_appearance to batch update_name, update_desc, and update_icon together
Less non-icon handling code in update_icon and friends
Signal hooks for things that want to change names and descriptions
99%+ of the changes in this are just from switching everything over to update_appearance from update_icon
This closes#26487 (Issue about cigs working fine in non-oxygenated enviroments) which has been a known bug for years. Everyone knows how EXTREMELY CRITICAL cigarettes are to game balance. Plasmamen being able to smoke in a room with no oxygen? Spessmen smoking in the hard vacuum of space? What is this madness?!?
I must put an end to these OP tactics.
My changes make it so that if a cigarette has either one mole of oxygen in the current atmosphere or is injected with oxygen reagents, then it can be smoked.
I've also made it so "Space" cigarettes can be smoked in space by changing the default starting reagents to include oxygen. The description was also updated to hint that they can be smoked anywhere.
Also I added a has_gas proc to gasmixtures. I have seen a few places in the code where this can be used and once this gets merged, I will be doing a refactor to clean some code involving it. (bonfires, plasmamen code, etc.)
(Note from lemon, if you use this in the supermatter I will eat you)
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Prompts admins to confirm their selection with the build mode fill tool if the selected area is over 150 tiles.
I've seen this happen a few times now (to both myself and others), accidentally filling a massive area because they either forgot that the tool was still on or were moved unexpectedly. This should prevent these kinds of mistakes from happening easily.
Cleans up holder.dm to work to use as anything in it's for loops and changes the var names in said for loops to be more verbose and accurate.
Hopefully this speeds up reactions marginally too!
This fixes the surprise oversight that I didn't realise was in. Since syringes can hold explosive chemicals when below 100K you can inject the contents into a person, which will then heat up the reagents from bodytemp.
Blood Rites now uses a radial menu for choosing which version of the spell you want.
Blood Halberd, now Bloody Halberd, has had some of it's weirdness as a cult weapon resolved by bringing it under the cultblade parent, ensuring it is babyproof and not able to be turned on others by noncultists.
Bloody Halberd now has a new sprite.
Additionally, some code guideline cleanup, as well as making the cult longsword use the x64 sprites I added for the dark blade a while back.
This PR cleans up duplicate definition of the AdjustHealth proc for simplemobs, as otherwise you cannot properly locate the definition via VSCode DMcode plugins. No functionality changes, as this is exactly how it already works - duplicate definition calls the "real" proc definition via ..(). Autodoc documentation of the relevant proc included.
Due to an oversight, beakers are eatten on deconstruct, which shouldn't happen. Also allows beakers to be alt clicked out of them to be in line with the dispenser.