* Unicode support Part 2 -- copytext()
This is the transition of all copytext() calls to be unicode aware and also some nearby calls in the same functions. Most things are just replacing copytext() with copytext_char() as a terrible character limiter but a few others were slightly more involved.
I replaced a ton of
````
var/something = sanitize(input())
something = copytext(something, 1, MAX_MESSAGE_LEN)
````
with a single stripped_input() call. stripped_input() already calls html_encode(), trim(), and some other sanitization so there shouldn't be any major issues there.
This is still VERY rough btw; DNA is a mess, the status displays are complete ass, there's a copytext() in code\datums\shuttles.dm that I'm not sure what to do with, and I didn't touch anything in the tools folder. I haven't tested this much at all yet, I only got it to compile earlier this morning. There's also likely to be weird bugs until I get around to fixing length(), findtext(), and the rest of the string procs.
* Makes the code functional
* Assume color hex strings are always # followed by ascii.
Properly encodes and decodes the stuff in mob_helpers.dm which fixes some issues there.
* Removes ninjaspeak since it's unused
* Unicode support Part 1
Makes all calls to ascii2text() and text2ascii() unicode aware as well as all calls in code/__HELPERS/text.dm.
Adds defines for the footext_char() procs to maintain 512 support.
I did some cleanup on the text helpers since a lot of them were really, really bad.
reject_bad_text() and reject_bad_name() have an arg to reject non-ascii chars which defaults to TRUE.
* Give travis a more recent beta
* Ultimate compat
Added the _char procs I was missing
Test the build instead of the version because Lummox is a goddamn moron
* Suggested fixes, removes the last of the dd_ helpers
* Reading the reference is very important!
* Minor code improvements and a comment
* Typo
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.