Commit Graph

240 Commits

Author SHA1 Message Date
phil235 a55e6a70be Fixes malf AI lockdown affecting doors on z levels other than station and mining.
Replaces a lot of z level numbers in code by their respective defines.
Adding a define for the Mining asteroid z level.
2015-01-11 15:39:32 +01:00
carnie a029a49392 SubSystem rewrite
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
2014-12-31 13:25:41 +00:00
Menshin b11c6fad76 * Added a wrapper proc for A* that returns an empty list when failing to find a path
* Fixed runtimes for A* failing bots
2014-11-14 00:09:02 +01:00
Remie Richards cc85f44ccb Merge pull request #4900 from MrStonedOne/erroageinjudgement
Fixes some "erros" in the database system
2014-09-26 23:41:37 +01:00
ikarrus 462ce9c877 New sound for more distressing minor announcements
- 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
2014-09-21 22:33:08 -06:00
MrStonedOne e21ed011af Fixes some erros in the database system
Replaces erro_ with a configurable table prefix system
Defaults to erro_ if not configured, but configuation files default to SS13_
2014-09-19 13:37:58 -07:00
ikarrus 668db29868 Added some <BR>s to Minor Announcements
- Makes them look nicer with the title on it's own line
- Makes them a bit more noticeable
2014-09-05 20:58:43 -06:00
ikarrus 55799b2ced Resolved Conflicts:
code/defines/procs/priority_announce.dm
2014-08-18 19:44:15 -06:00
ikarrus e06da13430 Comms console outside of Z1 will not longer receive command reports 2014-08-17 13:37:29 -06:00
ikarrus 0de9402a18 Made receiving and printing centcom reports a proc
Also changed a few "Cent. Com." strings to "Centcom"
2014-08-17 13:03:11 -06:00
ikarrus c642c7bb74 Minor Announcement format expanded to include Alert Level changes and Emergency Declarations 2014-08-14 20:44:18 -06:00
ikarrus c80f22bf52 Added a sound.
Changed Captain's arrival announcement type to General
2014-08-14 08:52:54 -06:00
ikarrus f4cfd04485 Minor Announcements
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.
2014-08-14 00:03:43 -06:00
Menshin cd4a32309c Refined the implementation of the AStar algorithm :
*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
2014-07-12 21:58:32 +02:00
Miauw62 5b97955d90 Merge pull request #3719 from Perakp/astar
Fixes stinging from range pathfinding
2014-05-24 19:49:05 +02:00
ikarrus 7ccb0121e3 Swapped the order of subtitle and header of priority announcements 2014-05-18 11:36:02 -06:00
Perakp d1aade90f0 - Fixes Astar being stupid with maxnodes
- Diagonal movement now costs whatever sqrt(2) rounds to.
- Fixes #3665
2014-05-16 23:46:52 +03:00
ikarrus 5ee453901a Added a canUseTopic() 2014-05-14 20:50:46 -06:00
ikarrus 72c2c9e016 -Merged centcom and announcements news channel into a single "Station Announcements" channel
-RC Announcements now produce news stories, too
-The AI may now make priority announcements via communications console that emulates the automated messages
2014-05-08 21:22:45 -06:00
ikarrus a48ba0d256 Priority Announcement Changes
-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
2014-05-05 22:18:57 -06:00
Rockdtben 3ae03c3ed1 NewCasters will now show Central Command Updates. 2014-03-25 18:51:58 -05:00
Rockdtben fa0b3d5a87 bestF on everything? No please no.
datum/var/bestF
NO!
turf/var/bestF
Yes!
2014-02-09 12:21:19 -06:00
Cheridan c5a4f25610 Merge pull request #871 from errorage/DBupdate2013-06-27
Database related bugfixes
2013-06-27 15:48:19 -07:00
errorage 1b719c2e31 Database related fixes:
- 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
2013-06-27 23:17:39 +02:00
Cael_Aislinn 4c95d55472 reverts yvarov's astar rewrite from 16/5
Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
2013-06-21 12:08:28 +10:00
Cael_Aislinn 3cbe2ce0b0 added two optimized pathfinds to replace AStar when it's called over short distances
Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
2013-06-03 18:43:14 +10:00
carnie e6c8e67c3f Minor modifications to Yvar's A* fixes:
-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.
2013-05-19 09:54:39 +01:00
Yvar 3443ee2319 A-star fixes
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.
2013-05-16 20:40:01 +10:00
Yvar 1273a75ceb Wholesale A-star replacement
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.
2013-05-15 21:23:40 +10:00
Pete Goodfellow 2a8432d8c4 Removes some redundant variables relating to SQL. Updates the config to reflect the change.
SQL errors are only displayed if SQL is enabled.
2013-04-04 16:38:24 +01:00
Pete Goodfellow 4c324fbc5c Updating the db table names as per erro's comment. 2013-03-27 17:15:03 +00:00
Pete Goodfellow dffba3c827 Apologies in advanced for cramming this all into one commit, but it's all fairly interdependent.
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.
2013-03-24 18:34:00 +00:00
baloh.matevz@gmail.com d4b0a19592 - Fixes a long standing bug in logging, which attempted to log deaths into the wrong database.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5752 316c924e-a436-60f5-8080-3fe189b3f50e
2013-02-21 01:19:53 +00:00
sieve32@gmail.com d64186ec9b -Now instead of just giving an angry message, any living mob with a client and the nuke disk that hits a transition on Z1 on them will have their momentum reversed, effectively sending them back where they came from. (Dead and clientless mobs still have the disk deleted from them)
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
2013-01-10 19:07:02 +00:00
baloh.matevz 2f57200e82 - Fixes the broken population logging
- 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
2012-11-11 05:39:09 +00:00
baloh.matevz c870d5e158 - Prayer visibility now starts on, as it should.
- 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
2012-11-07 23:49:54 +00:00
baloh.matevz abad9978b2 - Fixed the revision number not showing properly. Hopefully it's fixed for good this time, as it works off of logic, instead of line numbers.
- 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
2012-11-06 17:21:13 +00:00
elly1989@rocketmail.com b1fdee2e32 Changed some global_list stuff:
>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
2012-10-24 20:11:39 +00:00
elly1989@rocketmail.com 7b720a20b6 >Moved most of the helper procs into code/__HELPERS. If you see ANYTHING generic enough to be a helper proc just throw it in there and help purge the copypasta 5ever
>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
2012-10-24 14:39:36 +00:00
giacomand@gmail.com 66a250ec58 -Fixed Issue 1021 - Rather simple solution but it's a shame I have to do it this way.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4918 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-20 03:46:11 +00:00
baloh.matevz 266f163879 - To support the SQL based admin rank system, I added a permission assignment panel, which is accessible to the people who have the PERMISSIONS permission. This panel can be used to add new admins, remove or edit the rank of existing admins.
Screenshot:
http://www.kamletos.si/permissions%20panel.PNG

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4878 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-14 19:45:21 +00:00
giacomand@gmail.com ddd8e94784 -Walls, firelocks and glass-less airlocks now stop heat.
-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
2012-10-14 02:02:18 +00:00
giacomand@gmail.com eb68c1e510 -You can now only hear from headsets when it is on your ear slot. People around you won't be able to hear your headset anymore.
-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
2012-10-08 03:52:25 +00:00
quartz235@gmail.com a6e7c085ef Revert's cib's BS12 merge by XSI's orders
- 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
2012-09-27 02:14:21 +00:00
elly1989@rocketmail.com 9813d2bbec var/fakekey; var/ooccolor; var/sound_adminhelp moved from /client to /datum/admins. These settings will now persist through a round even through logouts.
var/stealth merged into var/fakekey as it was superfluous.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4753 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-25 13:09:43 +00:00
CIB123 a7cba9170d Fixed a problem with organ name display.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4728 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-19 18:04:35 +00:00
giacomand@gmail.com 0fbfa48217 -Added more info for admin messages in these areas:
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
2012-09-18 09:49:51 +00:00
giacomand@gmail.com 33c738de3e -Fixed an issue where you would compare your name with yourself to see if it was available.
-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
2012-09-16 05:43:27 +00:00
giacomand@gmail.com 9b78786611 -The AI can now select a name after being AIed by someone placing their brain into the core. Fixed Issue 857
-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
2012-09-12 02:53:50 +00:00
giacomand@gmail.com 384b2717b0 -Added a "landmarks_list"; the game will now check for landmarks in the list instead of the world.
-Did some optimizing to AI freelook.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4670 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-09 22:27:06 +00:00