* Adds Neon Carpet (#59140)
Adds a couple varieties of neon carpet.
Makes decals care about their plane in addition to their layer.
* 0
* A
* a
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* fixes bug with holodecks referencing self deleting atoms in spawned (#59355)
decals were hard deleting whenever you loaded a holodeck program with them because it wasnt taking them out of the spawned list, now it does that. also goes around holodeck code and changes for loops to as anything and puts in better var names.
also since its been a while since i looked at holodeck code, the thing could really use a better rewrite one of these days.
* fixes bug with holodecks referencing self deleting atoms in spawned
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* use SIGNAL_HANDLER REEEEEE (#59242)
makes as many procs as i can find use the SIGNAL_HANDLER define which i assumed they all already did
* USE SIGNAL_HANDLER REEEEEE
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Kills BOTH /poison paths by turning poisonous into an element. (+fantasty prefix, sanity on attackingtarget signal, and more) (#58882)
* Kills BOTH /poison paths by turning poisonous into an element. (+fantasty prefix, sanity on attackingtarget signal, and more)
* AAAAAAAA
* Update spellbook.dm
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Adds proper logging to Holodeck safeties and programs (#58149)
* Adds proper logging to Holodeck safeties and programs
* a more elegant solution
* Adds proper logging to Holodeck safeties and programs
Co-authored-by: TheVekter <TheVekter@users.noreply.github.com>
* makes holodeck books a holo_effect so they get added to the spawned list (#57909)
* Fixes books spawned in the holodeck not disappearing when programs are changed
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Fixes bug with atoms (including new players!!!!) not spawned from the holodeck being deleted by it if they happened to be initialized at the same time (#57510)
About The Pull Request
Fixes#57446
yeah not my best moment, holodeck currently sets SSatoms to add every call to InitAtom() to a list and then give it back to the holodeck console (it actually goes through map_template/holodeck to do it but whatever). However it turns out atom/New() calls InitAtom too, so if an atom is created while SSatoms is still creating the list to give to the holodeck then that atom is added to the list regardless of whether or not its actually from the holodeck template.
Now theres an extra argument to InitAtom that tells it whether its spawned directly from a map template (ie, its part of the input list of uninitialized atoms that InitializeAtoms was given) or otherwise the output list that the holodeck uses is populated by calling GetAllContents on all atom/movables spawned directly from the template.
also renamed some vars in initTemplateBounds because it was hard to reason what it was doing and made it use as anything
also note that loading a map template with returns_created_atoms = TRUE will no longer track atoms that arent in the map file but are spawned directly onto a turf, currently nothing does this with the holodeck (which is the only map template that has this feature)
by the way this bug is my fault
Why It's Good For The Game
incredibly incredibly unlucky new players dont deserve to be deleted just because they didnt spawn in the holodeck
Changelog
🆑
fix: the holodeck is no longer so powerful that it can destroy anything and everything that dares to start existing while it's busy loading programs
/🆑
* Fixes bug with atoms (including new players!!!!) not spawned from the holodeck being deleted by it if they happened to be initialized at the same time
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* All Holobugs Must Die the Same Day Theyre Born or You Are Money Back Part Two (#56878)
runtime in holodeck/finish_spawn() that dealt with doing shit with the atoms in the spawned list, which in some cases cease to exist. now finish_spawn has a check to see if the entry in the spawned list actually exists.
also fixes another small issue with the holodeck process() continually trying to load the offline program and getting rejected which causes the holodeck to give the "ERROR. Recalibrating projection apparatus." message, which it no longer does if the program is forced.
* All Holobugs Must Die the Same Day Theyre Born or You Are Money Back Part Two
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Turbo fix for holodecks not clearing previous programs under live server lag (#56566)
Fixes#56561
the holodeck control console now returns if the previous program still has not finished loading in, so it should now be impossible to have two concurrent load_program() processes running at the same time and thus programs should not overlap under lag. tested locally with around 80% time dilation and 0 holodeck cooldown while spamming the fuck out of loading simulations
* Turbo fix for holodecks not clearing previous programs under live server lag
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* see title (#56536)
* Removes Holodeck Access Flags Feature That Shouldnt Have Been in My Previous Refactor
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Refactors Holodeck to Use Map Templates, Again! Black Magic OOM Crashing No Longer Included (#55645)
Refactors the holodeck to use map templates instead of copy_contents_to, which every maintainer seems to have complaints about.
Fixes#41485 because the matches become part of the spawned list created by ssatoms
Fixes#54789 because the holodeck area no longer has the NO_TELEPORT flag
Fixes#55676 because the map templates cant be changed midround unlike the program copies in the centcom z level
Fixes#49318 because the holodeck no longer creates new areas like the original did
This pr also changes initTemplateBounds to be a /datum/map_template proc instead of a parsed_map proc. This was mainly so I wouldn't have to duplicate vars between map_template and parsed_map. It's also nice because there's no longer a parsed_map proc inside the map_template file, especially when it didn't need to be a parsed_map proc.
The holodeck sims wont take up space in the centcom z level any more (which allows for more possible programs in the future), and map templates are more heavily tested. This is also a chance to future proof the holodeck against bugs. Holodeck also seems more responsive. This should allow for a second custom holodeck in some future ruin as well, although that of course will not be in play for the near future because of the offstation content ban. Also I documented the fuck out of the holodeck
* Refactors Holodeck to Use Map Templates, Again! Black Magic OOM Crashing No Longer Included
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Moves screen objects from mob to hud (#54400)
This moves screen images from icons/mob to icons/hud
Makes more sense and it is easier to find
* Moves screen objects from mob to hud
* Update radial.dm
Co-authored-by: nicbn <nicolas.nattis@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* Converts some unique and typelists into stringlists (#54237)
* Converts some unique and typelists into stringlists
Co-authored-by: Rohesie <rohesie@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>
* Adds rollerskates, wheely can do tricks (#53497)
This turns wheelys into a skateboard subtype so they are no longer a copy paste of old skateboard code. They have lower stability compared to skateboards.
I've also made a whole bunch of small adjustments in the process to make skateboard code cleaner and more modular, such as turning the improvised skateboard to its own subtype so that construction steps don't need to be overwritten for all subtypes
Adds two subtypes of wheelys:
-Rollerskates: more stable than wheelys but slow you down when the wheels are retracted
-Skishoes: For skiing! Only work on snow, obviously
I wanted to add some fun alternatives to skateboards with their own drawbacks, and the ski shoes were an opportunity to do something fun for icemoon maps
* Adds rollerskates, wheely can do tricks
Co-authored-by: Mickyan <38563876+Mickyan@users.noreply.github.com>
* Process procs now properly utilize deltatime when implementing rates, timers and probabilities (#52981)
* Process procs now properly use deltatime when implementing rates, timers and probabilities
* Review fixes
* Geiger counters cleanup
Made hardsuit geiger code more similar to geiger counter code
Geiger counters are more responsive now
* Moved SS*_DT defines to subsystems.dm
* Rebase fix
* Redefined the SS*_DT defines to use the subsystem wait vars
* Implemented suggested changes by @AnturK
* Commented /datum/proc/process about the deltatime stuff
* Send delta_time as a process parameter instead of the defines
Also DTfied acid_processing
* Dtfied new acid component
* Process procs now properly utilize deltatime when implementing rates, timers and probabilities
Co-authored-by: Donkie <daniel.cf.hultgren@gmail.com>
* adds better grass sprites (#53421)
adds better grass sprites, ported from eris
converts fairygrass into those sprites too
makes "plating" grass and jungle grass smooth with cool stuff on the edges
adds a sandy dirt tile, removes the old "sand" icon which was just puke colored noise
* adds better grass sprites
Co-authored-by: Fikou <piotrbryla@onet.pl>
* 9x10 Holodeck and New Holodeck Simulations (#52793)
9x10 Holodeck and New Holodeck Simulations
* 9x10 Holodeck and New Holodeck Simulations
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Refactors machine_stat and is_processing() to process on demand (#53150)
* Refactors machine_stat and is_processing() to process on demand
* Fixes master (#53193)
* fixes master, damn it me/mothblocks
* fuck again
* ANOTHER ONE
* Fixes master
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes holodeck making invisible tables.
* Removes comment.
* Remove extra space.
* Just gets rid of overlays from forbidden vars list.
* Small map fixes for the lounge sim.
Co-authored-by: uomo <51800976+uomo91@users.noreply.github.com>
* Personalized combat messages part 2 (#52890)
Adds more "personalized" combat messages for all participants in a fight: the attacker, the victim and the spectators
* Personalized combat messages part 2
* Update misc.dm
Co-authored-by: kingofkosmos <riki.sundberg@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Icon smooth refactor (#52864)
bitflag list construct added: an associative list of bitflags for cheap and quick element comparison between two lists using the same system.
canSmoothWith list turned into a bitflag list.
smoothing_groups list added to substitute the type path list.
smoothing procs turned into atom procs, refactored and optimized a bit.
smooth directions redefined in order to fit in 8 bits for a future smoothing system
some variable names changed, foreseeing a second smoothing system
SMOOTH_OBJ flag added, for things that need to scan turfs for smoothing. The old locate() optimization has the risk of returning false negatives by finding a child and returning null while there might be one of the wanted type as well, as it doesn't match the type exactly.
SMOOTH_TRUE and SMOOTH_MORE condensed into SMOOTH_CORNERS. The old behavior can be replicated using smoothing groups without loss.
Does very minor code cleanup.
Processing-wise didn't find a noticeable difference. The system loses on init a bit by setting the bitflag_lists, and by scanning whole turf contents for object smoothing (increasing accuracy), and gains by making less checks per target to smooth, through the same bitflag_lists.
Memory-wise there should be a small improvement, given that on the old system we had 63512 canSmoothWith lists (a few typelists, most unique), and on this new system canSmoothWith + smoothing_groups are both bitflag_lists from the same pool, totaling 46 in number.
Could be tested a bit to see if I missed any icons not properly smoothing.
* Icon smooth refactor
Co-authored-by: Rohesie <rohesie@gmail.com>
* Cleanup up all instances of using var/ definitions in proc parameters. (#52728)
* var/list cleanup
* The rest of the owl
* plushvar bad
* Can't follow my own advice.
* Cleanup up all instances of using var/ definitions in proc parameters.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Renames a few variables. Also reorders fallback order again.
Renames item_state to inhand_icon_state
Renames mob_overlay_icon to worn_icon
Renames mob_overlay_state to worn_icon_state
worn_icon_state/mob_overlay_state now never gets used for inhands.
* Fixes some comments
* Fixes map issue
* Restart lints
* Properly resolves conflicts
About The Pull Request
/area/proc/usage() attempts to give list-like access to a bunch of vars. Why not make it a list instead and avoid all the proc calls? Might be room for followup here, to do something to powered(), use_power() etc.
Some legacy machinery was ignoring the default machinery use_power pulling from the machine's power channel by default
Total power usage was unused, APCs ignored it in favor of calculating it themselves :)
I also renamed the defines because they were in the danger zone of being very common words.
Changelog
cl Naksu
code: optimized area power usage calculations.
/cl
About The Pull Request
Extools maptick stuff is in the game. Stolen from BeeStation/BeeStation-Hornet#1119, improves performance. Requires ex-tools on the server, though.
Explosions have been refactored to do the actual exploding in a subsystem.
Credit to goon.
Here's some videos!
Why It's Good For The Game
Basically instant max-caps now.
We can now give more of a tick over to the sending of map updates
Changelog
cl Goonstation Coders, Beestation, Extools devs
refactor: Explosions have been heavily optimized.
/cl
Living and machine stat vars are pretty different, one uses flags and other number-defines.
This should make some other mass-replacements and searches a bit easier.