Commit Graph

4366 Commits

Author SHA1 Message Date
Y0SH1M4S73R
111b1ffe01 Most compoennts/elements that register COMSIG_PROJECTILE_ON_HIT can now be applied to turrets and projectile spells (#68238)
expands elements that register COMSIG_PROJECTILE_ON_HIT
2022-07-15 23:59:36 -07:00
GuillaumePrata
28e9fa308b Fix roller beds not folding and bodybags runtiming (#68334)
* Fixes roller beds not folding on right-click and fixes bodybags runtiming.

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-07-15 19:45:02 -04:00
13spacemen
da8359ffc0 Deconstructing AIs (#68063) 2022-07-15 16:00:15 -07:00
LordVollkorn
641aa16bae The Toiletbong and other poetical additions (*click* Noice) (#68193)
* Main

* Added deconstruction and better rotation

* Open flame during usage, emagging

* Wording fix, sound fix

* Extra-indestructable check

* Storage is now a normal datum instead of a component? Noice

* Updated harvest.dmi after bell pepper resprite

* The new atom storage broke the emag capability, added a small fix
2022-07-15 11:35:19 -04:00
Thunder12345
86eddc3554 Mining Outpost Overhaul: Island Living Edition (#67796)
Replaced the old mining outpost with a new base consisting of separate buildings on islands in the middle of lava. Added a few new areas and decorations to fill out the outpost. Changed the underfloor accessibility of lava so cables and pipes don't mysteriously disappear as they cross catwalks over lava.

The current mining station is fairly boring and dated. In addition, the general layout of the outpost was bland and uninspired, about as exciting as any other hallway. This replacement offers a new and unique take with an interesting layout and new dangers to be aware of.

The bridges between buildings are exposed to the weather, meaning you could find yourself forced to choose between waiting out a storm in an isolated building with a potentially unfriendly roommate, or running through the storm to get back to a shuttle.

Power and communications are also more vulnerable in the new base, placed in a building on the mainland where ne'er-do-wells could gain access unnoticed and sabotage them, making the mining outpost less of a safe space with little risk of anything going seriously wrong. You don't get access to these just for having mining access, better call the relevant portion of engineering to help you.

Gulag prisoners also get a few new options to keep security on their toes, with a few different options for escape routes that encourage the warden to keep an eye on their charges instead of ignoring the gulag while waiting for the prisoners to do their sentences or kill themselves.
2022-07-12 14:34:31 -06:00
EOBGames
3c8a185c6e Poster Pack 2 - Beyond Posters (#68235)
Adds a new selection of posters, poster-like objects, and wall decorations.

New entirely with this PR, shipping containers! These sprites were adapted from a base from TGMC, with brands and designs more fitting to our universe here on TG

Another new addition, flags! These draw upon Common Core lore, representing several major factions from the lorebase as a new mapping tool

Finally, there are two interactive wall objects- wall clocks, and calendars:

The wall clock shows both the "real time", represented as the Earth time, or Treaty Coordinated Standard Time, and the station time, represented as the local time, or Coalition Standard Time

The calendar gives the in-universe date, as well as any active holidays

Why It's Good For The Game

This adds a lot of fun aesthetic additions that I think will benefit our mapping team in creating new spaces and breathing new life into older ones. Additionally, it helps make our Common Core lore a bit more tangible to the playerbase, bringing it away from being "just on a wiki" and into the game proper.

A whole host of new posters have just become available.
For the architects among you: a number of new aesthetic options are available for mapping with. Let your creativity free!
2022-07-12 12:27:09 -07:00
BluBerry016
8e1f150d0d Icebox Murals: AI Upload and RD Office (#68341)
Redoes the Icebox upload slightly. Adds murals to the upload and RD's office. Also compresses the tile decals on the bridge.

Murals are fun ways to implement art into spaces, whether they commune something or are just there to look nice. It's weird we don't have any in-game already.
2022-07-12 01:03:30 -06:00
magatsuchi
7d0f393f5d Tsu's Brand Spanking New Storage: or, How I Learned To Pass Github Copilot As My Own Code (#67478)
Currently, storage works as a subtype of /datum/component, utilizing GetComponent() and signals to operate. While this is a pretty good idea in theory, the execution was pretty trash, and we end up with alot of GetComponent() snowflake code (something that shouldn't even need to be used frankly), and a heaping load of scattered procs that lead into one another, and procs that don't get utilized properly.

Instead, this PR adds atom_storage and proc/create_storage(. . .) to every atom, allowing for the possibility of storage on quite frankly anything. Not only does this entirely remove the need for signals, but it heavily squashes down the number of needed procs in total (removing snowflake signal procs that just lead to one another), reducing overall proc overhead and improving performance.
2022-07-08 18:13:18 -07:00
BluBerry016
fdd8036140 Revisiting The Goliath: Or, that time I dripped out the SBC Starfury just because (#68126)
Drips the SHIT out of the SBC Starfury while not completely overhauling it. Touches everything NOT in engineering or southward (because I love how scuffed that part is and refuse to touch it on principle) - Also converts one map varedit into a real boy subtype, and moves tiny fans to their own file.

Mandatory disclosure on the gameplay changes:
Fighters 1 and 3 are now NOT in the hangar, and are now attached to the formerly unused gunnery rooms.
Cryo now works. Yeah. I know.
You can actually open the anesthetic closet now.
Everyone now shares three spawners. This doesn't reduce the amount of people who can play when this rolls, as I've adjusted var/uses in accordance: it just reduces clutter.
A few of the horizontal double airlocks have been compacted into glass_large airlocks.
The bar windows now actually have grilles like they were meant to.
Four turbines have shown up. They aren't functional*, they just look like gunnery and conveniently fit in the spots. I'm sure this is space OSHA compliant.
The map is ever so slightly smaller, vertically. This should distance us from an edge case where somehow all space levels are too cluttered for this to spawn properly, for the time being.

*Technically there's nothing stopping you from using them besides the amount of time it'd take for the operatives to kick your ass

This map was originally designed wayyy back before we even had the computer sprites we have now, (#27760 if you want to see SOUL) and it shows. While it will never have it's SM again, we can at least make the thing much nicer to look at.
2022-07-08 13:52:37 -06:00
Tastyfish
c070dd4ffd Adds unit tests for bar sign datums (#68046) 2022-07-08 05:36:10 -07:00
CursedBirb
de92a79891 Qm coat now subtype of department coats like other heads coats (#68229)
Qm wintercoat has been made like into subtype like other heads coats. Qm winter coat can carry telebaton now too
2022-07-07 16:47:19 -07:00
GuillaumePrata
d5a9a1694c Roller beds and bodybags are folded with right click now (#67893)
* Makes Right-click fold up roller beds and bodybags, entirely replacing MouseDrop.
2022-07-06 23:47:36 -04:00
MrMelbert
f8f3dbed98 Completely removes proc_holders from existence. Refactors all wizard, xeno, spider, and genetics powers to be actions. Also refactors and sorts ton of accompanying code. (#67083)
* destroy proc holder pt1
- change proc_holder/spell to action/cooldown/spell
- docs all the spell vars, renames some of them
- removes some useless vars
- start with pointed spells, as they're easy

* kill proc_holder pt2
- kill a buncha vars and replace it with flags
- convert a ton over
- general code improvements

* kill proc_holders pt3
- convert a good few more spells
- rename some signals
- handle statpanel
- better docs

* kiill proc_holder pt4:
- restructure the file system of action.dm, separating a good amount of item actions and miscellaneous garbage into files where they belong slightly better. Also splits off item actions, cooldown actions, innate actions, etc. into their own files, overlal making it much better to work with
- converts touch attacks to actions
- converts blood crawl, jaunt subtype

* kills proc_holder pt5
- clears up some icon issues so all the currently converted pages don't have errors
- shapeshift
- some more action cleanup

* kills proc_holder pt5.5:
- some documentation
- reworks feedback to prevent oversight with teleports and stuff

* kills proc_holder pt6:
- converted cult spells
- converted magic missile
- converted mime spells
- chipped away at the errors
- removed some vars which were too general, replaced them with more locally applicable vars. for example "range" which could mean "projectile range" or "aoe radius" or whatever - instead of having a broad net which everyone applies to in a confusing matter, instead lets each spell delegate on their own.
- merged magic/spell and magic/aoe, as the comment intended
- more unified behavior for spell levelling

* kill proc_holders pt 6.5:
- replacing a buncha old proc_holders that have been updated to reduce some errors. sub 900 baby

* kills proc_holder pt 6.75:
- minor fixes

* kills proc_holder pt7:
- cuts down on some errors
- refactors some wiz events

* kills proc_holder pt 7.5:
- malf ranged modules
- some minor errors

* kills proc_holder pt 7.75:
- mor eminor error handling, cleaning up changes

* kill proc_holder pt8:
- refactors spell book
- refactors spell implant
- some more minor error fixing

* kill proc_holder pt 8.5:
- scan ability

* Adds some robust documentation

* kill proc_holder pt9:
- converts some / most mutations over

* kill proc_holder pt10:
- sort out all the granters
- refactor them slightly
- fix some compile errors

* Some set-unset sanity - going to need to test removing Share()

* Removes transfer actions. It doesn't seem to do anything.
- Transfer_actions was called when current = new_character so locially speaking the early return in Grant() should cause it to NOOP. Test this in the future though

* Removes sharing from actions, docs actions better

* Some better documentation for spell and spell components

* Kills proc_holder pt11:
- Finally finishes ALL THE SPELLS IN THE SPELL FOLDER
- Fixes some more errors

* kills proc_holder pt11.5:
- minor error fixing and sanity

* Method of sharing actions. Can be improved  in the future, needs testing

* Implements a way to update the stat panel entry for a spell. Also gets rid of VV stuff, as you can update the bigflags directly in VV now.

* Curse of madness bug I put in.

* kills proc_holder pt12:
- sub 500 errors!
- converts cytology mobs
- converts and refactors spiders slightly
- some minor fixing around the place as usual

* kill proc_holder pt13
- Finishes heretic spells
- Sub 300 errors!
- some touch refactoring to account for mansus grasp

* kills proc_holder pt14:
- revenant
- minor bugfixing for heretic stuff

* kills proc_holder pt14.5:
- some missed stuff for revenant + heretic

* kills proc_holder pt15:
- alien abilities
- more minor fixing
- sub 100 errors. The end is nigh

* kill proc_holder pt16? 17:
- Finishes cult spells
- sub 50 errors!
- refactors the way charge works
- renames / moves some signals

* kills proc_holder pt final:
- sdql spells
- no more errors!

* Bugfixes round 1

* Various bugfixing
- documentation done
- give spell works
- can cast spell gives feedback conditionally
- is available takes into account casting ability

* Some accidental reversions + fixes

* Unit tests

* Completely refactors jaunting
- All bloodcrawling is now handled on the action itself instead of across various living procs
- slaughter demons have their own blood crawls
- jaunting dummies don't have side effects on destroy() anymore

* Wizard spell logging and even more refactoring
2022-07-01 02:01:02 -04:00
OrionTheFox
294c89a328 Lets SAW tools (and PKC) cut trees, MINING tools break rocks, and fixes e-blades cutting while off (#67285)
* Adds TOOL checks combined with the lists
* Chainsaws are now slow when turned off, and are pre-nerf speed when on
* Adds a better disallowed_tools check
2022-06-30 16:44:28 -04:00
Salex08
6f72388da1 fixes headspike runtime error and bug (#68040)
* fixes headspike runtime error and bug

* requested change

* Revert "requested change"

This reverts commit ab3aefa180ff32cee00c16b8baed3db1fe1b1fb0.

* Revert "fixes headspike runtime error and bug"

This reverts commit ed1f76e88b709064df0dbde655ca618ddbb78b3d.

* actual fix
2022-06-28 16:42:01 -04:00
MrMelbert
99fce487d9 Refactors Knock to use Connect Loc (#67884)
* Knock uses a new connect loc signal.
2022-06-27 02:04:08 -04:00
san7890
446fd1d098 Patches Rad_Area Directional Sign Helpers (#67945)
Patches Rad_Area Directional Sign

Hey there,

I was trying to do something much more ambitious, but that completely fell through. I did catch this little mistake that caused this to occur though:

This PR just makes it the correct pathing for the directional helpers.
2022-06-25 15:57:51 -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
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
Pickle-Coding
877a6c6b18 Getting shoved into a closet will now mention that the shover shoved you into the closet instead of yourself. (#67769)
Webedit oh no!

Changed the message the user receives by getting shoved into the closet to mention that the shover shoved them into the closet instead of themselves.
2022-06-15 10:56:00 -04: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
Tastyfish
d2392eaf4a Fixes sinks that don't have water reclaimers (#67462) 2022-06-07 21:56:25 -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
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
TemporalOroboros
2683ec04b0 Improves logging for smoke clouds. (#67206)
About The Pull Request

Makes smoke propagate the fingerprints of the last person to touch the source of the smoke.
This makes gunpowder smoke actually log the person responsible for the explosions.
Why It's Good For The Game

As of right now gunpowder smoke (and similar) doesn't actually have very good logging as as far as the smoke is concerned it's never been touched and so the resulting explosions are blameless. Obviously, scrolling up for a good minute looking for who has just obliterated the escape shuttle is slightly annoying for the admins. Ergo, making the explosions log who actually is responsible for making the smoke they originate from should reduce admin annoyance.
Changelog

cl
admin: Smoke now logs the last person to touch the source of the smoke as the last person to touch the smoke itself. Gunpowder smoke should be less annoying to log dive as a result as every explosion will log that person.
/cl
2022-06-07 15:45:20 +12:00
itseasytosee
878e3b8d37 Implements a Demolition Modifier variable to items, affects damage vs structures and robots. (#66967)
Adds a modifier variable which can be used to increase or decrease a given items damage to structures, machinery, vehicles, and robots (including cyborgs, simple-bots, and anything else with the MOB_ROBOTIC biotype)
2022-06-06 15:29:57 -05:00
ATH1909
619d272d79 adds crowbars to fire-safety closets without gutting red toolboxes (#67484)
* l a r g e

* reduces confusion in the description
2022-06-05 23:57:56 -04:00
Iamgoofball
ba0ef6d3fb Fixes mid-construction airlocks having paper stuck to them (#67530)
Fixes #67393
2022-06-05 20:52:47 +01:00
EOBGames
ad07e02316 The Great Species Food Rebalance, Part One: Nutriment, Chemical Recipes, Cargo Orders, Baking Times, Oh My! (#67227)
the great rebalance, part one

A comprehensive rebalance of food, including cooking times, nutriment values, crafting recipes, and cargo orders
2022-06-05 20:17:07 +02: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
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
975fa3b7f9 reinforced windows no longer runtime when heated up by non welding tools that can weld (#67416)
About The Pull Request

            if(tool.tool_behaviour == TOOL_WELDER)
                var/obj/item/weldingtool/welder = tool
                if(welder.isOn())

cmon bro
Changelog

cl
fix: reinforced windows can be heated up by things that can weld but arent welding tools
/cl
2022-06-01 09:24:38 +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
SmArtKar
ffcc271f00 Fixes foam spreading through public airlocks and windoors (#67101)
* Fixes foam spreading through public airlocks and windoors

* nova
2022-05-26 23:41:58 -07:00
Fikou
ccbd002c61 Security modsuit update (#67131) 2022-05-26 12:24:06 -07:00
Son-of-Space
3fb351b093 [NO GBP] Fixes Detectives having access to security gear lockers (#67264)
Detectives having access to gear lockers was unintended when originally put in by #66990 f3c92c5b6e. Moving gear locker access to ACCESS_BRIG improves consistency in the goal of that PR.
2022-05-25 23:00:39 -06:00
Son-of-Space
e3fd627615 [MDB IGNORE] The Grand Airlock Naming Audit (#67235)
I manually audited all 4,710 instances of airlocks across all maps for upper casing

You'll never guess what I found.

UPDATE: We now have a grep to check for mistitled airlocks, and it's in this PR!
2022-05-25 00:29:24 -06:00
MrMelbert
e2e658db41 Refactors and sorts Nuclear Bombs and Cinematics. Fixes and unit tests nuke cinematics, and re-adds a missing malf ai cinematic. (#67144) 2022-05-21 22:49:06 -07:00
Son-of-Space
8440d20981 [MDB IGNORE] Reformats Access IDs for accessibility and futureproofing (#67002)
* [DRAFT] Reformats Access IDs for accessibility and futureproofing

* replaced all the old defines and IDs everywhere

* replaced ID integers with strings, cleaned up a couple tram helpers

* replaces req_access_txt with req_access and fixes a few of my mistakes

Co-authored-by: san7890 <the@san7890.com>
2022-05-20 02:43:02 -04:00
Sylphet
51db61cff5 Spinward Smoothies Space Ruin (#67001)
Adds a space ruin called Spinward Smoothies. It's a nature-themed smoothie bar built into an asteroid. Also includes recipes for six smoothies to match the theme.

It's a cute little thing to find in space, enabling space explorers to grab a drink there and relax for a while. More things to explore.
2022-05-18 16:57:08 -06:00
Son-of-Space
f3c92c5b6e Gives Detective ACCESS_SECURITY, moves security equipment to ACCESS_BRIG (#66990)
* Gives Detective ACCESS_SECURITY, moves security equipment to ACCESS_BRIG

* Removed Forensics access from brig closet, security records
2022-05-16 18:43:57 -04:00
DragonTrance
89650214fd [MDB Ignore] Refactoring Flora code (#66978)
* organizing flora file and icon states, & flags

Changes the typepath for a lot of flora, and adds new paths depending on the amount of icon states the flora had, for better modularization on mappers. Also adds flags to the flora depending on what type it was, instead of 3 bools

* Getting ready to attempt to modularize flora

Moving most vars and procs from ash flora into the normal flora type path, as a general preparation to add more here

* Weighted products & Region Messages

Rewrites flora code so a flora's produced items can be initialized with a weighted list. Also has some improvements, relating to item stacks.

Adds an option via variables to separate 3 messages into 3 possible regions, or the old method where the message changes when the value is exactly the same as the low or high harvest value

* organizing + documentation on procs

* Documentation, Organization & Modularization

(DOMing) yeah, I dom
Gives variables for tools that can harvest flora, a blacklist of them, and modularizes variables a bit.

Retypes the stump to be a subtype of a tree, which just deletes after being harvested

* Adds the ability to uproot flora with a shovel

* added eswords to the list of things that can cut

* ausbush junk

* code review appreciation + changing drag_slowdown

* more code review appreciation

* kirbyplants ComponentInitialize() -> Initialize()

* forgot glob.
2022-05-16 00:00:54 -07:00
John Willard
0a4d82046a Fixes pants altars being spammable (#66911)
The cooldown doesn't start until the pants is finished being made, so while its still making the pants, you can spam the shit out of it
2022-05-13 07:59:26 -07:00
John Willard
cfca867cf8 Fixes the captain's PDA (#66908)
I screwed it up and didn't make the Captain's PDA a subtype of heads, so captain was spawning with the wrong PDA.
2022-05-13 10:57:46 -04:00
John Willard
62281befe3 makes minifridges able to hold more stuff (#66922)
Due to mini-fridges being in the pool for spawning instead of crates/lockers, if there's too many things meant to spawn in said fridge, unit tests will fail because it cannot hold it.
To fix this, I simply added more storage capacity.
2022-05-13 10:51:29 -04:00
John Willard
cc57407c79 [MDB IGNORE] Removes tablet cartridges + reworks a ton more (#66505)
- All tablets who previously had apps in a cartridge now has them built-into their tablet instead. This means it costs space for it.
- Rebalances the sizes of several apps to help them fit on Command tablets (Cargo ordering costed 20!!)
- Removes tablet cartridges, they've been reworked into a regular old portable disk (the same you use for toxins/borgs)
- Removes Signaller (the module required to run the signaller app) from tablets (likely will remove more in the future)
- Refactors the health/chem scanning app to not be as bad
- Dehardcodes detomatix resistance
- Ability to send PDA's to all is now tied to your access rather than a cartridge
- Moves 'eject disk' button to the very top of the UI
2022-05-11 12:04:11 -04:00
Ryll Ryll
e8f2441630 Minor twohanded component refactor (#66791)
The two handed component, while useful, has quite a bit of bloat that gets replicated whenever a new class of 2h items is added.

This PR cuts that bloat by replacing the use ofCOMSIG_TWOHANDED_WIELD and COMSIG_TWOHANDED_UNWIELD as ersatz callbacks with actual callbacks, the replacement of various var/wielded defs on items with a check for HAS_TRAIT(src, TRAIT_WIELDED), and the removal of any now-unnecessary on_wield()/on_unwield() procs that simply toggled those wielded vars
2022-05-10 20:09:23 -04:00
dragomagol
8764893593 [MDB Ignore] Mapping directional helpers for signs + sign naming conventions (#66754)
* 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>
2022-05-10 06:32:09 -04:00
MrMelbert
e63d556d83 Confusion status effect is now duration based instead of magic number based (#66801)
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.
2022-05-09 18:59:33 -07:00