Commit Graph

7171 Commits

Author SHA1 Message Date
Mothblocks
093e58aa47 All code files must now be included in the .dme, removes some old duplicate files that never were (#67887)
All files must now be included in the .dme, removes some old files
2022-06-24 02:08:20 -04:00
Kylerace
8f0df7816b (code bounty) The tram is now unstoppably powerful. it cannot be stopped, it cannot be slowed, it cannot be reasoned with. YOU HAVE NO IDEA HOW READY YOU ARE (#66657)
ever see the tram take 10 milliseconds per movement to move 2100 objects? now you have
https://user-images.githubusercontent.com/15794172/166198184-8bab93bd-f584-4269-9ed1-6aee746f8f3c.mp4
About The Pull Request

fixes #66887

done for the code bounty posted by @MMMiracles to optimize the tram so that it can be sped up. the tram is now twice as fast, firing every tick instead of every 2 ticks. and is now around 10x cheaper to move. also adds support for multiz trams, as in trams that span multiple z levels.

the tram on master takes around 10-15 milliseconds per movement with nothing on it other than its starting contents. why is this? because the tram is the canary in the coal mines when it comes to movement code, which is normally expensive as fuck. the tram does way more work than it needs to, and even finds new ways to slow the game down. I'll walk you through a few of the dumber things the tram currently does and how i fixed them.

    the tram, at absolute minimum, has to move 55 separate industrial_lift platforms once per movement. this means that the tram has to unregister its entered/exited signals 55 times when "the tram" as a singular object is only entering 5 new turfs and exiting 5 old turfs every movement, this means that each of the 55 platforms calculates their own destination turfs and checks their contents every movement. The biggest single optimization in this pr was that I made the tram into a single 5x11 multitile object and made it only do entering/exiting checks on the 5 new and 5 old turfs in each movement.
    way too many of the default tram contents are expensive to move for something that has to move a lot. fun fact, did you know that the walls on the tram have opacity? do you know what opacity does for movables? it makes them recalculate static lighting every time they move. did you know that the tram, this entire time, was taking JUST as much time spamming SSlighting updates as it was spending time in SStramprocess? well it is! now it doesnt do that, the walls are transparent. also, every window and every grille on the tram had the atmos_sensitive element applied to them which then added connect_loc to them, causing them to update signals every movement. that is also dumb and i got rid of that with snowflake overrides. Now we must take care to not add things that sneakily register to Moved() or the moved signal to the roundstart tram, because that is dumb, and the relative utility of simulating objects that should normally shatter due to heat and conduct heat from the atmosphere is far less than the cost of moving them, for this one object.
    all tram contents physically Entered() and Exited() their destination and old turfs every movement, even though because they are on a tram they literally do not interact with the turf, the tram does. also, any objects that use connect_loc or connect_loc behalf that are on the same point on the tram also interact with each other because of this. now all contents of the tram act as if theyre being abstract_move()'d to their destination so that (almost) nothing thats in the destination turf or the exit turf can react to the event of "something laying on the tram is moving over you". the rare things that DO need to know what is physically entering or exiting their turf regardless of whether theyre interacting with the ground can register to the abstract entered and exited signals which are now always sent.
    many of the things hooked into Moved(), whether it be overrides of Moved() itself, or handlers for the moved signal, add up to a LOT of processing time. especially for humans. now ive gotten rid of a lot of it, mostly for the tram but also for normal movement. i made footsteps (a significant portion of human movement cost) not do any work if the human themselves didnt do the movement. i optimized has_gravity() a fair amount, and then realized that since everything on the tram isnt changing momentum, i didnt actually need to check gravity for the purposes of drifting (newtonian_move() was taking a significant portion of the cost of movement at some points along the development process). so now it simply doesnt call newtonian_move() for movements that dont represent a change in momentum (by default all movements do).

also i put effort into 1. better organizing tram/lift code so that most of it is inside of a dedicated modules folder instead of scattered around 5 generic folders and 2. moved a lot of behavior from lift platforms themselves into their lift_master_datum since ideally the platforms would just handle moving themselves, while any behavior involving the entire lift such as "move to destination" and "blow up" would be handled by the lift_master_datum.

also
https://user-images.githubusercontent.com/15794172/166220129-ff2ea344-442f-4e3e-94f0-ec58ab438563.mp4
multiz tram (this just adds the capability to map it like this, no tram does this)
Actual Performance Differences

to benchmark this, i added a world.Profile(PROFILER_START) and world.Profile(PROFILER_START) to the tram moving, so that it generates a profiler output of all tram movement without any unrelated procs being recorded (except for world.Profile() overhead). this made it a lot easier to quantify what was slowing down both the tram and movement in general. and i did 3 types of tests on both master and my branch.

also i should note that i sped up the "master" tram test to move once per tick as well, simply because the normal movement speed seems unbearably slow now. so all recorded videos are done at twice the speed of the real tram on master. this doesnt affect the main thing i was trying to measure: cost for each movement.

the first test was the base tram, containing only my player mob and the movables starting on the tram roundstart. on master, this takes around 13 milliseconds or so on my computer (which is pretty close to what it takes on the servers), on this branch, it takes between 0.9-1.3 milliseconds.

ALSO in these benchmarks youll see that tram/proc/travel() will vary significantly between the master and optimized branches. this is 100% because there are 55 times more platforms moving on master compared to the master branch, and thus 55x more calls to this proc. every test was recorded with the exact same amount of distance moved

here are the master and optimized benchmark text files:
master
master base tram.txt
https://user-images.githubusercontent.com/15794172/166210149-f118683d-6f6d-4dfb-b9e4-14f17b26aad8.mp4
also this shows the increased SSlighting usage resulting from the tram on master spamming updates, which doesnt happen on the optimized branch

optimized
optimization base tram.txt
https://user-images.githubusercontent.com/15794172/166206280-cd849aaa-ed3b-4e2f-b741-b8a5726091a9.mp4

the second test is meant to benchmark the best case scaling cost of moving objects, where nothing extra is registered to movement besides the bare minimum stuff on the /atom/movable level. Each of the open tiles of the tram had 1 bluespace rped filled with parts dumped onto it, to the point that the tram in total was moving 2100 objects. the vast majority of these objects did nothing special in movement so they serve as a good base case. only slightly off due to the rped's registering to movement.

on master, this test takes over 100 milliseconds per movement
master 2000 obj's.txt
https://user-images.githubusercontent.com/15794172/166210560-f4de620d-7dc6-4dbd-8b61-4a48149af707.mp4

when optimized, about 10 milliseconds per movement
https://user-images.githubusercontent.com/15794172/166208654-bc10086b-bbfc-49fa-9987-d7558109cc1d.mp4
optimization 2000 obj's.txt

the third test is 300 humans spawned onto the tram, meant to test all the shit added on to movement cost for humans/carbons. in retrospect this test is actually way too biased in favor of my optimizations since the humans are all in only 3 tiles, so all 100 humans on a tile are reacting to the other 99 humans movements, which wouldnt be as bad if they were distributed across 20 tiles like in the second test. so dont read into this one too hard.

on master, this test takes 200 milliseconds
master 300 catgirls.txt

when optimized, this takes about 13-14 milliseconds.
optimization 300 catgirls on ram ranch.txt
Why It's Good For The Game

the tram is literally 10x cheaper to move. and the code is better organized.
currently on master the tram is as fast as running speed, meaning it has no real relative utility compared to just running the tracks (except for the added safety of not having to risk being ran over by the tram). now the tram of which we have an entire map based around can be used to its full potential.

also, has some fixes to things on the tram reacting to movement. for example on master if you are standing on a tram tile that contains a banana and the TRAM moves, you will slip if the banana was in that spot before you (not if you were there first however). this is because the banana has no concept of relative movement, you and it are in the same reference frame but the banana, which failed highschool physics, believes you to have moved onto it and thus subjected you to the humiliation of an unjust slipping. now since tram contents that dont register to abstract entered/exited cannot know about other tram contents on the same tile during a movement, this cannot happen.

also, you no longer make footstep sounds when the tram moves you over a floor
TODO

mainly opened it now so i can create a stopping point and attend to my other now staling prs, we're at a state of functionality far enough to start testmerging it anyways.

add a better way for admins to be notified of the tram overloading the server if someone purposefully stuffs it with as much shit as they can, and for admins to clear said shit.
automatically slow down the tram if SStramprocess takes over like, 10 milliseconds complete. the tram still cant really check tick and yield without introducing logic holes, so making sure it doesnt take half of the tick every tick is important
go over my code to catch dumb shit i forgot about, there always is for these kinds of refactors because im very messy
remove the area based forced_gravity optimization its not worth figuring out why it doesnt work
fix the inevitable merge conflict with master lol
create an icon for the tram_tunnel area type i made so that objects on the tram dont have to enter and exit areas twice in a cross-station traversal

    add an easy way to vv tram lethality for mobs/things being hit by it. its an easy target in another thing i already wanted to do: a reinforced concept of shared variables from any particular tram platform and the entire tram itself. admins should be able to slow down the tram by vv'ing one platform and have it apply to the entire tram for example.

Changelog

cl
balance: the tram is now twice as fast, pray it doesnt get any faster (it cant without raising world fps)
performance: the tram is now about 10 times cheaper to move for the server
add: mappers can now create trams with multiple z levels
code: industrial_lift's now have more of their behavior pertaining to "the entire lift" being handled by their lift_master_datum as opposed to belonging to a random platform on the lift.
/cl
2022-06-24 13:42:09 +12:00
Andrew
347b5e344d Oldstation lootboxes (#67361)
Added a lootbox for every role (eng, sci, sec) that requires corresponding ID to open, as an exploration reward.

To provide an incentive to leave the spawn area and give a reward for this.
The loot is for qol and fun, and hardly affects the playthrough for roles that don't get the loot. Besides, you can re-roll your starting job if you have a preference. Or open any box with an emitter.

Engineering crate contents:

/obj/item/pipe_dispenser, - Removed from free chest. To make non engi players use pipe dispensing machine to fix atmos pipes.
/obj/item/storage/bag/construction, - Just qol, you can already make one with cloth
/obj/item/clothing/suit/hazardvest, - To be able to wear construction bag on back
/obj/item/storage/belt/utility, - Just qol, you can already make one with leather
/obj/item/clothing/head/hardhat/weldhat, - Unobtainable otherwise
/obj/item/t_scanner, - Just to accompany pipe dispenser,
/obj/item/screwdriver/power, - Nice tool for the belt

Sec crate contents:

/obj/item/gun/ballistic/rifle/boltaction, - Hardly better than the laser, needs 3 shots to kill xeno and tends to jam. Comes with 15 rounds in total.
/obj/item/knife/combat, - To use as mosin bayonet in CQC with xenos
/obj/item/ammo_box/a762,
/obj/item/ammo_box/a762,
/obj/item/clothing/suit/armor/vest/old, - Moved to the box instead of being available from start - now every profession has vest in a chest
Removed the box of firing pins and two flashes from this box.

Sci crate contents:

/obj/item/relic, - Random relic to make people experiment with EXPERIMENTOR
/obj/item/transfer_valve, - To enable anomaly core refinery
/obj/item/raw_anomaly_core/bluespace, - To refine something
/obj/item/raw_anomaly_core/random,
/obj/item/clothing/suit/toggle/labcoat, - Mandatory for science
/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb, - Reference to one certain anime

Misc:
Removed redundant cable and pen
Fixed one of the computers being non-disassembable
Added plasma tank, timer and igniter laying next to the sec crate
Removed free pipe dispensers from secure storage to make players use stationary dispensers (when non-engi), or build a dispenser in protolathe
Added 1 guaranteed diamond ore spawn (total 4000 diamonds guaranteed if you disassemble reflector box) to allow building reactive armour shell and inert bluespace bag for anomaly cores. You need 2000 for armour and 600 for inert bag of holding with femto manipulators.
Added 1 guaranteed gibtonite spawn to kill or amuse the players
Dead roboticist ID now has ordnance access to allow downloading of paper publishing software for experiments
2022-06-19 20:53:09 -06:00
MrMelbert
325915e459 Converts diggable from component to bespoke element (#67695)
* Changes diggable to an element and fixes it, saving on some memory.
2022-06-19 11:25:37 -04:00
MrMelbert
42266c38e8 Cursed Dufflebag is now less picky + no longer permanently applies you with pacifism even after being removed + causes less wounding (#67687)
Cursed Duffelbag is less picky, now. Instead of snowflaking for only burnt food, it will take any item with /toxin reagents within it.
	/badfood (in burnt recipes) are considered toxins, so it still works.
The damage from the duffelbag now has a wounding penalty.
	A negative penalty to wounding, but no penalty to bare wounding.
If the attached mob is dead, it now deals significantly less damage, and doesn't heal the dufflebag.
The dufflebag now uses visible messages to convey it's eating to people nearby, instead of just to_chats.
Fixes the cursed duffelbag cursing the mob to gain pacifism and clumsiness permanently.
	dropdel causes items to be qdeleted before the drop signal is sent so it never uncursed the mob.

Why It's Good For The Game

Cursed Duffelbag is less picky now.

Burnt food is surprisingly a little less common now-a-days, due to food changes / decomposition / etc.
This led to it being much easier to literally acid the dufflebag off instead of engage with it's mechanic, which is pretty lame.

By allowing any toxin type to be used, it greatly opens up more options to get it removed.

The damage from the duffelbag now has a wounding penalty.

Dufflebag's damage had no wounding modifier, meaning it was surefire guaranteed to break your ribs, which was incredibly debilitating.

Now, it can still break your ribs if you have very little chest protection, but it's much much less likely if you're wearing equipment.

If the attached mob is dead, it now deals significantly less damage.

Makes it a bit easier to treat people who are afflicted with a dufflebag. Reviving people with a cursed dufflebag would constantly result in them being damaged greatly beyond the defib threshold. Just annoying.

The dufflebag now uses visible messages to convey it's eating to people nearby, instead of just to_chats.

Mostly QoL. Some people would be confused why someone's being damaged from seemingly nowhere.

Fixes the cursed duffelbag cursing the mob to gain pacifism and clumsiness permanently.

Bugfeex. Sue me.
2022-06-18 17:49:03 -07:00
Jeremiah
acfa5e4fdd TGUI Say: Upgrades chat input with modern features (#67116)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
Co-authored-by: iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
Co-authored-by: KubeRoot <6917698+KubeRoot@users.noreply.github.com>
Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
Co-authored-by: Iamgoofball <4081722+Iamgoofball@users.noreply.github.com>
Co-authored-by: DomitiusKnack <56321744+DomitiusKnack@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
2022-06-16 17:21:21 -07:00
AnturK
fddb6ea124 Fishing, Version 1 (#67691)
Adds fishing and fishing minigame.
You use fishing rod to fish.
Equipping specific bait/hook/reels will affect your success chances.
You can fish out fish,items and other things.

Fishing Equipment
Fishing rods have three slots: Bait, Reel and Hook.
Any food can be used as bait but dedicated bait makes fishing easier.
You can buy hook and line sets
New bait types:

Worms : Buy can of them at cargo (alternative acquirement method pending)
Doughballs : Use knife on flat piece of dough to get five of them.
Fishing rod types:

Basic : Print these at the lathe, nothing fancy here.
Tech: Experimental tech. Provides infinite bait
Fishing rods can also hook and reel normal items.

Equipment screen and reeling video
Fishing spots
Keep in mind this PR is meant to add the basic systems and i intend to fill these with more fish in future PR's so wait with suggestions until then.

Lavaland lava (no fish here right now, just other stuff), requires reinforced line to fish in.
Maintenance moisture traps.
Beach away mission water.
Fishing portal available for purchase from cargo - This is stopgap until we fill more spots.
Difficulty depends on fishing spot, fish type, and the fish traits and rod setup combinations.
All fish types can have specific traits, most common ones being favourite and disliked bait types/categories.

Other
Fishing catalog now lists fishing related info
New admin debug verb, fishing calculator that show probabilities with different setups so it's easier to balance this.
Fish now have average weight and size. Make sure to boast if you catch a big one.
Adds tgui mouse passthrough
Screens
Sprites:

Fishing portal sprite by @ArcaneMusic
Other sprites by @Mey-Ha-Zah
Bad ones by me. (Could still use better fishing minigame backgrounds)
Sounds:

https://freesound.org/people/soundscalpel.com/sounds/110393/
https://freesound.org/people/soundslikewillem/sounds/343748/
2022-06-16 22:36:10 +01:00
MrMelbert
b438cc0039 Fixes Knockdown signal being incorrect, making knock-off items (and others) trigger when they should again. Also cleans up the knockoff component and unit tests it. (#67720)
At some point, someone did a find and replace over this file, and completely screwed up the signal for Knockdown().

This caused components that relied on it, like the Knockoff component, to work way less often.

This PR fixes that.
It also goes through and cleans up the Knockoff component. More consistent style guide stuff, minor improvements, better documentation.

It also unit tests it.
2022-06-16 16:39:15 +01:00
MrMelbert
37b1d0f12e Fixes the "stuck in a vertical fireman carry" curse (#67783)
Fixes #67622

#66530 made it so anything with the ridable element lost the element whenever it died.
Unfortunately it added NO supplementary logic that re-adds the ridable element of that thing died.

Guess what uses the ridable element? Humans, for fireman carrying and piggybacking

So, if you ever died, it'd permanently brick your ability to fireman carry.
2022-06-16 16:29:08 +01:00
distributivgesetz
763a10d1cc Resonance cascade polishening, bugfixes and better logging (#67488)
This PR rewrites almost all messages related to cascade events. Some messages felt kinda clunky to read or could have been written better. Overall, the new messages add to the experience as a cascade being a terrifying event in a way that I felt the old ones missed, and they make the event feel overall a lot sharper.

While looking at the resonance cascade code, I noticed that there a lot of stuff about cascades in the air which was not touched on. So, as I do, this PR evolved into a polish and roundup PR for cascades. There was a lot of stuff still hanging out relating to the event, and although the big backend of it sits, there was still a bit left to be completed. Therefore this PR deserves more the title of the "Resonance cascade POLISHENING" instead of the "REFLAVAHRING". But yeah, you ever go on a massive tangent before?
2022-06-16 16:22:22 +01:00
Timberpoes
bc89c46b22 Fat Armsky no longer deletes people by standing on boxes. (#67300)
* Securitrons no longer runtime error and delete a player getting stunned through a cardboard box.
2022-06-14 18:40:54 -04:00
Tim
09d2d1341c Add dyslexia (illiteracy quirk) as a genetic mutation and disease symptom (#67388)
* Add illiteracy to genetic mutations

* Add illiterate dna injectors

* Add illiteracy effect to confusion symptom

* Fix missing comma

* Change illiteracy to use resistance for confusion

* Fix disease unit test failures

* Refactor var names for confusion symptom
2022-06-14 01:04:32 -04:00
Timberpoes
a26927fabf Fixes slips being broken and adds a unit test to catch it happening again. (#67741) 2022-06-13 21:41:43 -07:00
Fikou
5be8bde77f floating movement type now stops slips (#67694)
* float movement type now stops slips

* weh
2022-06-12 12:47:51 -04:00
John Willard
9f5e3118bb Makes ore silo connecting work on multi-z (#67640)
* makes ore silo connecting work on multi-z

* I merged the two checks for same z level when connecting an ore silo, and disconnecting it. This was because I didn't want to copy paste the code to use it twice, which was what now caused the problem of multi-z maps being unable to connect ore silos on the same level. At the time it was also intentional since it's easier to connect than to disconnect something, but I realize that this inconsistency isn't great or beneficial to anyone.

* Turns it into a helper instead
2022-06-11 21:12:34 -04:00
MrMelbert
c34afedcfc Fixes Novaflowers not lighting people on fire, again. Unit tests it. Cleans up some unique plant genes stuff too. (#67597) 2022-06-11 02:04:32 -07:00
Tim
4e347c21a6 Add disease resistance effects for spaceacillin (#67448)
About The Pull Request

Spaceacillin is currently an under utilized medical chem. Its only effect is to stop a person who is already infected from spreading an airborne disease.

My changes add the following when someone has taken spaceacillin:

    Infected mobs slow down disease progression by 50%
    Uninfected mobs have a 75% chance to block being infected
    Uninfected mobs have a 75% chance to block zombie infection when attacked
    Impregnated mobs that have an alien larva slow down larva growth by 50%

Why It's Good For The Game

Gives spaceacillin more utility since it was such a niche thing.
Changelog

cl
add: Add disease resistance to spaceacillin. It now gives 50% disease progression slowdown, 75% to block disease infection, 75% to block zombie infection when attacked, and 50% alien larva growth slowdown.
/cl
2022-06-11 12:45:13 +12:00
LemonInTheDark
e15e0f3e91 Lemon does weather effects (#67469)
* Lemon does weather effects

Ok so I don't like how weather effects look when they run up against
some sort of border, particularly walls and darkness.
They just sorta snap out of existence. This is cause they were recently
moved from the AREA_PLANE to the ABOVE_LIGHTING_PLANE. This fixed things
like snow or ash storms looking dim, but had some annoying side effects.

I'm gonna do my best to mesh the two, at least somewhat.
I've done two things. The first is letting weather choose to apply a
second icon state to its area, one that draws above lighting, and moving
the current overlay down to AREA_PLANE again.

Oh and the above lighting stuff gets made a bit see through, so it's not
too intense.

This way darkness doesn't totally mask effects, it just makes them
harder to see.

I've gone through the existing effects for this process. I basically
just removed the "background" from any effects that had it. This way you
see the particles at a reduced intensity, but not the "shadow" that the
effect applies.

Oh also can't use glow with lava, cause it draws onto the floor, or
under walls.

In the process of this I realized that snow looks really bad right now.
It's really jerky, has a very clear wrap point, and doesn't even
complete a full animation. So I redid it, added some more flakes and
made it "faster"

I also tweaked non smoothed lava (IE: floor is lava and the wizard ship)
It was scrolling a pixel a tick, but in steps of 3 ticks. Looked bad, I
think the smoothing is better.

I'm not really a spriter or anything, this stuff just cheesed me off a
bit

* whoops
2022-06-10 09:38:38 -04:00
MrMelbert
3c8b666b35 Refactors Gunlight / Helmetlight to be a component (#67517)
Atomized from the proc holder PR

    Refactors gunlight / helmet light to be a component.
        They just copy+pasted code between each other and it was really annoying. I was working on fixes for the proc holder PR and noticed this (had to make the same fix for two things).
    Moved Mind Monkey Helmet to its own file
    Balloon alerts for seclite attachment / removal

One may be able to genericize this even further and put the bayonet behavior on this as well. Future idea.
Why It's Good For The Game

Cleaner, less copy pasted code.
Changelog

cl Melbert
refactor: Gunlight / Helmetlight behavior is now a component.
qol: Gunlight / Helmetlight now uses balloon alerts.
/cl
2022-06-10 16:34:24 +12:00
Mothblocks
ab5ca88dd8 Remove majority order clause from Asimov++ (#67670) 2022-06-10 13:58:35 +12:00
robbertapir
4393879777 Prevents negative mats (#67582)
* Prevents negative mats from the ore redemption machine.

Co-authored-by: robbertapir <robbertapir@airmail.cc>
2022-06-08 10:11:17 -04:00
MrMelbert
df87fb9393 Fixes jitteriness stacking up to insane amounts while dead (#67567)
* Jitter effect doesn't apply to dead people

* in apply, instead of create
2022-06-07 21:59:12 -04:00
Iamgoofball
aebd156a43 CARGONIA THE FREE: The Quartermaster is now a head of staff. (#67518)
* The Quartermaster is officially a head of staff, with new accesses, a silver ID, ect ect.
* The HoP lost their cargo-related equipment and access, including the Vault monitor, and frequency.
2022-06-07 21:38:02 -04:00
Tim
cdf0a3c58a Add hallucinogen poison to frog attacks (#67572)
* Add frog hallucingen effects

* Add frog to venomous code comment
2022-06-07 21:34:23 -04:00
BeeSting12
cd54482972 Fixes grammar error in embed code (#67589)
Fixes grammar error
2022-06-07 19:33:27 -04:00
Tastyfish
3f3d337d7b Massive plumbing layer/placement improvements (#66602)
* Massive duct improvements

* last minute fixes/additions to plumbing layer fixes

* letter, loop, and early return fixes

* early continues

* color comments

* reaction chamber colors

* rcd tweaks

* Update code/datums/components/plumbing/reaction_chamber.dm

* Update code/datums/components/plumbing/reaction_chamber.dm

* Update code/datums/components/plumbing/_plumbing.dm

* Update code/datums/components/plumbing/_plumbing.dm

* remove unused var, better duct restacking

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2022-06-07 19:30:18 -04:00
John Willard
1fcb7fec67 Material holding machines can't connect to ore silos on different z levels (#66953)
The station's ore silo can't connect to machines that are off the station z-level anymore. This doesn't affect multi-z stations.
Also includes ore silo code improvement because I was unhappy with it.
2022-06-07 11:24:38 -07:00
Tim
8576db2f32 Add Russian Roulette memories and moods events (#66051)
About The Pull Request

This adds memories to a nearby audience if someone is playing Russian Roulette with a loaded gun. The person who wins or loses also gains a positive or negative mood event that is long lasting. All of these events only trigger if the person playing is targeting a lethal area.
Why It's Good For The Game

Being able to add Russian Roulette to engravings would be pretty cool.
Changelog

cl
qol: Playing Russian Roulette with lethal intent now creates a mood event for the user and is engrained in any nearby peoples memories. The more bullets the better the memory and mood boost.
/cl
2022-06-07 21:25:11 +12:00
Tim
f06d735a52 All AI Lawsets are rebalanced, can be researched, appear in config, and random spawners for AI upload. (#66854)
This formally adds the new AI lawsets from #66636 into the game. Every lawset can
be researched, appears in config, and random spawners.
2022-06-06 22:54:29 -07:00
Son-of-Space
3dd6524ea7 [MDB IGNORE] Big Access Tweaks and Organization (#67512)
* Reorganizes some of the access and jobs access code for readability.
* Engineers get access to minisat and tcomms, atmos techs get it on skeleton crew.
* Service jobs that used to have morgue access without reason (bartender/botanist/hop) had it moved to skeleton crew.
* RD lost access to Mining, Mining station, and Medbay (holdover from Genetics), but gained Construction access to easily access the AI.
* Roboticist has had their skeleton crew access to ordnance revoked to align with the geneticist's skeleton crew access
* Miners no longer have SHIPPING access (renamed from Mail Sorting)
* The HoS and Paramedics have proper access to the basics in each department again
* Minisats across all maps now require Minisat access to access.
* Secure tech storage now once again requires both Command and Tech storage access again.
2022-06-07 00:46:05 -04:00
Jolly
2da4f98da5 Ports the Flower Garland from JollyStation (#67468)
* pick 12 flowers and regret your decisions

* Update code/modules/clothing/head/garlands.dm

Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>

* Update code/modules/clothing/head/garlands.dm

Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>

* Update code/modules/clothing/head/garlands.dm

Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>

* Update code/modules/clothing/head/garlands.dm

Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>

* grammar

* sanity mood event

* willards review

Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
2022-06-05 23:40:24 -04:00
Tim
59e61bc840 [NO GBP] Fix illiterate quirk bugs (#67473)
* Add trait literate to defines

* Add TRAIT_LITERATE to global vars

* Add is_literate proc to check for literate trait

* Remove is_literate proc from human

* Remove is_literate proc from silicon

* Add TRAIT_LITERATE to silicons

* Add TRAIT_LITERATE to drones

* Add TRAIT_LITERATE to abudctors

* Revert last commit

* Add TRAIT_LITERATE to abductors

* Add TRAIT_LITERATE to androids

* Add TRAIT_LITERATE to dullahan

* Add TRAIT_LITERATE to species

* Add TRAIT_LITERATE to flypeople

* Add TRAIT_LITERATE to golems

* Add TRAIT_LITERATE to humans

* Add TRAIT_LITERATE to jellypeople

* Add TRAIT_LITERATE to lizards

* Add TRAIT_ILLITERATE to monkeys

* Add TRAIT_LITERATE to mothmen

* Add TRAIT_LITERATE to mushpeople

* Add TRAIT_LITERATE to plasmamen

* Add TRAIT_LITERATE to podpeople

* Add TRAIT_LITERATE to shadowpeople

* Add TRAIT_LITERATE to skeletons

* Add TRAIT_LITERATE to snail species

* Add TRAIT_LITERATE to vampires

* Add TRAIT_LITERATE to zombies

* Add TRAIT_LITERATE to clever mutation

* Comment out TRAIT_LITERATE for monkeys

* Comment out TRAIT_LITERATE for ashwalkers

* Fix illiterate mobs reading tablet messages

* Update traits.dm
2022-06-05 23:38:50 -04:00
Iamgoofball
2719af0f05 Fixes centcom announcements referring to icebox as a station in orbit (#67528)
Fixes #67467
2022-06-05 20:51:23 +01:00
MrMelbert
3c69d9e898 Ensures cinematics really go away when they're done. (#67332)
* Ensures cinematics really go away in all scenarios
2022-06-05 21:12:31 +02:00
dragomagol
6370761692 Move more silicon-relevant logs to silicon logs (#67340)
Moves a bunch of logs that were silicon-related but logged to game.log to silicon.log.
2022-06-04 19:50:41 +01:00
Son-of-Space
c78268f7f3 Departmental Officers now have access to most of their department (#67275)
This pull request equalizes the access that departmental security is given for their department, giving departmental security officers access to all areas in the department which aren't head-specific. For example, the engineering security officer wouldn't have access to the tech storage room or the ce's office, but does have access to tcomms, engine equipment etc.

This is done so that all departmental security officers are equally enabled to respond to issues in their department and have the access that a basic member of the department would have. Currently, cargo officers are able to respond to any issue not in the vault or QMs office, but officers in science could only respond to issues in the science hallway, research room, or circuit room, and are unable to respond to issues in any other place in the department.

I believe that the reason for the above is that when new accesses have been added to departments, they neglected to add these areas for departmental security officers.

Upon further research, for things like virology or xenobio, it feels like keeping security officers out was intended, so I'll label this both a fix and a balance change.

Departmental security officers should be able to reliably respond to security issues in the department. While some areas like virology and xenobiology were deliberately separated from being accessible by security officers previously, I believe it is an antiquated design crutch that does not properly reflect the modern ways that antagonists work, and certainly doesn't reflect the standards that are currently set for officers.

Giving officers these accesses make departmental assignments something with genuine utility instead of something that gives you an armband and enables officers to feel/be felt like a part of their designated department.

These changes also make sure that departmental assignments are treated equally and have equal utility, making it easier to collectively change the feel of departmental security in the future.
2022-06-03 13:10:07 -06:00
SmArtKar
305aa1e478 Fixes statue simplemob teleport not working and 3 other spells not appearing (#67105)
* Fixes statue simplemob not being able to teleport, and their 3 spells they're supposed to have.
* Also repaths statues to netherworld mobs, to reduce copy paste code.
2022-06-03 04:56:47 -04:00
robbertapir
12b5e39731 Fixes a check doing the opposite of what it was supposed to do (#67439)
fixes a check

Co-authored-by: robbertapir <robbertapir@airmail.cc>
2022-06-02 11:48:35 -04:00
MrMelbert
1ffab33745 Minor buffs for Heretic focuses / equipment and the Void Cloak. (#67263)
* Heretic focus changes, turns it into an Element
* Buffs Void cloak, letting it hold more and hold more kinds of items
* Makes eldritch potions small sized (before: normal)
* Adds more explanations to some descriptions.
2022-06-02 00:46:09 -04:00
Ryll Ryll
771eadacc9 Fixes pellet cloud wounding where I just broke it (#67424)
I was stupid in #67331 (9431c92f70) and forgot an initial() around an un-instantiated projectile var call. This puts it in so wounding checks don't runtime. I have actually tested that this works

Pellet clouds work properly
2022-06-01 20:04:28 -07:00
GoldenAlpharex
1c7635f077 Fixes the stasis ripple not playing in a loop and the unusually-slow stasis bed lying down animation (#67403)
* Fixes the stasis ripple not playing and the slow stasis bed lying down animation

* Actually makes the ripple start after the lying down animation is over
2022-06-01 18:22:29 -07:00
MrMelbert
b7eace2fad Adds Cargorilla (#67003)
* Adds cargorilla

* working cargorilla

* Tweaks to control + jobs and stuff

* Sleep

* Probably don't leave in debug

* el sanity

* el change them to use globals, el refactor

* Does this fix it?

* Ah, okay

* el copypaste

* el mapload vars

* ready to ship
2022-06-01 19:41:46 -04:00
ArcaneMusic
c24ff68629 Adds steam vents to maintenance, adds some flavor to maintenance. (#66915)
* Steam Vent Challenge (Do not meme)

* Fixes icebox, I think

* Changes to how smoke behaves appears to have removed the need for the opacity setting on the vent. Sounds.

* Mapmerge sama please

* Adds signal system, crafting recipe, and some basic crafting organization.

* Potential fix

* Apply suggestions from code review

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>

* makes changes thanks anturk

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
2022-06-01 23:07:50 +02:00
Fikou
ee3ab47e01 Adds the Ninja MODsuit (#67220)
Why It's Good For The Game

Ninja code is pretty bad, I think it's best to move away into nice modular stuff instead.
Changelog

cl Fikou, PositiveEntropy, Nerevar, InfraRedBaron
refactor: the ninja space suit is now a modsuit
fix: fixes dash beams not working
/cl
2022-06-01 09:25:27 +12:00
Wallem
12204f2943 GAGS-ifies ties, and removes inherent ties from some outfits. (#67053)
Removes the inherent ties from most civilian outfits with a single-color tie baked into them.
2022-05-30 22:02:25 -07:00
Kapu1178
6d470992cb This tail refactor turned into an organ refactor. Funny how that works. (#67017)
* Fuck you (refactors ur tails)

* Errors

* Wow. Pain.

* Fixes up probably everything

* finish up here

* Fixes hard del maybe

* original owner hard del

* garbage collection runtime

* suck my peen byond

* Mapped tails

* motherfucker.

* motherrfucker. again.

* Whooopppppsie

* yeah bad idea

* Turns out external organs literally just sat in nullspace forever if their parent was deleted, and didnt Remove() themselves, causing harddels.

* So anyways I repathed all organs

* Fixes

* really.

* unit test... test

* unit test-test but it passes linters this time because im a moh-ron

* I've lost track of what im doing at this point

* Hopefully fixes hard del?

* meh

* Update code/datums/dna.dm

* things n stuff

* repath from master pull
2022-05-30 21:18:34 -07:00
Ryll Ryll
9431c92f70 Caps projectile armor at 90%, armor now applies to pellet cloud wounding (#67331) 2022-05-30 13:45:15 -07:00
Urumasi
10c698abba Add new H.E.C.K. suit GAGS sprite, recolorable via spray can (#67217)
imageadd: The H.E.C.K. suit has a new sprite. (by Meyhazah)
add: You can now use a spray can to completely recolor the H.E.C.K. suit.
2022-05-30 15:36:20 -04:00
tralezab
6d8485f0db When AI rolls "Unique AI" station trait, upload modules won't be available until research, and research requires more points. (#66633)
Rolling unique AI station traits removes boards from map and changes research costs of other lawsets.
2022-05-30 20:55:51 +02:00
MrMelbert
e17f2c6d68 Fixes Nullwave Vibrato triggering a chaplain's own antimagic. Also genericizes musical sect code slightly. (#67266)
Goes through and genericizes sect music effects slightly. As it stood pretty much all of them were copy+pastes of one another, with some minor changes, so making them one unified thing is cleaner.
2022-05-29 19:33:50 -07:00