Commit Graph

4384 Commits

Author SHA1 Message Date
OrionTheFox
ea94e69674 Fixes the Pants Altar's pants' icon (#68788)
le cult pante
2022-07-30 04:55:42 -04:00
san7890
84cdd6de96 Removes Single-Bedsheets Spawning In For Double Bedsheets (#68777)
Hey there,

Apparently, one line of this was lying around in the randomizer for the double sheet spawner, which shouldn't be the case. I replaced it with what I believed was the original intent (a normal white double bedsheet), as well as some formatting.
2022-07-30 04:51:09 -04:00
Vincent
b152e3d51e Buffs regular windows so they can start replacing reinfoced windows in low security areas (#68817)
Buffs windows to 100 health with 30 melee armor so toolbox takes 10 hits
2022-07-30 04:34:31 -04:00
Watermelon914
69226b3bd7 Drastically improved the USB connection for air alarms. Any airlock can now be made into a shell (#68632)
The USB connections for air alarms have been improved and now include scrubber control, vent control and the setting of the air alarm mode. Also fixes a bug where the limits were not being properly set.

The scrubber, vent and limit control can be duplicated in the circuit to allow multiple limits/scrubbers/vents to be controlled by one circuit.

Any airlock can be made into a shell during construction by configuring the airlock electronic before insert.
2022-07-29 13:52:29 +02:00
Ghom
b4b9c6776d Ladders take left/right clicks to go up or down (+ extra balance and QOL) (#67913)
You now left click to climb up and right click to climb down a ladder. A delay of 1 second has also been added, since otherwise it'd take only one click to immediately move vertically and would be much more spammable.
Ghosts still use the old radials, because their right clicks are bound to the default byond popup menu.
2022-07-28 02:40:34 +02:00
Tom
5825432f94 Adds nuclear particles to the reflector allowed projectile reflection types (#68689) 2022-07-27 15:37:15 -05:00
Y0SH1M4S73R
196250c8f7 Concentrated barbers aid can give hairless species hair + fixes hair updating once and for all (probably) (#68580)
Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
2022-07-25 03:21:23 -07:00
Fikou
01838b14a6 you no longer rename door assemblies with pens on combat mode (#68550)
what the title says
it makes you able to break door assembles with an energy dagger
2022-07-24 21:16:10 +03:00
ArcaneMusic
cad307513f Adds screentips to rolling beds and body bags. (#68331)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-07-22 20:50:37 -07:00
Coffee
ece2b1b50f Adds new signage for the AI upload, AI sattelite, telecomms, vault, and R&D Servers (#68403)
Adds new signs for the AI upload, AI sattelite, telecomms, vault, and R&D servers. Maps these in, shuffles things around to make them fit.

I was playing some other maps for the first time, and I noticed that if you're not familiar with the map it tends to be confusing what these rooms are at a glance.
More beginner friendly, and they're good atmosphere.
2022-07-21 00:01:58 -06:00
13spacemen
2300cf63fa Multiple AI fixes (#68451)
* AI (de)construction posibrains will not ping ghosts

* fixes MMIs not transferring brainmob to ejected brain
adds ability to (un)anchor AIs with a wrench

* adds comments for new posibrain creation
adds arg to deactivated ai core structure Initialize() to skip creating an MMI which will be overwritten anyway
2022-07-17 23:21:39 -07:00
san7890
ea6755b511 Abusing Generosity - Unrestricted Airlock Access Flip (#68096)
* Abusing Generosity - Unrestricted Airlock Access Flip

Hey there,

We now have a lot of unrestricted access helpers on airlocks, which are neato. However, while spitballing ideas in regards to this a few months ago, someone suggested to make it such that you can use the airlock wires to "flip" the directional way. I decided to sit down and code it in today.

The high details are this: You can only do it if the airlock has a directional Request-to-Exit sensor (which is just a thing I made up, you can't get this in-game outside of mapping it in via a directional helper). You can tell if a door has it the same way you can tell if any door is a directional door, or you can simply just check to see if the Unrestricted Access Display is "on" in any capcity (the airlock will not have the sensor if the display is off).

It's effectively a dud without the "sensor". However, if it does have it, you can either pulse it (to switch the direction by 180 degrees) or cut the wire (to disable the direction entirely). When you mend the wire though, it'll activate to a random direction (could even be inside a wall). You can keep cutting and mending until you get what you want, though. If it gets stuck in a wall though... shouldn't have cut it.

While in the area, I alphabetized a bunch of lists, added a new color of airlock wire, and probably some other stuff.

* Adds this behavior to building new airlocks

I also renamed it to "sensor" so it's a bit clearer across all the potential contexts.

It does seem to handle setting multiple directions on creating a new mapload, cutting/pulsing will condense the nice multi-directional stuff into one direction (i am okay with this).

Co-authored-by: spookydonut <github@spooksoftware.com>

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2022-07-17 23:07:36 -04:00
ShizCalev
bab62597de Cremator / morgue tray jaunting fixes (#68478) 2022-07-17 18:55:28 -07:00
Tastyfish
e720bb2d45 [MDB IGNORE] Hydroponics tray, shower, and sink improvements (#67672) 2022-07-17 18:53:07 -07:00
Twaticus
f0a78409d8 [MDB Ignore]Suit DMI split p1: Mob icons (#68417)
Co-authored-by: TWAT <twaticus.tg@gmail.com>
2022-07-17 01:18:20 -07:00
Coffee
e0ad104620 Autosurgeon code improvement and light overlay (#68379)
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2022-07-17 00:45:40 -07:00
Kylerace
fe7513d282 addresses reviews on the tram pr made after merge, fixes diagonal movement bugs (#68033) 2022-07-16 21:44:41 -07:00
Fikou
71835a7c1c Nukie Rework Part 2: Nuclear Operative starting gear rework (#68401)
Replaces the nuke op Makarov with the Ansem, a clandestine pistol firing 10mm rounds which do more damage. Ammo costs more.
Replaces the nuke op survival knife with the energy dagger, as well as giving it a soft light, light armor penetration and a light wound bonus.
Replaces the diamond drill in their closet with an entrenching tool, which swaps between crowbar, pickaxe and shovel modes.
Gives the nuke op survival box the syndie box design, as well as a crowbar, screwdriver and mini welder.
Removes the nuke op leader's Krav Maga gloves.
Updates the esword and edagger sprites with ones i had lying around from 2019, they are more consistent.
Moves pistol sprites a bit up to center them.
2022-07-16 19:25:52 -04:00
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