* Podpeople inherit their blood chemical from the most abundant chemical trait in their seeds (#65215)
Makes podperson clones have their blood reagent set as the largest chemical gene present in the seeds (defaults to water).
* Podpeople inherit their blood chemical from the most abundant chemical trait in their seeds
Co-authored-by: Bond <58570888+TheBonded@users.noreply.github.com>
* Change hydroponics tray and chem dispenser AltClick behavior to be used by RMB (#64939)
* Change hydroponics tray and chem dispenser AltClick behavior to be used by RMB
Co-authored-by: Tim <timothymtorres@gmail.com>
* Adds some contextual screentips to botany related things (#64954)
* Adds some contextual screentips to botany related things
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Add's food processor function to spider eggs and carp filet. Yaki imo recipe change (#64704)
At the moment carp meat kind of has no use at all for the chef, the meat is poisonous which is just kind of a drag. The only practical use for carp at the moment is rezadone.
Also uh, we have ovens now so yaki imo should be made in the oven.
* Add's food processor function to spider eggs and carp filet. Yaki imo recipe change
Co-authored-by: carshalash <carshalash@gmail.com>
* Fixes issues found by new switch lints (#64766)
Very nice addition to sdmm.
* Fixes issues found by new switch lints
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
* Adds new food tag and felinid taste preference modification. (#64841)
I have chosen to give one of the fruits we have in-game to have its own unique food tag while still maintaining its current fruit tag, we can modify this later for things involving scurvy and such.
image
* Adds new food tag and felinid taste preference modification.
Co-authored-by: carshalash <carshalash@gmail.com>
* Da clownana update! Clownana rework, global hOnKeRbLaSt & monkey synergy. (#63899)
Since maintainer have expressed dissatisfaction with the state of clownanans, i've taken it upon myself to not only reduce their lag generation potential but to also make them more interesting.
All simplemob clowns now:
Are able to speak and understand the monkey language.
Are able to hit banana bunches to initiate the explosive ripening process.
The changes to clownananas speciecially are as follow;
Clownanas are able to rustle every 10 seconds to spawn 3 peels.
Clownanas have a speed of -1 rather than -10.
Clownanas gain the ability to spawn a banana bunch every minute.
Banana bunches are food items imbued with extra banana juice and monkey energy.
Hitting a banana bunch as a simplemob clown causes a honkerblast after a 3 seconds delay.
I've implemented a global honkerblast proc for future use, the honkerblast effects are similiar and inspired by the mech weapon, but less severe at light intensity and more severe at high intensity.
Maintainers are unhappy with the current state of the mob (It spawned enough bananas which never went away that when swept up into one place over 30 minutes, walking over the pile would cause minute long server freezes), and while the mob is popular and enjoyed by many players it is currently quite poorly designed and implemented by a novice coder.
These changes increase the strategic depth of playing this particular mob and rewards more active input from the player.
Co-authored-by: Seth Scherer <supernovaa41@ gmx.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Da clownana update! Clownana rework, global hOnKeRbLaSt & monkey synergy.
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
Co-authored-by: Seth Scherer <supernovaa41@ gmx.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Actually fixes strange mob delays: BEEPSKY IS TOO FAST edition (#64351)
* Revert " Properly speeds up a lot of things, mostly mobs (#64270)"
This reverts commit a836574388.
THE BYOND REF WAS A LIE, THE PLAYERS ARE FOOLS, HELP, HELPPPPPPP
It turns out that despite what the byond ref says, the walk proc's delays were not in fact in ticks, but in deciseconds.
This means when I "fixed" mob movement by doubling all walk delays, what I actually did was double the speed of anything that used walk()
I have a feeling that the actual issue players were seeing was just move_to having fucked up distance logic, and the movement of slow mobs being smoothed out. I've changed that, so hopefully this puts a seal on the whole problem
I've had a request put in to make beepsky faster, but I think that's best done in a seperate pr
* Adds a flag to disable smooth moveloop movement
Applies it to hostile mob's Goto()
Backports the fixes to move_to and move_away from the previous pr
* Actually fixes strange mob delays: BEEPSKY IS TOO FAST edition
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Semkis and Pistachios! Come get your snacks + Snack Items Name Fixes (#64276)
Snack time
* Semkis and Pistachios! Come get your snacks + Snack Items Name Fixes
* Fix (#10960)
Co-authored-by: ErdinyoBarboza <erdinyobarboza@gmail.com>
* Properly speeds up a lot of things, mostly mobs (#64270)
When I made my move loop changes (815bb8a) 62567, I converted a few walk() procs to
the new system
What I didn't know when I did that conversion is that walk() operates on ticks, when move loops operate on
deciseconds
So when I converted say, mob movement over, I accidentially halved the attack movespeed of all of our mobs
This resolves that, alongside a few other misteps
Of note: There are old comments implying that walk()'s delay is not actually linear, or simply as the reference says "in ticks"
I don't have a good idea of how fast things actually should be though, which makes this tricky
In light of this, I've decreased the move speed of legion slightly, in hopes that it will feel more "normal"
I've also fixed a bug with move_to and move_away, they were treating their distance parameters as move to this and one more, rather then move to this. This lead to mobs attempting to overlap with your sprite. s cringe, and also fixed
* Properly speeds up a lot of things, mostly mobs
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Gives a bunch of table sized and/or shaped things (#63964)
You can't reach over/around/through a whole bunch of objects that look small enough/low enough to imply that you can. This grants people the ability to do so.
Hydroponics trays look roughly table sized and shaped and you can't reach past them, which is irritating. Now you can, which is not.
Ditto for crates, the cooking grill, and the chaplain's altar.
Plumbing input/output/dev/null machines and chemical heaters take up maybe 1/4 of the turf and block attempts to reach past them. Being able to is less irritating.
* Gives a bunch of table sized and/or shaped things `LETPASSTHROW`
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* (Finally) Fixes dirt piles being able to hold double expected capactity of reagents. (#63532)
* (Finally) Fixes dirt piles being able to hold double expected capactity of reagents.
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes typos in span, other html elements (#63510)
Atomizes a much larger PR for another time...
There are typos in span and other html messages that causes them to not render correctly or at all.
Bug fixes
Converts those instances of span to use the macro
* Fixes typos in span, other html elements
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
* Fixes hydroponics tray icon on spading / changing seeds (#62900)
Fixes#62893
Updates the appearance of a tray after a new seed is set. I didn't include an update_icon argument since I feel that changing the seed should always change the icon, but I can if it's needed.
Why It's Good For The Game
Makes plants you destroy actually go away.
Changelog
cl Melbert
fix: Spading plants correctly updates the tray icon again
/cl
* Fixes hydroponics tray icon on spading / changing seeds
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Spades can now dig up botany soil plots on right click (#62957)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Spades can now dig up botany soil plots on right click
Co-authored-by: Bond <58570888+TheBonded@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Hydroponics Tray USB Port (plus a tiny refactor needed to fit it in) (#62652)
Adds a USB port to constructable hydroponic trays. I had to refactor some hydro tray code, which is kinda old, to fit the USB circuit and the new signals in.
* Hydroponics Tray USB Port (plus a tiny refactor needed to fit it in)
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* removes double spaces before symbols (#62397)
This can apparently cause some bugs on occasions, so I thought I might as well try to kill them all.
* removes double spaces before symbols
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Hydroponics basins use a setter when toggling auto-grow to reduce copy+paste (#62224)
* Hydroponics basins use a setter when toggling auto-grow to reduce copy+paste
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* cutting logs with a hatchet no longer produces runtimes by merging qdeleted stacks (#62060)
Runtime in stack.dm, 452: Stack merge attempted on qdeleted target stack.
it edits four lines instead of one because I removed them at first, then was too lazy to copypaste it from the code back in, and so hand typed it, and my propensity for adding spaces shone through
* cutting logs with a hatchet no longer produces runtimes by merging qdeleted stacks
Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
* Delete seeds whenever a plant is deletes, delete plant genes when a seed is deleted, + refactor various gene adding / deleting (#61747)
* Delete seeds whenever a plant is deletes, delete plant genes when a seed is deleted, + refactor various gene adding / deleting
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* tgui Preferences Menu + total rewrite of the preferences backend
* nah, we dont need to ping those people
* trying to remove the funny stuff
* unmodularizing this
* prefs reset
* this may need to be reverted, who knows
* okay, this part
* perhaps
* EEEEEEEEE
* unsanitary
* E
* Stage 1 + loadout system
* more fixes
* E
* I mean, it launches?
* More fixes and reorganisation
* E
* customisation code is spaget.
* disable ERP prefs
* Update erp_preferences.dm
* Update erp_preferences.dm
* E
* Slowly getting there
* It may be time for help :)
* tri...colors... help
* preferences now pass preferences
* Update dna.dm
* Fuck this man
* missing savefile return, set_species works, removed dumb stuff from updateappearance
* https://github.com/Skyrat-SS13/Skyrat-tg/pull/8199
* https://github.com/Skyrat-SS13/Skyrat-tg/pull/8224
* https://github.com/tgstation/tgstation/pull/61519
* https://github.com/Skyrat-SS13/Skyrat-tg/pull/8278
* e
* le butonAZARAK HELLO
* hhh
* Proper recognition where it's due, MrMelbert!
* EEEE
* examine block
* Better gen hit sounds from whitedream
* final loadout touches, more bug fixes im sure to come
* i said there would be bugfixes
* Update LoadoutManager.js
* Missing preferences in the html menu
* LIVE TESTING PHASE BABY
* Update LoadoutManager.js
* EEE
* LAUNCH TEST FIRE
* Update job.dm
* Update new_player.dm
* 50gb DAY ONE PATCH
* EEE
* Update preferences.dm
* buggle fixes
* Update examine.dm
* >LOOC starts on
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* large refactor of machine/power code to cut down on processing time and wasted lists (#60317)
original pr here: #59789 (Closed because he didn't think it was good enough)
came back to this because i realized that
all machines were area sensitive, meaning they had a list with at least a reference to themselves (assuming they arent in the contents of another movable which most arent) for the purposes of handling power differences when their area changes
pipes are machines
there are ~14k machines and ~6k pipes
i made this problem worse with a recent pr by making it a nested list
so i needed to track what machines needed power, and this pr had work already done that could be used for that purpose. now machines that have use_power == NO_POWER_USE do not have this extra memory overhead for no reason
currently every machine that uses power draws that amount from its area from a dynamic channel via auto_use_power() which is called every SSmachines fire(), then in apc/process() the area's dynamic power draw is reset and the power is used. with static power its not calculated then reset every loop, its just taken from the grid. so now machines handle updating their static power usage from their current area (this doesnt touch power machines that require a wire connection). in order to allow this, use_power, idle_power_usage, and active_power_usage have setters to track state correctly and update the static power usage on the machines current area and handle area sensitivity.
also goes through a lot of heavy abusers of SSmachine processing time and tries to make it faster. makes airalarm/process() into a signal handler for COMSIG_TURF_EXPOSE since air alarms only need to process for changes.
Why It's Good For The Game
SSmachines isnt the heaviest hitter in terms of total cpu and certainly not in terms of overtime, but its not a lightweight. it frequently takes > 50ms to complete a run and seems to be in the top 5 or so of subsystem costs looking at some round profilers
also gets rid of a few thousand lists since every pipe no longer has two useless lists each (and any other machines that dont use power)
Love ya kyler
Co-authored-by: Rohesie <rohesie@ gmail.com>
* large refactor of machine/power code to cut down on processing time and wasted lists
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Rohesie <rohesie@ gmail.com>
* Refactors connect_loc_behalf into a component (#60678)
See title. Also refactors caltrops into a component because they use connect_loc_behalf which requires them to hold the state.
This also fixes COMPONENT_DUPE_SELECTIVE from just outright not working.
connect_loc_behalf doesn't make sense as an element because it tries to hold states. There is also no way to maintain current behaviour and not have the states that it needs.
Due to the fact that it tries to hold states, it means the code itself is a lot more buggy because it's a lot harder to successfully manage these states without runtimes or bugs.
On metastation, there is only 2519 connect_loc_behalf components at roundstart. MrStonedOne has told me that datums take up this much space:
image
If we do the (oversimplified) math, there are only ever 5 variables that'll likely be changed on most connect_loc_behalf components at runtime:
connections,
tracked,
signal_atom,
parent,
signal_procs
This means that on metastation at roundstart, we take up this amount: (24 + 16 * 5) * 2519 = 261.97600 kilobytes
This is not really significant and the benefits of moving this to a component greatly outweighs the memory cost.
(Basically the memory cost is outweighed by the maint cost of tracking down issues with the thing. It's too buggy to be viable longterm basically)
* Update glass.dm
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Del The World: Unit testing for hard deletes (#59612)
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>
* Del The World: Unit testing for hard deletes
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>