What:
The mind/memory variable is a variable that is used to store IC notes. Players can add to it at will, using the Add Note verb. The problem, is that they can add to this infinitely. This can be weaponized with macros to generate an infinitely long string. Well, infinite in theory, in reality, this will cause DD to OOM and crash.
Solution:
Capped the length of mind/memory to MAX_PAPER_MESSAGE_LEN (3072) characters. This length is checked when the user attempts to input, and also when the notes are actually edited. The former produces an error for the user, the latter will simply shift the memory contents forward, potentially causing HTML break. But this limit is not likely to be reached via other means.
Thanks a lot to MoondancerPony.
Adds a psionic ping ability to Skrell and Armalis, which allows them to detect nearby lifeforms (except machines, vaurca, and diona) in a non-specific fashion.
This PR is depending on #4868 for it's ui framework. This PR mostly makes new SSrecords subsystem responsible for storing records. This should replace old datacore.
Make new SSrecords.
Make things use SSrecords and whole code compile
Made VueUi button <vui-button> to push parameters as JSON, preserving client side data stricture.
Add new records console and admin record management.
I am mostly looking for feedback regarding SSrecords and it's data storage mechanism criticism (It's using lists for storage)
Xenomorphs are pretty much badly done and don't really fit at all. This pr fully removes the human type ones, alongside with the infection, eggs and facehuggers.
Goal of this PR to change flat 10 minutes timer to a progress thing.
Instead of flat timer Diona will have regeneration progress. Hence X amount of stuff required to regenerate.
Energy(light) contributes low amount pert tick towards limb regeneration progress.
Biomass(nutrition) contributes medium amount toward limb regeneration.
Radiation contributes high amount towards limb regeneration.
Diona will take around 10 minutes to regenerate with Just light. 3-6 minutes with Light + biomass.
1-2 minutes with light + biomass + radiation
Status tab now shows stats like stored Biomass, and light out of max. And limb regeneration progress
Small mobs such as rats can now bite cables.
Small mobs that can ventcrawl now interact with atmospheric machines that contain pumps
Small mobs can no longer block airlocks by standing in them.
When to_chat gets converted to a proc, then the construct of to_chat(some, link(url)) will no longer work. Or will produce odd results.
As a result, the send_link macro is now created. Replaced existent instances of the previous construct and added a simple grep check for this as well. It won't catch all, probably, but it'll catch the most common instances.
Bug:
Select a faction that's not NT. Wait for round to start. Proceed to join as any job (even locked ones) through the mid round join menu.
Fix:
Add a relevant check to /mob/abstract/new_player/proc/IsJobAvailable(). This is checked both when generating the menu and when actually joining, so href exploiting isn't an issue either.
Diona Gestalt no longer has stump left after it has regenerated lost limb.
Diona nymph can now be attacked by any weapons. By deleting duplicated override of attackby()
Detached limb nymph now gets all verbs of regular nymph, and no longer ignores damage.
Detached nymph that merges back together now moves inside of Gestalt, thus preventing Gestalt from regenerating another nymph and wasting energy.
Intent of this PR: make factions actually matter.
How we're going to do this:
Make factions limit job choices.
Make factions have alternative loadouts that override job uniforms
Make factions be visible in the employment records.
Revert existing faction loadout options or put them behind a preference, in favour of new shit.
It has been posited that it doesn't make sense to hear certain sounds through walls. So, I proceeded to go and change that.
All sounds with a volume of 50 or less will now be played only to the "hearers" list. This is basically people within line of sight. I also rewrote the lower levels of the sound API with this. The code is now more modular, while retaining the same main API entry point playsound.
This needs a test merge to see how badly I broke shit.
Adds ability for Gestalt to detach their limb nymphs and use them for scouting or whatever.
Detached Nymph can switch back and forth between controlling Gestalt or nymph
Detached nymph can merge back into Gestalt, restoring lost limb instantly.
Makes initialization of Diona nymphs based on external organs it has, not a hardcoded number
No longer Nymphs spawn on turf and move into Gestalt during initial setup.
No longer removing internal limbs would cause spawn of nymph. Only external organs do that now.
Timers:
Adds new proc in timers that calls the callback and deletes timer afterwards. Used when you need to make active timer execute now.
balance: "Medical borg's are now able to handle tanks, breath mask's and organs with chem gripper."
tweak: "Renames Hunter Killers to Military Frames."
Removes the flashing effect on manhack grenades. It lasted around two to three seconds, making escape nigh impossible.
Made manhacks do a random number between 10 and 15 damage.
Made manhacks easier to click on by giving them a small invisible square around their sprite.
Humans could enable autohiss. This resulted in the handle_autohiss proc runtiming, due to missing expected maps. The runtiming rendered the person unable to speak until they turned autohiss off again.
Fixes this by checking for the presence and length of autohiss_basic_map. The map is expected as a predicate towards autohiss working in the first place.
Force gloves allowed you do the first upgrade instantly, meaning you skip both passive and blue. According to the code, this is unintentional behavior and leads to further bugs, such as being stun-locked when this happens repeatedly.
-kois can now infect people by being injected into the bloodstream as well
-vaurca warforms have their own fire overlay now
-fixes a missing error in the warform right arm
Autopunctuation will no longer autopunctuate if markup (* or /) is present at the end of the sentence.
It will also no longer input an empty period if you put nothing in the chat box.
Fixes#6536
Removed the ability to examine people and see that they are "severely malnourished" or "severely thirsty". I figured it would be odd to, one, see that someone hasn't eaten in two hours, and two, have someone become visibly malnourished and visibly thirst-ridden in only two hours.