* Standardizes attack chain signal returns and fixes a tk bug (#54475)
The attack chain is a bit of a mess, and the introduction of signals hasn't helped in simplifying it.
In order to take a step into untangling this, I re-ordered the attack signals to no longer be by source type and instead to be grouped more modularly, as they are all members of the attack chain and function similarly. They all share the trait of potentially ending the attack chain via a return, but had several different names for it. I joined it into one.
Additionally, fixed a tk bug reported by @ Timberpoes by adding a signal return check at the base of /mob/proc/RangedAttack
Lastly, removed the async call of /datum/mutation/human/telekinesis/proc/on_ranged_attack, which was added as a lazy patch to appease the linter complaining about a sleep on a signal handler (namely in /obj/singularity/attack_tk). Fixed the problem using timers.
Also cleaned some code here and there.
* Standardizes attack chain signal returns and fixes a tk bug
Co-authored-by: Rohesie <rohesie@gmail.com>
* Implements timed_action_flags for do_after-like procs (#54409)
Originally I wanted to fix an issue where the `get_up()` `do_after()` would ignore the callback checks, because it was `uninterruptible`, so that made me refactor these procs to allow for higher granularity on checks and standardize behavior a bit more.
There's more work to be done for them, but one thing at a time.
* Removes the `uninterruptible` check in favor of the more granular `timed_action_flags`
* Cleans code on the `do_atom`, `do_after_mob`, `do_mob` and `do_after` procs to standardize them a little better.
* Implements timed_action_flags for do_after-like procs
* Update horror_form.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.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>
* Chess, Sofas & Shutters - Furniture Update (#53861)
About The Pull Request
A series of changes bulked together to give players and mappers a little more freedom in their builds to make things look nicer.
Chess:
• Introduces a bunch of jumbo chess pieces that are craftable in-game. Sprites are my own.
Shutters
• Defines 100 integrity for the shutters and gives them an armor block so they don't inherit their stats from blast doors. This means shutters will no longer be just a reskinned blast door.
• Redid the sprites for the shutters. They now animate much smoother and look like normal slanted shutters. Their blinking light once animating is also easier to see.
• Added the window shutter; this is a normal shutter with a window so you can always see past it. I've used it in prisons and on armouries in the codebase I'm from to allow officers to see into the areas shutters are protecting, giving the area additional protection of having someone being able to look into it.
• Added radiation shutters. Maintainers feel free to question this. Through extensive experimentation, any rad insulation value between 0 and 1 does pretty much nothing to radiation. Numbers higher than 1 start multiplying it, negative numbers start reducing it. This will stop the radiation from a supermatter irradiating you only if you stand behind it. If you're not covered by the shutters or the shutters are open, they won't protect you at all. They also have their own sprite with a radioactive hazard symbol.
• Added the rad shutters to in-rotation maps on their supermatter engines and the windowed shutters to Metastation armoury.
Sofas
• Introduces the corporate sofa. A sleek grey sofa. The original sprite I ported from Hyperstation's files. I'm not sure where they got the sofa but I was told it was Eris. I didn't see it there but I didn't look super hard. I've updated the sprites on it to work with armrest sprite overlays.
• Ports the sofa sprites from Cit and the armrest sprite overlays. They look nicer than awkwardly floating over the sofa. The sofas are the same, they're just moved a little for the armrest to work.
• Makes the new corporate sofa craftable.
* Chess, Sofas & Shutters - Furniture Update
Co-authored-by: KathrinBailey <53862927+KathrinBailey@users.noreply.github.com>
* You can buckle yourself or somebody else into a chair, if you're next to the chair. (#53255)
You can now buckle yourself, as well as others, into a chair as long as you (and the other person, if you're not buckling yourself) are Adjacent to said chair, and being on the same tile as the chair is no longer required.
No more god-awful pixelhunt to accomplish a very simple task.
(You can buckle yourself and others into chairs that you're right next to, instead of needing to be on top of the chair to do it.)
* You can buckle yourself or somebody else into a chair, if you're next to the chair.
Co-authored-by: uomo <51800976+uomo91@users.noreply.github.com>
Replaces like 70-80% of 0 and such, as a side effect cleaned up a bunch of returns
Edit: Most left out ones are in mecha which should be done in mecha refactor already
Oh my look how clean it is
Co-authored-by: TiviPlus <TiviPlus>
Co-authored-by: Couls <coul422@gmail.com>
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: Couls <coul422@gmail.com>
* Merge pull request #53020 from Qustinnus/fatgrowing
[READY] Vatgrowing: Third time's the charm
* [READY] Vatgrowing: Third time's the charm
Co-authored-by: 81Denton <32391752+81Denton@users.noreply.github.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>
* Consistency for station pets. (#52717)
* Station pets!
* Makes Lia and Sgt Araneus actual subtypes.
* Fixes some vars.
* Turns on AI for Cayenne and Lia, makes Lia neutral faction.
* Gives Lamarr a description.
* Pettable status and emotes for HoS and syndicate pet..
* Tom the mouse consistency.
* Comment correction.
* Consistency for station pets.
Co-authored-by: uomo <51800976+uomo91@users.noreply.github.com>
* 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
Fixes the right wooden pew end name
Why It's Good For The Game
discrepancy detected
Changelog
cl
fix: right pews are no longer left pews.
/cl
* Initial Commit, Plastic Boxes and Soda Rings. Basic carp interaction.
* Beads, trash created from breaking plastic, carp eat plastic properly.
* Cleans up sprites, adds designs to autolathe, and adds plastic plants
* Icon Conflict more like Ion Comblict because I can't spell
* Oh neat, there's already a party crate. Added Beer/Soda 6packs to the crate, adjusted price accordingly.
* Aaaaaaaaaa runtime loop.
* You win this round travis.
* Makes the in-hand sprite the soda can sprite because honestly it's close enough don't @ me
* Typo.
* Merge conflict, style changes, FINE CARP DON'T BREATHE.
* BEGONE CONFLICT BEGONE FROM ME
* Initial PR, Cups, Utensils, Signs, Chairs
* Endline fixes for travis, adds plastic utensils to the initial node
* Makes bar invisible, addtimer added, fixes potential dmi/dm conflict
* Fixes Merge conflict take 2
* Wraps the chair snapping proc in invoke_async
* Cleans up Async Call a smidge
Gave better color matrices to some materials. Simplified some of the existing matrices down. Gave uranium a standard color since it didn't need a matrix. Made bananium obnoxiously bright. Made gold slightly less bright. Made diamonds somewhat brighter. Made glass actually look like glass, it was almost grey before wtf.
Improved some of the greyscaled sprites used by materials, many of them were too dark and/or straight reused from other things. Some of them weren't even grey come on guys.
I'll add some pics later.
* Nanotrasen fires the Wave Motion Gun at the Clock Cult
* Fixes a random changelog appearing from the reebe void.
* Fixes a wrong type reference regarding the bronze sheets in the Lavaland Ruin for it.
* Fixes redundant cells after CC removal in ruin by populating them with varied ore chunks, or destruction clutter.
* why is it /obj/item/stack/sheet/metal but not /obj/item/stack/sheet/iron
* Fixes the lavaland ratvar ruin to have fluff variant structures of deleted shit it referenced instead what I thought was reasonable.
removes materials list from items, uses custom_materials instead. This might introduce some bugs so we should testmerge this for a while (and Ill test stuff locally as much as I can)
this also adds material crafting to sheets. Test case being chairs. In the future we can add stuff like tables, walls, doors etc.
also applies materials to everything, with fixes, which can close#46299
* Reverts italics-span back to no color.
* Cleans up many extra spaces and indents.
* Adds 'hear' span class.
* Replaces all 'italics' used in heard messages with 'hear'.
About The Pull Request
Converts every single usage of playsound's vary parameter to use the boolean define instead of 1 or 0. I'm tired of people copypasting the incorrect usage.
Also changes a couple of places where a list was picked from instead of using get_sfx internal calls
This was done via regex:
(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\)) to match 1
(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\)) to match 0
full sed commands:
/(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\))/\1TRUE\2/ 1 to TRUE
/(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\))/\1FALSE\2/ 0 to FALSE
I'm not very good with regex and these could probably be optimized, but they worked.
Why It's Good For The Game
Code usability
About The Pull Request
Adds 'notice' span class to all visible_messages which had no span class, making all those black messages blue.
Why It's Good For The Game
This should help differentiate action-messages from talking-messages in the chat. More actions will be blue, thus black talking-messages should pop out more.
About The Pull Request
Adds two new mime spells to the game. Both work like the invisible wall, i.e. they spawn an invisible item for a limited amount of time:
Invisible Chair: Summons a chair and has the mime sit in it. Perfect for crowded shuttles or staying put.
Invisible Box: Everyone's favorite stock mime routine! The mime summons a box (invisible to everyone but him, although you do get the message once spawned) that can store small items. When it disappears, the items are dropped.
To prevent massively overpowered mimes, the mime gets a spellbook at roundstart from which he can choose only one out of the three mime spells.
Why It's Good For The Game
The mime doesn't get nearly as much cool stuff as the clown, and these are pretty common pantomime routines to riff off.
Changelog
cl
add: After receiving many complaints about mimes who never pantomime, Nanotrasen has liquidated its mime personnel and hired new mimes who know more routines.
add: The mime gets the choice of two new spells: Invisible Chair and Invisible Box. They work much like the Invisible Wall spell does and disappear after a short span of time. The invisible chair can be buckled to like usual chairs; the box works like a standard inventory box item.
tweak: Mime spells are now granted via a spellbook that starts out in the mime's inventory. Mimes can choose one of these three.
/cl
* 1/4 done? maybe?
* more
* stuff
* incremental stuff
* stuff
* stuff & things
* mostly done but not yet
* stuffing
* stuffing 2: electric boogaloo
* Git Commit and the Kingdom of the Crystal Skull
* make it actually compile
* found more stuff
* fixes
* fix AI laws appearing out of order
* fix windows
* should be the remaining stuff
* this time for real
* i guess it should compile too
* fix sechuds
Changelog
cl
fix: Buckle objects can now properly specify lying angle
fix: Wheelchairs and other such vehicles let you use UIs even if your legs don't work
fix: You can now pull objects while in a wheelchair even if your legs don't work
fix: You no longer have a chance of sleeping upside down in a bed
tweak: No longer randomises lying direction a second time on fall
/cl
code: simplified can_stand code
fixes#41703
* Adds wooden chapel pews
This adds wooden chapel pews to the game. They function much like ratty couches, in that there are several different pieces which can be mixed and matched to make different length pews. They can be built from 3 wooden sheets.
The change to sheet_types.dm adds the pew crafting recipies to the end of the wood sheets crafting list.
The added file pew.dm is the code which makes the pews work.
The added file pew.dmi is the sprites for the pews, including the overlays for the armrests.
the change to tgstation.dme is a single line which includes pew.dm.
This is my first PR ever, so please let me know if I made any mistakes in approved process.
* merged pew.dmi into sofa.dmi
As per the instructions of several commenters, I merged pew.dmi into sofa.dmi. pew.dm has been updated to reflect this.
Aiming to implement the framework oranges has detailed in https://tgstation13.org/phpBB/viewtopic.php?f=10&t=19102
Moves canmove to a bitflag in a new variable called mobility_flags, that will allow finer grain control of what someone can do codewise, for example, letting them move but not stand up, or stand up but not move.
Adds Immobilize()d status effect that freezes movement but does not prevent anything else.
Adds Paralyze()d which is oldstun "You can't do anything at all and knock down).
Stun() will now prevent any item/UI usage and movement (which is similar to before).
Knockdown() will now only knockdown without preventing item usage/movement.
People knocked down will be able to crawl at softcrit-speeds
Refactors some /mob variables and procs to /mob/living.
update_canmove() refactored to update_mobility() and will handle mobility_flags instead of the removed canmove
cl
rscadd: Crawling is now possible if you are down but not stunned. Obviously, you will be slower.
/cl
Refactors are done. I'd rather get this merged faster than try to fine tune stuff like slips. The most obvious gameplay effect this pr has will be crawling, and I believe I made tiny tweaks but I can't find it Anything I missed or weird behavior should be reported.
* Revert "fixes them not showing up"
This reverts commit 8ffe48a336.
* Revert "Credits the original author + moves shuttle chairs to goon/icons" while keeping goon shuttle chair dmi
This reverts commit 82694bcf3b while keeping goon shuttle chair dmi.
* Revert "ports shuttle chairs from ftl"
This reverts commit 3eb3f741ad, reversing
changes made to bc272c89fa.
* New shuttle chair sprites by Ausops
* Deletes goon shuttle chair dmi
* adds signal and modifies each call of afterattack to call it's inherited proc
* uses new macro for sendsignal()
* map fuck
* skip precommithooks
* combine and negate 2 ifs