About The Pull Request
This PR allows people with the split personality trauma to communicate with the stranger and vice versa through an action button. I also considered adding an option for the active player to release control but I felt that would be breaking the spirit of brain traumas a bit much.
Why It's Good For The Game
Split personality has always been a situation where the second player's only real option is "How many times can I shout "I'm Gay"/WGW over radio and try and avoid surgery until I inevitably get removed?" Don't get me wrong, you can still do that, but I aim in this PR to give players another option to get some of that sweet RP in. The main argument I can see coming up against this change is that traumas are supposed to be negatives, but how I see it, this doesn't make Split Personality a positive trauma so much as it allows roleplay similar to how you can roleplay as a paraplegic war veteran or as an ex-security officer who developed a phobia following an 'incident'. I'm happy to add a cooldown to the action if it proves to be an issue.
Changelog
cl
add: Split personalities can now communicate with an action button
/cl
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
Re-opening of #42644
Adds two new traumas in the trauma pool.
Mind Echo: a mild trauma that records what the patient hears and says, and occasionally replaces heard or spoken messages with one of the recorded ones.
Existential Crisis: a special trauma that causes spontaneous temporary non-existence, which works like a desynchronizer does.
Why It's Good For The Game
More variety in traumas!
Changelog
cl XDTM
add: Added two new traumas in the trauma pool: Mind Echo (mild) and Existential Crisis (special).
/cl
hear_intercept is removed in favor of having the things that care register for the COMSIG_MOVABLE_HEAR signal instead.
The signal has been changed to be like the speech one with an args list.
Nanite datums no longer register for the hearing signal just in case, only the voice sensor nanite program does.
Dead code has been removed from to_chat, the savefile/sound checks being just-in-case boilerplate checks made during the conversion to to_chat, the replacetexts sidestepping a byond bug that was fixed in 512.1420.
About The Pull Request
This PR removes speech message and span hooks from dna, mutations, pierrot throat disease, species, tongues, masks, hats, held items, brain traumas and a carbon proc overload handling tonguelessness.
Tonguelessness is now handled by tongue removal registering for the speech signal and the hook being deregistered by having a tongue put in.
Also cleans up some /atom/movable/proc/get_spans() overloads that called the empty parent or overloaded the parent to do the exact same thing as the parent proc did.
Also cleans up calls to radio.talk_into() where the caller would often, as a result of copypasta, provide the proc with fresh copies of the proc's default values for proc args, and makes say_quote() better by giving it a default spans value so that none of the callers have to provide the same default one.
Why It's Good For The Game
Changelog
cl Naksu
code: Cleaned up saycode
/cl
* start with this
* oh man this looks so good
* hats are dead
* /obj/item/proc/speechModification is dead
* brain traumas and get_held_item_speechspans() are dead
* these should be static
* unfortunately we still need this
* /mob/living/carbon/treat_message(message) is kill
* clean up get_spans()
* dunk get_spans, modifies_speech for brain traumas, some superfluous static stuff
* move stuff around
* return values
* new mutation: simple speech
* finalize simple speech and fix word list apostrophes
* Is now a brain trauma instead
* fix merge conflict
* grammer fix
* cleanup cause I'm an idiot
* made the suffix list a bit easier to read
* fix traits.dm
* staves
* projectiles
* sapped event
* last of the staves (need to sprite and get sounds)
* last of the projectiles
* Squash is a single-use plant in Plants vs. Zombies and returns as a premium plant in Plants vs. Zombies 2.
* removes staff of cooperation, adds fly magic status effect
* a couple things with flight + tweaks
* removes old bolts/staves, finishes and adds parts of the new set
* fixes
* fetching + flying fixes, added chill and wipe
* and done
* cobblestone's review
Hypnosis no longer runtimes forever if it can't generate a valid regex
from the user phrase
Hypnosis also no longer constantly regenerates the regex and instead
just matches using the existing regex
* adds 5 new (minor) negative mutations
also adds a mutation conflict system
* removes debug comments and to_chat(world)s
* addresses reviews
* further review addressing, new message
and a message given to the subject when a mutation fails to manifest because of conflicts
* cooldown on acid flesh message
🆑
add: Adds the Paraplegic quirk for -3 points. You start with unhealable leg paralysis
(persists through cloning), and have a wheelchair to move around the station.
/🆑
This is really popular for some reason.
This required a surprising amount of small code tweaks for it to "feel"
right in edge cases like being a job that had items in their hands or
joining on the arrivals shuttle.
Justification for -3 points: You move REALLY slowly, in a game that's
about generally running from security/the guy with the esword. And if
you die and get cloned and don't have your chair, you move even slower.
* Traumas are copied when a person is cloned
🆑 coiax
add: When a person is cloned, any mental traumas are cloned as well.
/🆑
If the cloner is going to recreate your delicate personality, it's going
to have to recreate anything wrong with your brain as well. After all,
where does one greytider's legitimate fear of security end, and another
one's irrational fear begin?
Essentially, traumas could be easily gotten rid of by cloning, or death
would rob a person of a rare positive trauma. Now you're stuck with them
until you get rid of them.
* Suggested changes
* adds station positions global list
* She don't believe in shootin' stars But she believe in shoes and cars Wood floors in the new apartment Couture from the store's department
* missed comma
* embarassing
* Update code/modules/antagonists/creep/creep.dm
Co-Authored-By: tralezab <40974010+tralezab@users.noreply.github.com>
* parentheses
* shiver me timbers
* Hey, great work Mac! Now let's take down the next circuit!
* a plethora of fixes
🆑 coiax
tweak: The creep trauma/antagonist is no longer gained via brain damage.
/🆑
Stops self-antaging from repeated brain damage/healing, and also just
generally leaves it only assigned via the event or admins.
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.
* Traumas are copied when a person is cloned
🆑 coiax
add: When a person is cloned, any mental traumas are cloned as well.
/🆑
If the cloner is going to recreate your delicate personality, it's going
to have to recreate anything wrong with your brain as well. After all,
where does one greytider's legitimate fear of security end, and another
one's irrational fear begin?
Essentially, traumas could be easily gotten rid of by cloning, or death
would rob a person of a rare positive trauma. Now you're stuck with them
until you get rid of them.
* Suggested changes
* Removes cloning traumas
* No more cloning traumas
GENETICS
The random hexadecimal rng game has been replaced with gene sequencing from goon.
Adds mutation activators and mutators
You can now store mutations
Everyone now has their own set of unique mutations
Limited mutations per person to 8 (including one always being monkey)
Adds race specific mutations (See fire breathing for lizads)
You can inspect discovered mutations, undiscovered mutations use an alias to recognize them by
Adds a sequence analyzer. Can be used to scan someones genes sequence. Useful for determing what mutations they can safely have and or collecting data for very difficult sequences
Adds mutation combining. It's currently only RADIOACTIVE + STRONG = HULK (So yes you will now need 2 mutations for to get hulk)
Adds several other mutations. Telepathy, firebreath, glowy, radioactive and strength
cl Time-Green
add: Goon genetics!
add: More mutations! Fire breath for lizards! Radioactive! Telepathy! Glowy! Strength, though its cosmetic and should be combined with radioactivity instead! Fiery sweat!
add: Adds void magnet mutation by @tralezab !
/cl
cl Mickyan
add: Added various new moodlets
add: Most notably, the Laughter chemical and breathing small quantities of N2O can improve mood
add: Psicodine: a new chemical that can restore sanity levels to normal and temporarily suppress phobias
add: Happiness: a homemade drug that supposedly gives a feeling of total bliss and.. emptiness? That can't be healthy... watch out for side effects.
fix: The suffocation moodlet now triggers correctly
fix: The drunk moodlet now clears as soon as the drunkenness wears off
/cl
Fixes#41170
List of new moodlets:
Jittery
Vomiting, vomiting all over yourself (gross)
Painful medicine application (silver sulfazine/styptic powder/syntflesh) - very short duration
Chemical euphoria (breathing N2O)
Laughter/Superlaughter reactions
Happiness drug related reactions
Psicodine: keeps your sanity at least above neutral level and suppresses phobias as long as it's in your system. Also available from pill bottles at the medivend at a premium.
Happiness: loosely inspired by Joy from LISA, very addictive, does minor brain damage, withdrawal makes you slowly go insane and overdose makes your mood jump all over the place. Also suppresses phobias. Good if you need a very quick and powerful boost but not very practical for keeping your mood up for long periods.
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.
cl XDTM
add: Added a new severe brain trauma: hypnotic stupor. Victims of hypnotic stupor occasionally fall into a trance, and upon hearing a sentence they'll focus on it to the point of obsession, until it is replaced by a new hypnosis or the trauma is cured.
/cl
Adds the potential for some fancy rp gameplay. The idea is that they should take a passing message way too seriously, while leaving room for interpretation to the player. Hearing an isolated "greytide" over the radio might prompt a player to take up arms against the rampaging greyshirts, another might interpret it as having to become the greytide. Someone who realizes what's up might use this to give clear orders to the victim, although they'll only last until the following trance.
I plan on adding more methods to inflict hypnosis with the same trance->"focus on a sentence" mechanics, perhaps as a traitor/CMO pendulum item, or as a wizard/cult spell.
* Refactor several log lines to use datum_info_line and atom_loc_line
* Add default return strings from datum_info_line and atom_loc_line
* Add parentheses around atom_loc_line data
* Change more logs to use atom_loc_line
* Add check in atom_loc_line for turfs to avoid calling get_turf on them
* Re-add removed 'at'
* Replace datum_info_line with key_name and atom_loc_line with loc_name
* Refactor logging functions
* Avoid double-logging self-interactions
* Fallback to simple stringification if all else fails in key_name()
* Rewrite muscle spasm logging to use log_message
* Standardize logging of martial arts
* Tweak individual logging panel look
* Fix individual logging panel source
* When I typed || I really meant &&
* Fix Telecomms logging always showing client logs in the panel
* Reverts addition of buggy ownership log to panel
* Remove colon
* Fix missing log_directed_talk tag
* Add warning for missing type in log_direted_talk
* Change warnings to stack_traces
* Add square brackets around fallthrough key_name() case to help parsing
* Allow atom arguments/src in log_*() functions
* Change log_combat call with null argument to log_message
* Change mecha types' log_message() arguments to match atom and mob version
* Add key_name() case for atoms
* Fix resist_grab() unsetting pulledby before log_combat gets a chance to use it
* Fix log_globally logic
* Add logging for hitting objects with items
* Move log_combat() to atoms.dm
* Use utility functions for object stringification in log_combat()
* Use utility functions for object stringification in log_combat()
* Add missing logs for interacting with display cases
* Rewrite log_combat() comment
* Add missing space in log_combat()
* Add logging for hitting grilles barehanded
* Add missing ..()
* converts to using key instead of ckey for user facing logs and ui
* more key_name for airlock wires
* futureproofing check for if key changes
* --onlyckeymatch script argument and fail/success counter
* fix
fix: having higher sanity is no longer punished by making you enter crit faster
balance: you can have 100 mood instead of 99 before it starts slowly decreasing
Remember higher sanity is BETTER
You want crit_modifier (now crit_threshold) to be LOW so you can stay in fights more (you go into crit at 5hp vs 0hp).
Why: Proc overhead, puts the load on mood, proper abstraction of mood component, values > defines, etc.