* sstimer no longer batches maintenance tasks to the bucket list to avoid edge cases and duplicated logic. (#55140)
* sstimer no longer delays maintenance tasks if its going over its tick.
This was leading to bugs if certain state operations happened while a task was delayed, furthermore if the timer subsystem was overloaded, the invoked timers list would bloat as it would never get cleared out, which would make all timer invocations take longer as they had to add to an ever growing list.
* Update timer.dm
* Fix error when a bucket has only one timer.
* simply timer loop logic & improve timer debug string
It would try to batch up linked list modifications and every issue we have ever had has been related to this, so now it just directly pulls the head of the linked list off, using bucketEject, rather then detect when it reaches the end of the linked list queue it will now just know because the bucket will be empty.
All bucketCount logic has been moved to bucketEject and bucketJoin(), which should also keep that more proper.
* Update timer.dm
* Update timer.dm
* sstimer no longer batches maintenance tasks to the bucket list to avoid edge cases and duplicated logic.
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Remove the hyphen from the default value of the github url string (no longer -tg-station) (#55136)
* Remove the hyphen from the default value of the github url string (no longer -tg-station)
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
* Fixes and a little cleanup.
* False by default.
* Apply suggestions from code review
Co-authored-by: Azarak <azarak10@gmail.com>
* Modularization and comments.
* #include
Co-authored-by: Azarak <azarak10@gmail.com>
* Fix client time timers duplicating if any client time timer caused a stack overflow. (#54977)
* Fix client time timers duplicating if any client time timer caused a stack overflow.
* Fix client time timers duplicating if any client time timer caused a stack overflow.
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* [TM Candidate] Fix a number of atmos-related runtimes through pipeline and SSair tweaks. (#54804)
* Feex
* Moar feex
* [TM Candidate] Fix a number of atmos-related runtimes through pipeline and SSair tweaks.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Performance Logging no longer produces broken csv files (#54894)
Also better file names so it's easier to mass scrape them.
* Performance Logging no longer produces broken csv files
Co-authored-by: Rob Bailey <actioninja@gmail.com>
* Fix erroneous logging of config errors for str_list configuration type (#54676)
Fixed issue brought up by @ Cyberboss wherein the new ``str_list`` config type doesn't properly return true after setting the values and as a result has an erroneous error pop up in the config error log.
* Fix erroneous logging of config errors for str_list configuration type
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
* performance logging (#54809)
Dumps a bunch of perf info to a csv every 10 seconds.
Currently this info is only stored in blackbox where it's effectively useless.
csv is a very easy to parse format and is natively supported by a lot of data analysis tools
* performance logging
Co-authored-by: Rob Bailey <actioninja@gmail.com>
* Turns transparency for turfs into an element, and gives it to datum materials. (#54250)
* Turns transparency for turfs into an element, and gives it to datum materials.
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Initialize and LateInitialize runs correctly at round start (#54594)
I've been pulling my hair out on this one. Ever since I started my ntnet project, I could never get LateInitalize to work right. Apparently it has never worked right. How it was set up before on server start
Station map loads, Does NOT run Initialize(mapload = TRUE)
Generates space, lavaland/icebox ruins
Loads a ruin, DOES run Initialize(mapload = TRUE) EXCEPT on areas
End of mapping system
Atom system Initialized and it checks and runs Initialize(mapload = TRUE) on world
You see the issue? Initialize and by extension LateInitialize is run in blocks. Worst, LateInitialize is run on turfs FIRST in ruins BEFORE Initialize is ever run on the other atoms. While there isn't much in Area, there is map_generator so I am sure it caused some grief for map creators.
The NEW order now is
Station map loads, Does NOT run Initialize(mapload = TRUE)
Generates space, lavaland/icebox ruins
Loads a ruin, Does NOT run Initialize(mapload = TRUE)
End of mapping system
Atom system Initialized and it checks and runs Initialize(mapload = TRUE) on world
Also if you dynamicly load a map, like snowdin or such, it will Initialize all atoms at once and then run LateInitialize properly
* Initialize and LateInitialize runs correctly at round start
Co-authored-by: WarlockD <warlockd@gmail.com>
* SSeconomy/var/bank_accounts is now an association list of account identifiers and datums for O(1) performance (#54430)
Title. Also added some precautions to bank_account/new() and the crab17 gear.
The fact the majority of functions pertinent to the bank_accounts list was O(n) disquieted me.
* SSeconomy/var/bank_accounts is now an association list of account identifiers and datums for O(1) performance
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Converts A && A.B into A?.B (#54342)
Implements the ?. operator, replacing code like A && A.B with A?.B
BYOND Ref:
When reading A?.B, it's equivalent to A && A.B except that A is only evaluated once, even if it's a complex expression like a proc call.
* Converts all A && A.B into A?.B
Co-authored-by: ZeWaka <zewakagamer@gmail.com>
* Adds a living time config to the panic bunker (#54341)
* Adds a living time value to the panic bunker, so you can keep people out based on time spent playing the game
* updates the admin verb, and enables %minutes% as an option
* Makes a proc call more clear
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* than
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Adds a living time config to the panic bunker
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Temporal Scarring is now per-character-slot, changelings now fake scars when disguising (#54311)
* Temporal Scarring is now per-character-slot, changelings now fake scars when disguising
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Adds Alloy Materials (#53623)
Adds and implements alloy materials
Takes several materials that were mostly fluff and converts them into actual usable materials.
Messes with material code a bit to make alloys recycle back into their component materials.
Adds the alloy materials to their in-game stacks.
Materials added:
Plasteel
Plastitanium
Plasmaglass
Titaniumglass
Plastitanium Glass
Alien Alloy
Makes plasteel/plastitanium/plasmaglass and the rest able to have separate properties from their component materials. It doesn't make much sense that the materials used to seal off the supermatter chamber from the rest of the station would be prone to exploding when heated.
Allows for further expansion of materials, possibly including actual functional metallurgy and smelting at some point in the very distant future.
(Lemons note: Adds a regeneration component, used for alien alloy)
* Adds Alloy Materials
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Mice properly spawn in maintenance during the migration event. (#54243)
fix: Mice properly spawn during the mouse migration event.
Fixes#54242 .
* Mice properly spawn in maintenance during the migration event.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Fix shuttle loader (#54200)
Set mode = SHUTTLE_PREARRIVAL to shuttle that initially placed to transit docking port.
No more SSshuttles delete transit for half loaded shuttle
Fix#54232
* Fix shuttle loader big shuttle load issues.
Co-authored-by: Dennok <Deneles@yandex.ru>
* Cleans up rat related features and makes Regal Ratking a rare spawn from mouse migration event. (#54191)
* Cleans up rat related features and makes Regal Ratking a rare spawn from mouse migration event.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Some shuttes rework. Allow many shuttles of one template to work at the same time. (#53993)
* add replace button to shuttle panel
load button now only load new shuttle
* shuttle teplate loads as shuttle
* new shuttle console connects to shuttle
* new navigation computer connect to shurrle
* docking_port id now unique
add count to id if id already in work
* many docks from one base tenplate
* up
* fix unregister
* up
* up
* up
* block multiple shuttle loading
* return preview button
* up id generation
* Some shuttes rework. Allow many shuttles of one template to work at the same time.
Co-authored-by: Dennok <Deneles@yandex.ru>
* Restyles Stat Panel, Adds Subpanel Sub-Categories (#53947)
I re-styled the CSS for the stat panel in hopes to make it look nice, and I also added the ability to use sub-categories (currently a single level) of verbs using a . (period), an example being Admin.Fun instead of the previous Admin - Fun. This now results in a sub-category being automagically generated in the stat panel.
* Restyles Stat Panel, Adds Subpanel Sub-Categories
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
* Cross server evacuation messages now include the evacuation reason (#53980)
Co-authored-by: Bobbahbrown <bobbahbrown@ gmail.com>
* Cross server evacuation messages now include the evacuation reason
Co-authored-by: Hulkamania <39933245+JetBrody@users.noreply.github.com>
Co-authored-by: Bobbahbrown <bobbahbrown@ gmail.com>
* Enforce preserving parent proc return values across ui_act call stacks (#53964)
All ui_act procs should call parent by default. All procs should preserve the value of the parent proc when it's TRUTHY and pass it down the call stack. No UI should be interactible when its flags or state indicate it should not be, except when explicity overriden by child procs intentionally disregarding parent return values to achieve a specific goal.
* Enforce preserving parent proc return values across ui_act call stacks
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Emergency Shuttle Toggle (#53912)
Admins now have the option to enable or disable the shuttle(located in the admin tab).
Disabling the shuttle will basically pause it where it is, regardless(unless game is over). Until the admins enable it again. It will resume exactly back to where it was and continue from there. This is great for events. You can't recall or call the shuttle while it's disabled.
Admins also now get the option when calling the shuttle to disable the recall of said shuttle unless they cancel it or select enable shuttle.
* Emergency Shuttle Toggle
Co-authored-by: Gandalf <jzo123@hotmail.com>
* improve performance of vis_overlays by handling dir by using vis_flags (#53816)
vis dir changes are now handled by vis_flags
* improve performance of vis_overlays by handling dir by using vis_flags
Co-authored-by: Couls <coul422@gmail.com>
* Fixes scars sticking around after a limb is dismembered (#53763)
During dismemberment from wounds, some scars would stick around even though the limb was no longer attached to the person. This was because I removed the scars from the person before removing the wounds, which itself would create more scars that would still be tied to the victim's scars. This fixes that, and tidies up some related code as well. Notably, you can now see which types of wounds a detached limb is suffering from by sight. Also, I have no clue what happened before when you attached a limb with existing wounds to someone, but I've made sure it applies the wounds to the person where they left off.
I also realized I made an order of operations error in the self-treatment for broken bones (with the bone gel and surgical tape) on the bone gel step, which made failing these treatments and briefly passing out/wasting a use of the gel 38 percentage points more likely than intended. This corrects that, so the base is 25%/45% failure for severe/critical blunt wounds. It also raises the bonuses to succeeding you get from painkillers a bit since you're going through a lot of trouble for all this already.
* Fixes scars sticking around after a limb is dismembered
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Custom statues and sculpting changes. (#53154)
### Gameplay changes:
- Spacemen lose their ability to sculpt all minerals into statues barehanded, you need a chisel now.
- You can now create carving blocks out of 5 sheets of most materials.
- Using a chisel on the blocks you can designate what to carve in it (including the preset statues from before).
- Chisels can be printed at autolathe, there's also one in art storage.
### Code changes:
- Squeak component now squeaks on attack_hand for structures.
- Radials now accept atom paths automatically extracting the name with initial.
- Base and rigid stack recipes renamed appropriately.
- Statues now use custom materials.
* Custom statues and sculpting changes.
Co-authored-by: AnturK <AnturK@users.noreply.github.com>