Misc:
+Fixes unreported issue with initializing lighting on a specific zlevel
+Fixes two similar issues with moveElement and moveRange. Where fromIndex or toIndex could be adjusted incorrectly in certain conditions. Potentially causing bad-sorts, or out of bound errors.
+Rewrites listclearnulls(list/L) to no longer iterate through L.len elements for every null in the list (plus 1). i.e. went from L.len*(number_of_nulls+1) list-element reads (best-case), to L.len list-element reads (worst-case)
+New proc/getElementByVar(list/L, varname, value) which finds the first datum in a list, with a variable named varname, which equals value. You can also feed it atoms instead of lists due to the way the in operator functions.
+Fixes an unreported issue with Yota's list2text rewrite. Under certain conditions, the first element would not be converted into a string. Causing type-mismatch runtimes.
+New global map_ready variable. This is not fully implemented yet, but will be used to avoid duplicate calls to initialize() for map objects.
+All turfs now maintain references to all lights currently illuminating them. This will mean higher memory use unfortunately, due to the huge number of turfs. However, it will speed up updateAffectingLights significantly. I've used list husbandry to reduce baseline memory usage, so it shouldn't be any worse than some past atmos modifications memory-wise.
-Removed 'quadratic lighting', can add this back at some point. Sorry.
+modified the way lum() works slightly, to allow turfs to have overridden delta-lumen. i.e. space cannot be illuminated more than its default ambiance. This allowed removal of some iffy special-snowflake lighting areas implemented by somebody else.
+Lighting images in the dmi can now use arbitrary naming schemes. It is reliant on order now. This allows the dmi to be replaced by simply dropping in a new dmi.
-Removed all subtypes of /area/shuttle. Shuttles now create duplicate 'rooms' of /area/shuttle. (More on this later). This will conflict with most maps. Guide on how to fix to follow.
+All verbs/tools relating to world.tick_lag were refactored to use world.fps. However old config text for setting tick_lag will still work (it converts the value to fps for you)
+MC stats improved using smoothing. They now have their own tab so they dont get in the way when you're playing as an admin.
-removed the push_mob_back stuff due to conflicting changes. Sorry Giacom.
_OK, NOW THE ACTUAL INTERESTING STUFF_
Following systems moved over to subsystem datums:
air_master
garbage_manager
lighting_controller
process_mobs (aka Life())
nanomanager
power
sun
pipenets
AFK kick loops
shuttle_controller (aka emergency shuttle/pods), supply_shuttle and other shuttles
voting
bots
radio
diseases
events
jobs
objects
ticker
Subsystems hooks and variables should be commented fairly in-depth. If anything isn't particularly clear, please make an issue.
Many system-specific global variables have been refactored into
All tickers which previously used world.timeofday now use world.time
some subsystems can iterate before round start. this resolves the issue with votes not working pregame
- Plays every time the alert level rises, or emergency access is enabled
- Delayed the start of Intercept.ogg a bit so it doesn't overlap with the alert level sound
Head of Staff announcements (ie the ones made via request consoles) are now "Minor Announcements". While head announcements are unchanged, other in-game notifications have been expanded to use their format, including when the Captain joins the game, and early shuttly launch notifications.
They're basically meant to be big and noticable, but not as annoying and spammy as Priority Announcements.
I wanted to include a sound for them, but I've been unable to find one I was satisfied with.
*Reorganised and commented used procs for better visibility/maintenance
*Redid the PriorityQueue class
*Changed the euclidian distance to the byond one (so that we don't calculate float and square root when it's not necessary)
*Made the AStar algorithm use the closed list instead of just filling it
*Some optimization in the open list sorting : last entered is first in case of f ties, slightly less tiles are checked now
*Changes the order directions are checked when adding adjacents turfs to make for more 'realistic' path (read less 'drunk pathing' with lots of diagonals)
*Fixed some turfs densities not being check for diagonal movement
*Closed firedoors are now correctly seens as blocked by the algorithm
*Cleanbots now only moves in cardinal directions, like other bots.
*Updated the info text at the beginning of the file a bit
*Absolutely unrelated : simplified the turf.Bless() proc
-RC Announcements now produce news stories, too
-The AI may now make priority announcements via communications console that emulates the automated messages
-Centcom announcement proc merged with generic priority announcement proc
-Re-added the Captain Announces accompanied by a new pleasant sound, instead of the generic priority announcement
-Captain Announcements will automatically generate a newscaster article
-Priority announcements without any defined accompanying sound will play a generic "Attention" soundbyte as an audio cue
-Communications consoles will display who is currently logged in
- Fixes the following SQL error:
[13:44:09]GAME: SQL ERROR during death reporting. Error : [Table 'ss13.death' doesn't exist]
The issue was with cyborg death logging, which was not updated properly to log into the correct table.
- Fixed the SQL schema so it properly logs deaths and the legacy_population thing (which logs how many admins and players were on every 5 minutes). If you already have a database set up and don't want to completely wipe it (Let's be honest, you really don't want to do that), look at this thread for help in updating the database properly: http://www.ss13.eu/phpbb/viewtopic.php?f=6&t=194
-Removed the priorityqueue datum. It is now a list()
-priorityqueue/proc/insert is now a helper /proc/sorted_insert() as it may be helpful in maintaining pre-sorted lists or insertion sorts.
-Replaced priorityqueue/proc/extract_last() calls with calls to pop(), which already existed.
-Removed last few references to "bestF" (from old awful A) in lighting and MC
-Replaced a section were it'd append to the end of the returned path list and then reverse the list. Now it inserts at the start of the list.
Will obey the maxnodes parameter if it's provided (although perhaps not
in the way that it was originally meant?) The only one that uses it is
disease, and it wasn't an issue there, but at least in future it won't
be a problem.
Also slightly increased the maximum loop count from 1500 to 1800, on the
off-chance that the previous value was pessimistically low. In the
initial station this doesn't go past 1000, but if bots understand doors
their paths might get squiggly.
I wish I'd just been able to update the original version, but something
kept going wrong.
This version creates paths of identical lengths (not necessarily the
same paths!) while evaluating, on average, only 35% of the tiles that
the original algorithm would. Seems like a decent improvement.
Also fixes some grammar in the mulebot file.
Removes the old tgstation database. It has been merged into the newer feedback database.
All mentions of the old database have been replaced with the new one.
This includes updating tgstation_schema.sql and dbconfig.txt.
Removes README feedback.txt as it is now covered by the new schema.
Removes the unused forum DB stuff, including forumdbconfig.txt.
Updates the config, including both config.txt and game_options.txt. Many options have been moved into the latter.
Updates configuration.dm to reflect these changes.
Removes the config var/feature_object_spell_system as it did nothing.
Fixes Issue 1183
-Most game-specific messages now print to all non-new_player mobs instead of the world, round-end reports are unchanged but request consoles and other announcements will not be heard by people in the lobby any more
Fixes Issue 1158
-Tweaked the temperature resistance of mechs to be more inline with current fires. Most mechs protect almost as well as a full fire suit, and the firefighter mech is just over 2x more effective
Fixes Issue 1027
-False-walls can no longer be fixed when on top of a dense turfs
Fixes Issue 1196
-Tweaked how damage was read for CPR and self-examining so you can't perform CPR on yourself at 100 damage
Fixes Issue 1202
-Made stun-glove construction use the cable/Use() instead of just amount-2, so you can no longer get 0 amount coils
Fixes Issue 1206
-Glass reagent containers and droppers now log attacks like syringes do, with the list of reagents
Fixes Issue 1234
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5508 316c924e-a436-60f5-8080-3fe189b3f50e
- The current, file-based ban system is now a legacy system, the use of which is strongly discouraged for servers, which are constantly online.
- Added a database-based banning system, with a new baning panel, accessible through the 'banning panel' verb. Servers, which use this new banning system, will get the new panel up even if they use the old 'unban panel' or 'display job bans' verbs. These remain there for legacy support purposes. (Panel screenshot below)
- The most notable benefits of the new system are the ability to add offline bans, meaning the person does not have to be connected for a ban to be applied to their name. The second benefit is the ability to look up all previous bans that the person had.
- The major disadvantage is the complete incompatibility between the old and new system, meaning you have to either do a lot of copy-pasting or playing around in code to sync the old system with the new one. Servers upgrading to this system might want to consider a purge of all bans, if they don't want to go through this. Due to the incompatibility, there are no transition tools provided. Please contact me (errorage/rageroro) in #coderbus for help in syncing your database. The /tg/ legacy and database systems have been synced.
- The server configuration defaults to use the legacy system, as the new one requires the database to be set up. Please hash BAN_LEGACY_SYSTEM in config.txt as explained, to use the new system. If the database connection fails, the server reverts to the legacy system.
If any bugs or errors appear with either the legacy or new ban system, please let me know ASAP. The same applies if there are any syncronization problems between the legacy and new system, resulting in banned people unbanned or unbanned people banned.
Panel screenshot:
http://www.kamletos.si/new%20ban%20panel2.PNG
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5034 316c924e-a436-60f5-8080-3fe189b3f50e
- Fixed pulse rifle, energy sword, blackhole and mob spawning
- Fixed 'reload admins' not properly updating the 'admins' list, which made adminwho fail, along with some other things.
- Fixed a bug, which prevented admin from even being loaded properly in some circumstances, in the database admin system.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5027 316c924e-a436-60f5-8080-3fe189b3f50e
- Standardized the database library code
- Deleted a few unused database related files (karma and forum activation), so they won't get in my way later. They work off of no longer existent database tables.
- Made it so the server maintains a constant connection with the database, which is established on world/New() and never broken, until the server ends. If 5 consecutive database connection attempts result in no connection getting established, the server will not attempt any more connections. Made all existing database connections use the global continuous connections. Currently we need two, as we have two databases, but the old database is going to get moved into the new one.
- Fixed the spaghetti-like report in the permissions panel, which happened when someone had many permissions enabled.
- Added database connection reports to display to dream daemon on server startup.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5015 316c924e-a436-60f5-8080-3fe189b3f50e
>tried to make the comments less confusing.
>Removed the procs for rebuilding the lists (they weren't meant to be used and half were broken anyway).
>added a directory. It maps ckey to client like so directory[ckey] = client. It could be used for PMs, banning, and various other admin tools rather than using \ref[]
>var/list/admins is now a list of clients whom are admins.
>var/list/admin_datums is what var/list/admins used to be. A map from ckey -> admin datum
Most of this is so I can add modular admin ranks in a non-horrendous way and fix some existing issues.
>var/list/client_list is now var/list/clients (laziness sorry)
>removed some needless loops and stuff.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4951 316c924e-a436-60f5-8080-3fe189b3f50e
>Replaced dd_text2list, dd_text2listcase, tg_text2listcase and tg_text2list with text2list and text2listEx. text2list will return a list of each and every character in the string if you set separator=""
>added return_file_text(filepath) which returns text from a file after doing some checks: does the file exist? is the file empty? It prints helpful error messages to the world.log if it runs into problems
>Replaced dd_file2list(filepath, seperator) with file2list(filepath, seperator). It just calls text2list(return_file_text(filepath), seperator). rather than copypasta
>Replaced time_stamp() so it's not as retarded
>Lots of the world setup stuff uses file2list now, rather than file2text -> sanity -> text2list
>Added error() warning() testing() procs. These print messages to world.log with a prefix. e.g. ## ERROR: msg.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4948 316c924e-a436-60f5-8080-3fe189b3f50e
-Fire made more deadly, as the flames will add more damage and a fire can spread more quickly.
-Fire can break windows now, meaning they can potentially extinguish themselves by opening a window to space.
-Increased the delay for atmos to process a cell and airgroup, will help with the lag for 50 player servers.
-Minor tweaks were made.
--Plasma needing a bit more before displaying its overlay.
--Pressure can now damage you at 550 kPA. This was because it wasn't viable to set the pumps to over-pressurize a room and potentially kill people.
--High pressure warning shows at 325.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4869 316c924e-a436-60f5-8080-3fe189b3f50e
-The firedoor wasn't updating the freelook camera. When I looked at it I couldn't figure out why it was using it's own "rebuild" code, supposedly it only updates the air that it set in the dir variable but the current map doesn't utilize it at all (firelocks with a dir of 8 which are lined horizontalally), and you would have to have two thick wide firelocks to make it effective. I've commented it out and I'll put it back in if we have problems.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4832 316c924e-a436-60f5-8080-3fe189b3f50e
- Tested with various damtypes/locations/mobs but if i'm a dumbass and overlooked a problem feel free to punch me and revert this
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4762 316c924e-a436-60f5-8080-3fe189b3f50e
Chem smoke will say what reagents are in the chem_smoke.
Added a more_info ? to the last fingerprint that touched the grenade.
Added a more_info ? to bomb's last fingerprint and the attacher.
Admins get a warning message when someone summons guns.
Added a jump link to bomb's activation location.
Added a jump link to chem smoke's activation location, it will also show you the area's name.
-NarSie won't follow mobs in another Z level.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4719 316c924e-a436-60f5-8080-3fe189b3f50e
-Fixed an issue with the Upgrade Camera malf module.
-Fixed an issue with HTML codes in whisper.
-Ghost ears and eyes default to 0.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4700 316c924e-a436-60f5-8080-3fe189b3f50e
-You can't show messages to dead/clientless AIs by putting a page of paper up to the camera.
-Ghost following will get a list of mobs from getmobs, it'll sort it by mob type and by name.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4679 316c924e-a436-60f5-8080-3fe189b3f50e