* Gibs/Dead bodies no longer produce miasma
Miasma production as it is now is too little over too long a time span, and it just ends up spreading across the
station and having little effect. My goal here is to remove a source of uninteresting gas from the station's
air, and make corpses and gib piles more infectious.
I've placed the cap on disease payout at a strength of 7, so there's a slight chance of a positive disease, but
I think it's counteracted by the danger presented by just infecting yourself till you get what you want.
I've rewriten the rot component to just run a percent chance to infect someone with a disease based on the type
of rot, and moved almost all of its behavior to signals. There's one portion I can't rewrite without making
significant changes to how I handle atmos sensitivity, so that'll come later.
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
This pull request adds a map loader as well as new maps to CTF. When a game starts a CTF map will be selected at random and will be playable by ghosts.
As well as this new functionality CTF now fully supports 4 teams. A green and yellow team have been added complete with both standard and instagib gear.
At current five maps are planned:
Classic - the original map we all know and love
Four Side - A four team CTF map where all teams compete over one flag
Downtown - Terrestrial city themed map
Limbo - Wizard themed map featuring portals and uses KOTH rather than CTF
Cruiser - Space themed map utilizing the powerup system
Random maps are selected on game load
Support for four teams added
Why It's Good For The Game
CTF has been more or less the same on the surface since its creation. This PR allows for some much needed map variety which will increase replay value. CTF is far more regularly played then mafia due to its fast rounds and common use during round end delays and I believe that it deserves a boost in content.
Changelog
cl
add: CTF can now selects a random map at game start
add: CTF now supports four teams
add: Gear for yellow and green CTF teams has been added
add: CTF ID cards for all 4 teams have been added - courtesy of maxymax13
add: a new CTF map, Four Side has been added
add: a new CTF map, Downtown has been added
add: a new KOTH map, Limbo has been added
add: a new CTF map, Cruiser has been added
fix: KOTH capture points retain their sprites after being claimed
/cl
This PR makes sure all MouseEntered() procs call their parent, which handles the status bar. This fixes instances where the status bar was missing, for example when you hovered over the ghost buttons, you would not be shown a name of the button, but completely different object, like "space", which was very misleading. This also means that the new status bar should have better parity the with the old status bar, which also showed these things.
Makes tanks use obj_integrity instead of their own snowflaked version.
Makes tanks check for exploding when they are destroyed, rather than once every process.
Makes tanks always leak their gases when they are deconstructed.
Removes the ability for tanks to seal themselves back up over time.
Makes the bomb spawner actually produce functional bombs.
Removes the extraneous syndicate bomb spawner subtype.
Miscellaneous code improvements to tanks, bomb spawners, and the blastcannon.
Fixes the explosives compressor doubling the power of any bomb you put in it.
The changes to tank rupturing behavior shouldn't effect most tritium fueled TTVs including the 50K recipe. Toxins players don't need to worry about suddenly being incapable of getting points or refining anomaly cores. They should only really effect singlecaps, but I don't know enough about singlecaps to know what recipes I should test. I have confirmation that at least one mix is not effected by this.
The self-sealing properties of tanks have been removed. I'm not sure what the purpose of it was, I have heard that it was used to enable hand-portable plasmaflooding, but I'm not familiar with the practice.
As it turns out, the basic bomb spawners were broken on master! I have made the bombs they produce maxcap instead of just spring a leak. Since they maxcap by default now I have removed the syndicate subtype used to spawn the TTV produced by the cuban pete arcade game and replaced it with the normal timer subtype. Since none of the bomb spawner subtypes were used for anything else this shouldn't have any effect on the game.
On a similar note, I have discovered that the maxcap recipe on the wiki stopped working at some point since it was written. I will replace it with a functioning set of instructions.
Less snowflake code.
Bomb spawners are actually functional now.
Slightly better code.
The explosives compressor accurately reflects the power of the bomb you put into it.
Security officers will now be paired up together in the same department, across departments. This means that, instead of 4 officers being split across 4 departments, there'll now be 2 groups of 2.
Late-join officers will be put into any department with only 1 officer. If none exist, the least populous department will be chosen, with their preference having priority.
Updates the maps to have more spawns for departmental officers. Delta previously had none, and now has some. Fixed a bug where MetaStation's security departmental officer was a supply one instead.
Removes the "random" departmental preference. All security officers are now given a department. The "none" preference still exists, but just to show that you don't care which department you're put into.
Updates the config to comment out SEC_START_BRIG. This is what the configuration was already on live servers.
This is something that should likely be test merged, but it mucks with savefiles. Luckily, the only damage it does is changing random departments to none, so if a TM is reverted, only that will have to be changed.
Clears out two deprecated explosions systems (explosion ids and explosion levels)
Refactors a bunch of contents_explosions procs to be maybe slightly faster.
Cleans up a bunch of ex_act code.
Slightly cleaner code
A few less unused vars on /atom and /turf
Fixes#56915
Adds a worse case senario to prevent the same sort of bug happening in the future. Fixes poster harddels
DON'T HOLD REFS WHEN THE THING YOU'RE REFFING DIES!!!
Two changes.
1. If a splatter of blood isn't bloody enough, the character will not get bloody shoes.
2. Characters with light steps trait won't get bloody clothes if they step on a bloody tile without shoes.
3. added: Blood dries over time. Usually, 3 or 6 minutes. If a splatter is big enough, it can stay wet up to 15 minutes.
Why It's Good For The Game
The entire crew won't have bloody shoes anymore.
Less time wasted looking for showers or sinks to wash their shoes after stepping on a near invisible blood decal.
Characters without shoes (or who don't want to get their clothes bloody after taking them off) will get more use from a near useless trait.
Changelog
cl
qol: Blood splatters only make your shoes or feet bloody if the tile is bloody enough,
qol: Light steps trait prevents clothing from being covered in blood if you step on a bloody tile with your shoes off.
add: Blood dries over time. Usually, 3 or 6 minutes. If a splatter is big enough, it can stay wet up to 15 minutes.
/cl
(grammaticly impoved by @maxymax13)
- Updated radial menu for spider selection from an egg clusters. It
will now also include a small button for showing additional information
about given spider type. No need to wiki dive to find out about what
each spider type does.
- You can now a choose spider from an egg cluster from a distance
instead of having to be next to them as a ghost, which was rather
annoying and confused new players about why they cannot choose any
spider type.
- "Click to play" button on when spider egg cluster matures will now
actually give you a selection of spiders to choose from instead of
doing nothing and being a dead weight in the chat.
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.
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
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>
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
Converts many proc overrides to properly use list/modifiers, fixes some spots where modifiers should have been passed, calls modifiers what it is, a lazy list, and cleans up some improper arg names like L, M, C, and N. Oh and I think there was a spot where someone was trying to pass M.name in as a string, but forgot to wrap it in []. I fixed that too.
* Add official There Is No Gas Giant poster
🆑 ArcaneMusic, coiax
add: Nanotrasen reminds its crew members that the station has never
orbited a Gas Giant, and is engaging in a media campaign to remind
employees of this fact.
/🆑
There is a half remembered fact that Space Station 13 orbits a gas
giant, allegedly due to some entry on a wiki someplace.
Given the vigorous discussion on this subject, it seems appropriate that
this confusion is forever immortalised in poster form.
With thanks to @ArcaneMusic for doing the sprite.
* gas truths
Co-authored-by: tralezab <spamqetuo2@gmail.com>
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>
Brings a heavily improved, rewritten, and optimised fermichem to tg. I saw that tg seemed receptive to it, so I thought I’d do it myself. If you know of fermichem – there’s a lot changed and improved, so looking at other documents regarding it will not be accurate.
Revamps the main chemistry reaction handler to allow for over time reactions instead of instant reactions. This revamp allows for simultaneous reactions, exo/endothermic reactions and pH consuming/producing behaviours. Most of the reactions in game will now inherit an easy one size fits all reaction.
Temperature mechanics
Temperature affects reaction rate
The higher it is, the faster it is, but be careful, as chem reactions will perform special functions when overheated (presently it DOESN’T explode)
Temperature will increase or decrease depending on the exo/endothermic nature of the reaction
pH mechanics
Each reaction requires the pH of a beaker to be within a certain range.
If you are outside of the optimal, you'll incur impurity, which has a negative effect on the resultant chem
pH of a beaker will change during a reaction
Reacting Impure chem effects can vary from chem to chem, but for default will reduce the purity of other reagents in the beaker
Consuming an impure chem will either cause liver or tox damage dependant on how impure it is as well as reducing consumed volume
Purity can (presently) only be seen with a chemical analyser
Impure chems can purposely be made by making the reagent with a low, but not explosive, purity.
A chem made under the PurityMin will convert into the reagent’s failed chem in the beaker.
Optional catalysts
Reactions can use an optional catalyst to influence the reaction - at the more framework exists from tmeprature, reaction rate and pH changes as a result of a catalyst. Catalysts can be set to only work on a specific reagent subtype. It is preferable to those building upon this code that optional catalysts only affect a subsection of reagents.
Presently the only catalyst that uses this is Palladium synthate catalyst - a catalyst that increases the reaction speed of medicines.
Reaction agents
These are reagents that will consume themselves when added to a beaker - even a full one, and apply effects to the total solution. One example being Tempomyocin which will speed up a reaction, or the buffer reagents which change the pH.
Competitive reactions
These reactions will go towards a certain product depending on the conditions of the holder. The example one given is a little tricky and requires a lot of temperature to push it towards one end.
New and charged reactions
(see the wiki for details)
Acidic /basic buffer - These reagents will adjust the pH of a beaker/solution when added to one. If the beaker is empty it will fill it instead.
Tempomyocin - This will instantly speed up any reaction added it is added to, giving it a short burst of speed. Adding this reagent to a reaction will give it a suddent speed boost up to 3x times - with the output purity of the boost modified by the Tempomyocin's purity.5u per 100u will give you 2x, 10 u per 100u will give you 3x. IIt caps at 3x for a single addition, but there is nothing preventing you from adding multiple doses for multiple boosts.
Purit tester - this will fizzle if the solution it is added to has an inverse purity reagent present.
A few other reactions have been tweaked to make sure they work too. An example being meth - see the wikipage linked above.
A note on all reactions
The one size fits all reaction for all chems generally won’t create impure chems – it is very forgiving. The only thing to remember is to avoid heating reactions over 900 or you’ll reduce your yield, and try to keep your pH between 5 -9.
This PR doesn’t have specific example chems included (except for the buffers) – they will be atomised out and they use the mechanics in more depth
A note on plumbing
I reached out to Time Green and we worked together to make sure plumbing was fine. Time Green did some of his own tests too, and surprisingly it doesn't look like much needs to be changed.
This PR adds station traits which are essentially small changes to a normal round that can be used to create small variations in how a round might play out, sometimes there might be only one, very simple trait, but you might have a round where they have a somewhat bigger impact, to make rounds feel slightly more different from each other.
The following traits have been added:
Positive:
Lucky winner - Free pizza and beer every 6-12 minutes
Galactic Grant - Larger starting funds for cargo
Premium internals boxes - emergency box has flare + radio as bonus
Bountiful bounties - Bounties pay 20% more
Strong supply lines - Imports 20% cheaper
Filled maint - More loot in maint
Fast shuttle - Cargo shuttle is faster
Free scarves - Free scarfs if a slot is free
Neutral:
Bananium shipment - Clown starts with 5 sheets of bananium (Neutral because this helps noone but the clown)
Unnatural atmosphere - Lava planet can get more restricted gasses
Unique AI - Random lawset at roundstart for AI
Ian adventure - Ian teleports to a random spot on the station
Glitched PDAs - PDA's have a different beep
Announcer intern - Changes the announcement messages to sound like they're from an intern at Centcom
Negative:
Carp infestation - Carp event is more common and can start earlier
Weak supply lines - Imports 20% more expensive
Blackout - Station lights are partially broken around the station
Empty maint - Less loot in maint
Overflow bureacracy mistake - Random overflow job (From a vetted list)
Late Arrivals - Everyone starts in arrivals
Random spawns - Random spawn location (by drop pod)
Slow shuttle - Cargo shuttle is slower
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
Co-authored-by: coiax <yellowbounder@gmail.com>
Adds a visual indicator for when you trigger someone's Bad Touch quirk.
Players who have this quirk may not have the time to convey that they do
when hugged, as the hugger may be off-screen by the time the quirk holder
has finished typing a say or emote. This provides a clear indicator that
the quirk holder gets a negative moodlet from hugs.
Co-authored-by: Y0SH1M4S73R <Y0SH1M4S73R@github.com>
* Adds emissive carpet, adds plane support to decal element
- Adds a basic abstract/debugging emissive carpet
- Makes decals capable of supporting plane
- Adds auto-smoothing decals
* Adds simple neon carpet variations
* Adds neon carpet reagents and recipes
* Refactors emissive blockers to allow multiple layers of emissive / emissive blocking objects
- Splits the emissive and emissive blocker plane masters into several plane masters which handle different layers of emissiveness.
* Makes neon carpet tile stacks emissive
* Rearranges and docs some emissive plane masters
- Folds the overlay lighting plane master into the emissive planes since it is also used to mask the lighting plane
* Fixes null mats_per_unit stack recombining after splitting
- I think I broke this a while ago when I reworked how stacks handle materials. Whoops.
- This basically only effects carpet at the moment. Good thing I did this when I did!
* Adds neon carpets to cargo
- Adds a cargo supply crate containing a _lot_ of neon carpets for 3000 credits
* Fixes neon carpet highlights leaking through vending machines and such
- Turns out vending machines axed their own emissive blockers whenever they updated their icon because they cleared their managed_vis_overlays...
- Generic emissive blocking has been elementized and some update_overlays procs have been straightened out.
* Fixes id_arg_index for the emissive blocker element
* Commits @Rohsie's suggestions
About The Pull Request
The food cart no longer... Does whatever garbage it did before. What, like, store condiments? Terrible. Now you drag it around and set it up, creating a tent with a griddle, smartfridge, and a table. You can pack up anytime. Breaking parts of the tent will pack up the machine and subsequently break it, so careful!
Why It's Good For The Game
The food cart has been an entirely outdated, out classed, completely dead machine to use. We just can do a lot better in 2020. Now it once again has a nice unique function and lets chefs do a new gimmick of being a travelling seller of food. Employs the "steal the janicart" meta from the janitor in the new and equally infuriating "steal the entire damn tent lmao"
Changelog
🆑
add: Food Cart has been completely remade to work as a mobile kitchen
/🆑
Oversight made by @TiviPlus when making #55147
var/hacked wasn't actually used in code and instead, all spawner vendors were instantly hacked.
fixes#56101
Fixes an if check that was checking the area flags of a turf. Prevents a runtime in phased_check, and makes the area noteleport flag work properly. These were introduced by #55973
Speeds up gas movement significantly
Documents the intent and finer details of the atmos system (Thanks dunc)
Fixes excited groups constantly rebuilding, this broke 4 years ago
Fixes superconductors just straight up not working
Allows turfs to sleep while inside an excited group
Adds a new subprocess to SSAir to support rebuilding in this state
Most heat based behavior no longer relies on being inside a fire
Adds a new element to support doing this cleanly
Adds a new subprocess to SSAir to support doing this while a turf is asleep
Refactors air_update_turf to allow for finer control
Makes apcs take damage in heat to prevent infinite plasma fire diffs
Cleans up immutable gas mixtures to make them work properly when the mix has gas in it
Planetary turfs no longer create a new copy of themselves each time they process. We instead use a global
immutable mix
Cleans up a typed for loop in reactions
Canisters will take damage from outside heat now
Speeds up excited group dismantle
Increases the superconductor threshold by 200k
Cleans up some roundstart ATs on some ruins
Uses /turf/open/var/excited to track if a turf is actively processing, preventing a |=
Prevents openspace from trying to melt
Tweaks a canister examine line
Makes planetary turfs reset to base when broken down as part of an excited group
Makes it impossible for planetary turfs to rebuild, just like space tiles
Fixes closed turfs not activating their replacement when destroyed by moving closed -> open turf activation to
the adjacent air subsystem. They were activating and then going back to sleep before adjacent air got a chance
to tick.
Fire alarms will trigger when the area gets too cold for humans
These prevent some cheats or really low effort ways to get to where you really shouldn't be.
Mappers seriously fucking hate jaunting and phasing mechs, as they let you bypass their custom crafted ruins and the like. But it'll also stop more general "you shouldn't be here" stuff.
Also provides a generic, forward proof way to provide information to radial menu choices.
Why It's Good For The Game
input is old and crummy.
Blob is a very wiki reliant mechanic. This moves a bit of it into the game itself to fix that.
Provides a real cancel option, whereas the old one had none. This is not a balance change, but a QoL one--everyone just moved the input window off to the side.