* Nukies get two kinds of shared team discounts rather than individual discounts
* Nukies get two kinds of shared team discounts rather than individual discounts
one of three things.
1. They don't use RegisterWithParent or UnregisterFromParent to unregister
and register signals
2. They use callbacks which refer to a source object, which is usually deleted
on transfer, or lost in some manner, or simply makes no sense at all to be
transferred
3. the component was never designed to be transferred at all
TransferComponents gave no shits about any of this and just blindly transferred
all components, if they were actually capable of it or not.
I only noticed this because it was causing chairs to break as they would not register signals
and verbs correctly for rotation after being picked up and then placed down, and a player
reported that issue via ahelp.
Luckily we caught it before the rot got anywhere, only chairs and the shuttle subystem
tend to use this proc (Shuttle uses it on turfs), can you imagine if everything was using
this LMAO
Which is good because it's more dangerous than a loaded gun
I have added a can_transfer var, that is true when a component is valid to
actually transfer, which means the dev has actually thought about what happens when
you take the parent object away and swap it for another and all the crazy that is entailed
by this
I have done my best to audit what components are actually
transferable, but things are basically a hot mess (Thanks @Cyberboss )
The following components required edits:
Forensics:
did not register/deregister the clean_act signal properly, did not checkblood on new parent
Rotation:
did not use RegisterWithParent or UnregisterFromParent, turned out
to not be transferable anyway due to having callbacks that can be
passed in to the parent with unknown sources that we can't feasibly
reuse (i.e if you're transferred from a chair to a bed, your old rotation
call backs are no longer valid). Turns out the use case it was for (just chairs)
didn't need it anyway, so I just made it non valid for transfer.
Wet Floor:
Honestly this one is just a hot mess, it should be a subtype of the slippery
component with the extra wet turf handling.
As it is it basically manages a slippery component on top of it's own extra
functionality, so that's a major code smell.
I added registration/unregistration of the signals, and made it's pretransfer
remove the slippery component and the posttransfer add it back (via update_flags)
Components that seem transferable without issues
mirage_border
orbiter
decal
spill
storage (I hope to earth)
Meant to be part of #42864 , but got a little big so I'll add it to wichever gets merged last.
[Snailcrawl demonstration](https://youtu.be/IL7WFpfRo4c)
PROS
- Gets snailcrawl, wich makes them greatly faster and gives them a lube trail
- Their blood is spacelube
- They get a cool armored nodrop snail shell
- They don't slip
CONS
- Very slow
- Punch is pathetic
- Tttaaalllkkk llliiikkkeee ttthhhiiisss
- Extremely vulnerable to salt
- Can't wear glasses
Adds gastrolisis, wich is pretty much [this](https://www.youtube.com/watch?v=lFbPi8o0OEU) spongebob episode where they slowly turn into snails
You can also get gastrolisis by random_reagent_id, so maintpills and botany
🆑
add: Adds snailpeople as a rare genetics accident.
sprite: Snailshell sprites by nickvr628
/🆑
Snailshell sprites by @nickvr628
Why: It's a silly gimmicky race and it's a rare occurence. Also extremely highly requested for some reason
* New trait: Unstable
* New trait: Unstable (#42904)
* nice.
* They exist to cease.
* "They've got eyes inside my head!"
* frick
* unstable insanity
* Just try taking this bull by the horns. (eyeballs)
* It's a thankless job, and you'll probably die in an explosion. But the pay is pretty good.
* "The best denials are simply that: a beginning and end unchanged, a dream with no memory."
* fixes the dme
* Update negative.dm
* fix footstep sounds from being played while buckled (#42788)
Fixes the crawling sound from being played from moving buckled/mounted mobs.
## Why It's Good For The Game
Apparently I didn't catch the crawling sounds being played from buckled mobs that are moving. Examples include the Janitor on their pimpin' ride or some assistant piggy-backing off of a cyborg.
* Fixes crawling sounds from being played from buckled mobs
* Fix some variables with 'list' in the wrong place
* Merge pull request #42869 from AutomaticFrenzy/patch/list-order
Fix some variables with 'list' in the wrong place
Nobody made a report but I noticed this issue: Downed players being dragged are playing footstep sounds, specifically the bare footstep sounds via their hands from what I noticed.
Fixes (hopefully) footstep sounds from being played from incapacitated mobs that are being moved (via dragging for example). Instead, lying mobs will play a crawling sound when moving.
## Why It's Good For The Game
Footstep sounds shouldn't be played when mobs are being dragged.
Idea and instructions by @Razharas, many thanks.
This PR only implements the framework required to catalog as well as play the sounds. Their to_chat text, and icons (if any) are not included, are to be pushed in a separate PR.
This PR does not remove the old playsound_local system, it is kept for the sake of not necessitating a direct changeover of every single playsound in the code, which will surely cause a lot of merge conflicts. It does however, replace bike horns' and toy nukes' means of playback to this datum, purely as proof of concept.
Playsound_local may remain in the code to support playback of admin-uploaded sounds that do not have an inherent datum. Playsound will likely be renamed to something else in the next PR to reflect its new, more universal function. We will see.
New process for adding sounds:
Create a new datum/outputs subtype.
If you wish, write down some supporting text; this gives further meaning to the sound.
Add multiple sounds to the sounds list, and weight them as you wish. (New)
Add a sound icon if you wish, it defaults to a generic sound circle anyways though.
playsound(/datum/outputs/new_subtype, receiver), and it will deliver, icon, sound, and text to the receiver.
Maintaining implication is that from now on playsound should only be processing datum/outputs
This pr intends to gut to_chats that are added alongside playsounds in the code.
This pr eliminates the need to initialize sounds in a list so that you can weight them or have the game play them randomly from the list.
Sound Rings
Currently, only mobs with the audiolocation var may view them. Sound icons have an alpha that depends on the volume of the sound, louder sounds create a more opaque image
Sound rings are completely modular and may be changed to any image.
In addition to renaming playsound to reflect its new function. I intend to give blind people sound icons at the cost of their small view, but that is for another PR.
cl Basilman
refactor: refactored how sounds are stored and played
add: Added sound rings and supporting text
/cl
* Update wallets.dm
* Update pockets.dm
* Apply suggestions from code review
For when people forget how sister code works
Co-Authored-By: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
* Refactors NODROP flag into TRAIT_NODROP
🆑 coiax
fix: Anti-drop implants can no longer be used to drop objects that they
were not responsible for sticking to a person's hand.
fix: Backfiring with a Barnyard spellbook will now play a spooky horse sound.
refactor: Refactors the way that "NODROP" items work to a new system,
there should be no change in functionality.
/🆑
Various items in the codebase were doing weird hoop jumps in order to
preserve the nodrop flag's state when it also wanted to change it, so I
moved it to a trait system.
I may have gone overboard with the type of unique trait sources, but
those can be changed later. My long term plan is make a general "CURSED"
nodrop origin, which means you can unlock cursed items by being hit with
a bolt of door opening or something. But that's for another PR, this has
no functionality changes, apart from some slightly modified descriptions
on cursed masks.
- Removed a bunch of redundant voice changing code for all the voice
changing animal masks, used two new clothing flags for this purpose.
- Also refactored a bit the animal masks, making new cursed subtypes that play
the sound when created.
* Drop location
cl
add: Added a new antagonist, the Creep!
add: Chosen from a random event, the Creep will become obsessed with one person, feeling amazing around them and terrible when they aren't. They will have objectives to steal heirlooms, take pictures, hug, and kill coworkers. They also have to kill the obsession but some objectives can only be completed while the obsession is alive, requiring you to protect the obsession!
/cl
There really is no reason to betray people, generally. Maybe some stuff with security and traitors working things out, but a traitor based around betrayal and the general insane creep idea is just cool.
One Creep can show up, and they get objectives to mess with their obsession leading to the obsession's death. Here is their objectives:
A random creepy objective. It could be taking a photo with them in it, hugging them, etc
After your are done with your objectives, kill them. you can't complete the objectives when they are dead!
Creeps do not get the determination mood. Instead, when they are around their obsession, they feel AMAZING! If they are around too long, they will stutter, cough, and generally spaghetti out when talking near their obsession. So if you are going to talk near them, do it when you aren't entranced.
* Removes smugglers satchels
I love the cutie reading this
* remove smuggler's satchel from code
* removes all smugglers' satchel persistence code
* removes remaining things
storage component for smugglers, the miracle ruin (uses smugglers), the dme
cl coiax
add: Uplink pens now require two seperate rotations to unlock. This also
applies to failsafe codes.
/cl
With only 359 combinations on an uplink pen, it's crackable given a
small amount of time. With two, it's now 92,981 combinations, which
is more secure than PDA uplink codes (899 * 26 = 23,374).
cl Floyd / Qustinnus
tweak: You now have to be naked to get the nice shower moodlet, if you shower with clothes you get a bad moodie
add: Hygiene, you slowly become dirty over time, the more covered in blood you are the faster you will lose hygiene. When you are too dirty you will have a stink overlay. (Hygiene doesn't affect mood currently) It also spawns miasma slowly if you smell like shit.
add: adds NEET and neat traits. NEET's get 20 bucks social welfare extra and like being unhygienic, while neat people dislike being unhygienic and like being hygienic
/cl
This doesn't affect mood so plssss dont strawman in this PR about how I'm forcing you to shower or die or whatever
This PR is mostly visual and will allow for people to judge others for literaly being smelly as hell.
also NEET and neat traits which interact with being smelly. (neat likes hygiene, dislikes lack of it. NEETs like lack of hygiene and get some social welfare (20 bucks))
In other words, you can now dance.
@subject217
cl
experimental: Mobs now turn towards anything grabbing them when they move.
experimental: Mobs are shifted towards anything grabbing them based on move state too. You can now dance by grabbing each other!
/cl
cl coiax
fix: Dead monkeys now produce miasma.
/cl
Previously any time there was a dead monkey, it would constantly runtime with incompatible component warnings.
* Christmas code changes
🆑 coiax
add: Santa can now examine presents to see what's inside.
del: Santa no longer has a mass summon presents spell, because of his
new regenerating bag!
add: Santa's bag regenerates presents as long as Santa is holding it.
balance: You can only find one gift under a christmas tree per round, no
matter how many trees you search.
balance: Santa's teleport does not announce where he's going.
fix: Fixed Santa not having a full head and beard of white hair.
fix: Fixed Santa not being genetically white-haired.
fix: Fixed Concentrated Barber's Aid not growing extreme amounts of
hair.
/🆑
The `box` var has been moved down from `/datum/outfit/job` to
`/datum/outfit`.
Added unlimited christmas tree with presents, for testing.
Santa's restriction against opening presents is now done by
TRAIT_CANNOT_OPEN_PRESENTS. Santa's ability to see inside presents is
done by the TRAIT_PRESENT_VISION, which also determines if Santa's Bag
will regenerate presents every 30 to 60 seconds.
Santa no longer starts with a breath mask and O2 tank, but instead has
an internals box. Santa no longer has a no-access gold ID, he can
teleport from room to room!
Gifts determine what type is inside them on initialization, rather than
when unwrapped.
- Reasoning -
Unlike last year, there are various possible methods of accessing
christmas trees spawners, allowing for an unlimited number of anything
presents. Cutting down the presents to one per round regardless of tree
count will avoid this.
Santa should be able to see what he's giving, because then he can reward
the naughty and nice children with different gifts.
* Missed a merge
* Adds present investigate logs, and visible messages
* Use the body+mind checking of mob.has_trait
* Less globals, more static vars on types; also event renaming