Changes to how projectiles work: take two!
-Embedding is now a function of armor and projectile base damage.
-Chances to hit varied body parts are modified via miss_modifier. Less likely to hit head, extremities, etc. Distance is more of a factor.
Fix because I'm dumb.
Admin request:  Jobbans for IA and ERT
Merge pull request #3938 from Ccomp5950/master

Admin request:  Jobbans for IA and ERT
Scalpels also mangle gloves for nonhuman wear.
Merge pull request #3944 from zekesulastin/scalpel-gloves

Scalpels also mangle gloves for nonhuman wear.
Ravensdale request:

Detomax cartridge use will not create an admin message saying the name/key of the antag that tried to blow up the target, and if it was successful or not.
Merge pull request #3946 from Ccomp5950/master

Ravensdale request
Bugfix: Yeah variables are case sensitive.

Lesson learned:  Always compile before commit, unless attempting to pad your commit count.
Merge pull request #3947 from Ccomp5950/master

Bugfix: Yeah variables are case sensitive.
Spelling mistake.

Commit_Count++
Merge pull request #3948 from Ccomp5950/master

Spelling mistake.
Fix to fix a fix that needs fixing.
Removed earrape
Walking on tile makes it dirty. Takes 40 times for mob to enter tile for dirt overlay to appear.
Mopping resets dirtiness level.
Merge pull request #3930 from Higgin/dev

Changes to how projectiles work: take two!
Custom Item Request
Confirmed with Apple that this was acceptable.
Merge pull request #3951 from Ccomp5950/custom_item_creation

Custom Item Request
Bygex - Regex implementation for byond.
Source-code for the dll can be found here under LGPL license:
https://github.com/Carn/bygex
It is merely an interface to boost::regex. It uses perl syntax (non-recursive).

Guidelines for use:
var/datum/regex/Rgx = regex_findall(haystack, regex_expression)
for(var/i=1, i<=Rgx.matches.len, ++i)
    world << Rgx.str(i)

The implementation is different to the one other regex-in-byond library I found. This implementation only returns a string containing the position and length of each match and submatch. This uses far less memory than also passing back the matched strings (especially in large files like dream-maker maps).

Note: Regex indexes begin at 1 (since byond lists begin at 1), unlike traditional regex. If we are using a procedure such as regex_findall(), with 3 sub-expressions, match 1 will be the overall match. Match 2 will be subexpression 1, match 3 will be subexpression 2.... Match 5 will be the overall match of the next match...and so on. To ease use, there is /datum/regex/var/anchors which is a numerical value which can be used inside loops like so:

for(var/i=1, i<=Rgx.matches.len, i+=Rgx.anchors)
    world << Rgx.str(i+1)
This will print the first submatch of each match to world.
Cloning scanner saves languages in records.