Adds a config option MENTORS which sets the variable config.mods_are_mentors
Adds a rights level of R_MENTOR which gets msay, private message, aghost, notes, and a new proc for checking for new players (requires database support).
If the confic option for mentors is set then
the ckeys listed in moderators.txt file will instead be set as mentors, you can still make moderators by adding them in admins.txt
staffwho will show Mentors instead of Moderators as the heading above the listing of non-admins.
Also: Players now get a message gently reminding them to click the name of the staff member to reply instead of ahelping over and over.
CR+LF added to new lines, created a global variable log_end that can be used
on newlines
log_misc("blahblah...[log_end]\nMoreblahblah[log_end]")
put [log_end] prior to any \n and it will show up correctly in windows.
Also created log_misc() proc to log to diary, and removed a bunch of
diary << stuff all over the place.
Before: Every tick each HUD item would recalculate and redo images for every mob in view. For items like the secHUD where we're transversing implants and the various records this gets very expensive.
After: Mobs use their hud_list variable to store varius huditem images, when conditions change for those specific huditem images it updates the specific ones on demand. As a backup every 30 ticks or so the mob will update all of their hud_list.
Also: moved proc/RoundHealth() from 2 seperate locations into __HELPERS/mobs.dm
Conflicts:
code/modules/mob/living/living.dm
Removed client check from mob so that if a pAI is being held by a SSD client it can still hear.
Removed 3rd deep .loc check 2 is plenty, and was making the proc rather expensive
(if you shove a pAI in a bag and toss the bag into a locker, the pAI will be deaf, you jerk).
Before: Everytime you say something. This proc is ran. Along with it, recurses through EVERY /obj/ & /mob/ in view's contents, and EVERY /obj/ & /mob/ in that contents...and once again.
After: Fuck recursion, we're going to loop through clients and see if they are within any obj's or mobs within one iteration. MUCH cheaper, and probably less buggy.
If someone can't hear everyone and they are within an object and it's not catching? add it to the list commented for it of type checks.
* Add dynamic loading of poster designs (untick group in DM to remove, no more toggles)
* Fixes wirecutters duping posters
* Fixes dropped posters not being placeable.
Also fixed some grammar in the station blueprint code.
Conflicts:
code/game/objects/items/blueprints.dm
code/game/objects/items/devices/uplinks.dm
code/modules/admin/verbs/debug.dm
code/modules/clothing/masks/gasmask.dm
code/modules/detectivework/scanner.dm
code/modules/flufftext/TextFilters.dm
code/modules/mob/living/carbon/human/say.dm
code/modules/mob/living/silicon/ai/say.dm
Current hooks are "startup", "roundstart", and "roundend".
Most stuff in world/New() has been moved over to the startup hook.
Roundstart and roundend have no hooks yet.
Removed the unused "newbanjob.dm" file and associated verbs/topics.
Bumped RECOMMENDED_VERSION up to 501.
Signed-off-by: Mloc-Argent <colmohici@gmail.com>
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.
- creating the mask entity
- modifying the code for cult icons
- updating the camera net
- adding visibility network updates to all mobs
- unifying the culting and deculting process
- adding "Make Mask" function to Player Panel
Also changed weird condition that amputated leg must not be splinted.
Removed checks for haslimbs, since movement while downed is not possible anyway.
Moved some special effects for broken limbs after check for such, so healthy ones wont bother.
Fixed a derp in populating the global list of sideffects.