diff --git a/SQL/feedback_schema.sql b/SQL/feedback_schema.sql
deleted file mode 100644
index 3fa0f7080dd..00000000000
--- a/SQL/feedback_schema.sql
+++ /dev/null
@@ -1,120 +0,0 @@
-CREATE TABLE `erro_admin` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `ckey` varchar(32) NOT NULL,
- `rank` varchar(32) NOT NULL DEFAULT 'Administrator',
- `level` int(2) NOT NULL DEFAULT '0',
- `flags` int(16) NOT NULL DEFAULT '0',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
-
-CREATE TABLE `erro_admin_log` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `datetime` datetime NOT NULL,
- `adminckey` varchar(32) NOT NULL,
- `adminip` varchar(18) NOT NULL,
- `log` text NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
-
-CREATE TABLE `erro_ban` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `bantime` datetime NOT NULL,
- `serverip` varchar(32) NOT NULL,
- `bantype` varchar(32) NOT NULL,
- `reason` text NOT NULL,
- `job` varchar(32) DEFAULT NULL,
- `duration` int(11) NOT NULL,
- `rounds` int(11) DEFAULT NULL,
- `expiration_time` datetime NOT NULL,
- `ckey` varchar(32) NOT NULL,
- `computerid` varchar(32) NOT NULL,
- `ip` varchar(32) NOT NULL,
- `a_ckey` varchar(32) NOT NULL,
- `a_computerid` varchar(32) NOT NULL,
- `a_ip` varchar(32) NOT NULL,
- `who` text NOT NULL,
- `adminwho` text NOT NULL,
- `edits` text,
- `unbanned` tinyint(1) DEFAULT NULL,
- `unbanned_datetime` datetime DEFAULT NULL,
- `unbanned_ckey` varchar(32) DEFAULT NULL,
- `unbanned_computerid` varchar(32) DEFAULT NULL,
- `unbanned_ip` varchar(32) DEFAULT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
-
-CREATE TABLE `erro_feedback` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `time` datetime NOT NULL,
- `round_id` int(8) NOT NULL,
- `var_name` varchar(32) NOT NULL,
- `var_value` int(16) DEFAULT NULL,
- `details` text,
- PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
-
-CREATE TABLE `erro_player` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `ckey` varchar(32) NOT NULL,
- `firstseen` datetime NOT NULL,
- `lastseen` datetime NOT NULL,
- `ip` varchar(18) NOT NULL,
- `computerid` varchar(32) NOT NULL,
- `lastadminrank` varchar(32) NOT NULL DEFAULT 'Player',
- PRIMARY KEY (`id`),
- UNIQUE KEY `ckey` (`ckey`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
-
-CREATE TABLE `erro_poll_option` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `pollid` int(11) NOT NULL,
- `text` varchar(255) NOT NULL,
- `percentagecalc` tinyint(1) NOT NULL DEFAULT '1',
- `minval` int(3) DEFAULT NULL,
- `maxval` int(3) DEFAULT NULL,
- `descmin` varchar(32) DEFAULT NULL,
- `descmid` varchar(32) DEFAULT NULL,
- `descmax` varchar(32) DEFAULT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
-
-CREATE TABLE `erro_poll_question` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `polltype` varchar(16) NOT NULL DEFAULT 'OPTION',
- `starttime` datetime NOT NULL,
- `endtime` datetime NOT NULL,
- `question` varchar(255) NOT NULL,
- `adminonly` tinyint(1) DEFAULT '0',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
-
-CREATE TABLE `erro_poll_textreply` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `datetime` datetime NOT NULL,
- `pollid` int(11) NOT NULL,
- `ckey` varchar(32) NOT NULL,
- `ip` varchar(18) NOT NULL,
- `replytext` text NOT NULL,
- `adminrank` varchar(32) NOT NULL DEFAULT 'Player',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
-
-CREATE TABLE `erro_poll_vote` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `datetime` datetime NOT NULL,
- `pollid` int(11) NOT NULL,
- `optionid` int(11) NOT NULL,
- `ckey` varchar(255) NOT NULL,
- `ip` varchar(16) NOT NULL,
- `adminrank` varchar(32) NOT NULL,
- `rating` int(2) DEFAULT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
-
-CREATE TABLE `erro_privacy` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `datetime` datetime NOT NULL,
- `ckey` varchar(32) NOT NULL,
- `option` varchar(128) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
\ No newline at end of file
diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql
index 2c3742b81df..ea9ace77c6a 100644
--- a/SQL/tgstation_schema.sql
+++ b/SQL/tgstation_schema.sql
@@ -1,100 +1,303 @@
-SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
-SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
-SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
+CREATE DATABASE IF NOT EXISTS `feedback` /*!40100 DEFAULT CHARACTER SET latin1 */;
+USE `feedback`;
-CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
-CREATE SCHEMA IF NOT EXISTS `tgstation` DEFAULT CHARACTER SET latin1 ;
-USE `mydb` ;
-USE `tgstation` ;
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--- -----------------------------------------------------
--- Table `tgstation`.`death`
--- -----------------------------------------------------
-CREATE TABLE IF NOT EXISTS `tgstation`.`death` (
- `id` INT(11) NOT NULL AUTO_INCREMENT ,
- `pod` TEXT NOT NULL COMMENT 'Place of death' ,
- `coord` TEXT NOT NULL COMMENT 'X, Y, Z POD' ,
- `tod` DATETIME NOT NULL COMMENT 'Time of death' ,
- `job` TEXT NOT NULL ,
- `special` TEXT NOT NULL ,
- `name` TEXT NOT NULL ,
- `byondkey` TEXT NOT NULL ,
- `laname` TEXT NOT NULL COMMENT 'Last attacker name' ,
- `lakey` TEXT NOT NULL COMMENT 'Last attacker key' ,
- `gender` TEXT NOT NULL ,
- `bruteloss` INT(11) NOT NULL ,
- `brainloss` INT(11) NOT NULL ,
- `fireloss` INT(11) NOT NULL ,
- `oxyloss` INT(11) NOT NULL ,
- PRIMARY KEY (`id`) )
-ENGINE = MyISAM
-AUTO_INCREMENT = 3409
-DEFAULT CHARACTER SET = latin1;
+--
+-- Table structure for table `erro_admin`
+--
+DROP TABLE IF EXISTS `erro_admin`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_admin` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `ckey` varchar(32) NOT NULL,
+ `rank` varchar(32) NOT NULL DEFAULT 'Administrator',
+ `level` int(2) NOT NULL DEFAULT '0',
+ `flags` int(16) NOT NULL DEFAULT '0',
+ `email` varchar(45) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=77 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
--- -----------------------------------------------------
--- Table `tgstation`.`karma`
--- -----------------------------------------------------
-CREATE TABLE IF NOT EXISTS `tgstation`.`karma` (
- `id` INT(11) NOT NULL AUTO_INCREMENT ,
- `spendername` TEXT NOT NULL ,
- `spenderkey` TEXT NOT NULL ,
- `receivername` TEXT NOT NULL ,
- `receiverkey` TEXT NOT NULL ,
- `receiverrole` TEXT NOT NULL ,
- `receiverspecial` TEXT NOT NULL ,
- `isnegative` TINYINT(1) NOT NULL ,
- `spenderip` TEXT NOT NULL ,
- `time` DATETIME NOT NULL ,
- PRIMARY KEY (`id`) )
-ENGINE = MyISAM
-AUTO_INCREMENT = 943
-DEFAULT CHARACTER SET = latin1;
+--
+-- Table structure for table `erro_admin_log`
+--
+DROP TABLE IF EXISTS `erro_admin_log`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_admin_log` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `datetime` datetime NOT NULL,
+ `adminckey` varchar(32) NOT NULL,
+ `adminip` varchar(18) NOT NULL,
+ `log` text NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=560 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
--- -----------------------------------------------------
--- Table `tgstation`.`karmatotals`
--- -----------------------------------------------------
-CREATE TABLE IF NOT EXISTS `tgstation`.`karmatotals` (
- `id` INT(11) NOT NULL AUTO_INCREMENT ,
- `byondkey` TEXT NOT NULL ,
- `karma` INT(11) NOT NULL ,
- PRIMARY KEY (`id`) )
-ENGINE = MyISAM
-AUTO_INCREMENT = 244
-DEFAULT CHARACTER SET = latin1;
+--
+-- Table structure for table `erro_ban`
+--
+DROP TABLE IF EXISTS `erro_ban`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_ban` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `bantime` datetime NOT NULL,
+ `serverip` varchar(32) NOT NULL,
+ `bantype` varchar(32) NOT NULL,
+ `reason` text NOT NULL,
+ `job` varchar(32) DEFAULT NULL,
+ `duration` int(11) NOT NULL,
+ `rounds` int(11) DEFAULT NULL,
+ `expiration_time` datetime NOT NULL,
+ `ckey` varchar(32) NOT NULL,
+ `computerid` varchar(32) NOT NULL,
+ `ip` varchar(32) NOT NULL,
+ `a_ckey` varchar(32) NOT NULL,
+ `a_computerid` varchar(32) NOT NULL,
+ `a_ip` varchar(32) NOT NULL,
+ `who` text NOT NULL,
+ `adminwho` text NOT NULL,
+ `edits` text,
+ `unbanned` int(2) DEFAULT NULL,
+ `unbanned_datetime` datetime DEFAULT NULL,
+ `unbanned_ckey` varchar(32) DEFAULT NULL,
+ `unbanned_computerid` varchar(32) DEFAULT NULL,
+ `unbanned_ip` varchar(32) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=7755 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
--- -----------------------------------------------------
--- Table `tgstation`.`library`
--- -----------------------------------------------------
-CREATE TABLE IF NOT EXISTS `tgstation`.`library` (
- `id` INT(11) NOT NULL AUTO_INCREMENT ,
- `author` TEXT NOT NULL ,
- `title` TEXT NOT NULL ,
- `content` TEXT NOT NULL ,
- `category` TEXT NOT NULL ,
- PRIMARY KEY (`id`) )
-ENGINE = MyISAM
-AUTO_INCREMENT = 184
-DEFAULT CHARACTER SET = latin1;
+--
+-- Table structure for table `erro_connection_log`
+--
+DROP TABLE IF EXISTS `erro_connection_log`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_connection_log` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `datetime` datetime DEFAULT NULL,
+ `serverip` varchar(45) DEFAULT NULL,
+ `ckey` varchar(45) DEFAULT NULL,
+ `ip` varchar(18) DEFAULT NULL,
+ `computerid` varchar(45) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=311192 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
--- -----------------------------------------------------
--- Table `tgstation`.`population`
--- -----------------------------------------------------
-CREATE TABLE IF NOT EXISTS `tgstation`.`population` (
- `id` INT(11) NOT NULL AUTO_INCREMENT ,
- `playercount` INT(11) NULL DEFAULT NULL ,
- `admincount` INT(11) NULL DEFAULT NULL ,
- `time` DATETIME NOT NULL ,
- PRIMARY KEY (`id`) )
-ENGINE = MyISAM
-AUTO_INCREMENT = 2544
-DEFAULT CHARACTER SET = latin1;
+--
+-- Table structure for table `erro_death`
+--
+DROP TABLE IF EXISTS `erro_death`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_death` (
+ `id` int(11) NOT NULL DEFAULT '0',
+ `pod` text NOT NULL COMMENT 'Place of death',
+ `coord` text NOT NULL COMMENT 'X, Y, Z POD',
+ `tod` datetime NOT NULL COMMENT 'Time of death',
+ `job` text NOT NULL,
+ `special` text NOT NULL,
+ `name` text NOT NULL,
+ `byondkey` text NOT NULL,
+ `laname` text NOT NULL COMMENT 'Last attacker name',
+ `lakey` text NOT NULL COMMENT 'Last attacker key',
+ `gender` text NOT NULL,
+ `bruteloss` int(11) NOT NULL,
+ `brainloss` int(11) NOT NULL,
+ `fireloss` int(11) NOT NULL,
+ `oxyloss` int(11) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `erro_feedback`
+--
-SET SQL_MODE=@OLD_SQL_MODE;
-SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
-SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
+DROP TABLE IF EXISTS `erro_feedback`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_feedback` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `time` datetime NOT NULL,
+ `round_id` int(8) NOT NULL,
+ `var_name` varchar(32) NOT NULL,
+ `var_value` int(16) DEFAULT NULL,
+ `details` text,
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM AUTO_INCREMENT=456134 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `erro_legacy_population`
+--
+
+DROP TABLE IF EXISTS `erro_legacy_population`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_legacy_population` (
+ `id` int(11) NOT NULL DEFAULT '0',
+ `playercount` int(11) DEFAULT NULL,
+ `admincount` int(11) DEFAULT NULL,
+ `time` datetime NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `erro_library`
+--
+
+DROP TABLE IF EXISTS `erro_library`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_library` (
+ `id` int(11) NOT NULL DEFAULT '0',
+ `author` text NOT NULL,
+ `title` text NOT NULL,
+ `content` text NOT NULL,
+ `category` text NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `erro_player`
+--
+
+DROP TABLE IF EXISTS `erro_player`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_player` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `ckey` varchar(32) NOT NULL,
+ `firstseen` datetime NOT NULL,
+ `lastseen` datetime NOT NULL,
+ `ip` varchar(18) NOT NULL,
+ `computerid` varchar(32) NOT NULL,
+ `lastadminrank` varchar(32) NOT NULL DEFAULT 'Player',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `ckey` (`ckey`)
+) ENGINE=InnoDB AUTO_INCREMENT=8849 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `erro_poll_option`
+--
+
+DROP TABLE IF EXISTS `erro_poll_option`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_poll_option` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `pollid` int(11) NOT NULL,
+ `text` varchar(255) NOT NULL,
+ `percentagecalc` tinyint(1) NOT NULL DEFAULT '1',
+ `minval` int(3) DEFAULT NULL,
+ `maxval` int(3) DEFAULT NULL,
+ `descmin` varchar(32) DEFAULT NULL,
+ `descmid` varchar(32) DEFAULT NULL,
+ `descmax` varchar(32) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=330 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `erro_poll_question`
+--
+
+DROP TABLE IF EXISTS `erro_poll_question`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_poll_question` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `polltype` varchar(16) NOT NULL DEFAULT 'OPTION',
+ `starttime` datetime NOT NULL,
+ `endtime` datetime NOT NULL,
+ `question` varchar(255) NOT NULL,
+ `adminonly` tinyint(1) DEFAULT '0',
+ `multiplechoiceoptions` int(2) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=62 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `erro_poll_textreply`
+--
+
+DROP TABLE IF EXISTS `erro_poll_textreply`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_poll_textreply` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `datetime` datetime NOT NULL,
+ `pollid` int(11) NOT NULL,
+ `ckey` varchar(32) NOT NULL,
+ `ip` varchar(18) NOT NULL,
+ `replytext` text NOT NULL,
+ `adminrank` varchar(32) NOT NULL DEFAULT 'Player',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=144 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `erro_poll_vote`
+--
+
+DROP TABLE IF EXISTS `erro_poll_vote`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_poll_vote` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `datetime` datetime NOT NULL,
+ `pollid` int(11) NOT NULL,
+ `optionid` int(11) NOT NULL,
+ `ckey` varchar(255) NOT NULL,
+ `ip` varchar(16) NOT NULL,
+ `adminrank` varchar(32) NOT NULL,
+ `rating` int(2) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=15753 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `erro_privacy`
+--
+
+DROP TABLE IF EXISTS `erro_privacy`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `erro_privacy` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `datetime` datetime NOT NULL,
+ `ckey` varchar(32) NOT NULL,
+ `option` varchar(128) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=5011 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2013-03-24 18:02:35
\ No newline at end of file
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index bc253e2bdf6..57d16d68032 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -29,23 +29,12 @@
var/vote_no_default = 0 // vote does not default to nochange/norestart (tbi)
var/vote_no_dead = 0 // dead people can't vote (tbi)
var/del_new_on_log = 1 // del's new players if they log before they spawn in
- var/feature_object_spell_system = 0 //spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard
- var/traitor_scaling = 0 //if amount of traitors scales based on amount of players
- var/protect_roles_from_antagonist = 0// If security and such can be tratior/cult/other
- var/continous_rounds = 0 // Gamemodes which end instantly will instead keep on going until the round ends by escape shuttle or nuke.
var/allow_Metadata = 0 // Metadata is supported.
var/popup_admin_pm = 0 //adminPMs to non-admins show in a pop-up 'reply' window when set to 1.
var/Ticklag = 0.9
var/Tickcomp = 0
var/allow_holidays = 0 //toggles whether holiday-specific content should be used
- var/list/mode_names = list()
- var/list/modes = list() // allowed modes
- var/list/votable_modes = list() // votable modes
- var/list/probabilities = list() // relative probability of each mode
- var/humans_need_surnames = 0
- var/allow_random_events = 0 // enables random events mid-round when set to 1
- var/allow_ai = 1 // allow ai job
var/hostedby = null
var/respawn = 1
var/guest_jobban = 1
@@ -61,7 +50,27 @@
var/wikiurl
var/forumurl
- //Alert level description
+ var/forbid_singulo_possession = 0
+ var/useircbot = 0
+
+ var/admin_legacy_system = 0 //Defines whether the server uses the legacy admin system with admins.txt or the SQL system. Config option in config.txt
+ var/ban_legacy_system = 0 //Defines whether the server uses the legacy banning system with the files in /data or the SQL system. Config option in config.txt
+ var/use_age_restriction_for_jobs = 0 //Do jobs use account age restrictions? --requires database
+
+ //game_options.txt configs
+ var/list/mode_names = list()
+ var/list/modes = list() // allowed modes
+ var/list/votable_modes = list() // votable modes
+ var/list/probabilities = list() // relative probability of each mode
+
+ var/humans_need_surnames = 0
+ var/allow_random_events = 0 // enables random events mid-round when set to 1
+ var/allow_ai = 1 // allow ai job
+
+ var/traitor_scaling = 0 //if amount of traitors scales based on amount of players
+ var/protect_roles_from_antagonist = 0// If security and such can be tratior/cult/other
+ var/continous_rounds = 0 // Gamemodes which end instantly will instead keep on going until the round ends by escape shuttle or nuke.
+
var/alert_desc_green = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced."
var/alert_desc_blue_upto = "The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted."
var/alert_desc_blue_downto = "The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed."
@@ -69,11 +78,6 @@
var/alert_desc_red_downto = "The self-destruct mechanism has been deactivated, there is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised."
var/alert_desc_delta = "The station's self-destruct mechanism has been engaged. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill."
- var/forbid_singulo_possession = 0
- var/useircbot = 0
-
- //game_options.txt configs
-
var/health_threshold_crit = 0
var/health_threshold_dead = -100
@@ -94,12 +98,7 @@
var/slime_delay = 0
var/animal_delay = 0
- var/admin_legacy_system = 0 //Defines whether the server uses the legacy admin system with admins.txt or the SQL system. Config option in config.txt
- var/ban_legacy_system = 0 //Defines whether the server uses the legacy banning system with the files in /data or the SQL system. Config option in config.txt
- var/use_age_restriction_for_jobs = 0 //Do jobs use account age restrictions? --requires database
-
var/use_recursive_explosions //Defines whether the server uses recursive or circular explosions.
- var/roundstart_station_randomization = 1 //Enable this to have some randomization happen on the station.
var/assistant_maint = 0 //Do assistants get maint access?
var/gateway_delay = 18000 //How long the gateway takes before it activates. Default is half an hour.
@@ -108,21 +107,21 @@
/datum/configuration/New()
var/list/L = typesof(/datum/game_mode) - /datum/game_mode
- for (var/T in L)
+ for(var/T in L)
// I wish I didn't have to instance the game modes in order to look up
// their information, but it is the only way (at least that I know of).
var/datum/game_mode/M = new T()
- if (M.config_tag)
+ if(M.config_tag)
if(!(M.config_tag in modes)) // ensure each mode is added only once
diary << "Adding game mode [M.name] ([M.config_tag]) to configuration."
- src.modes += M.config_tag
- src.mode_names[M.config_tag] = M.name
- src.probabilities[M.config_tag] = M.probability
- if (M.votable)
- src.votable_modes += M.config_tag
+ modes += M.config_tag
+ mode_names[M.config_tag] = M.name
+ probabilities[M.config_tag] = M.probability
+ if(M.votable)
+ votable_modes += M.config_tag
del(M)
- src.votable_modes += "secret"
+ votable_modes += "secret"
/datum/configuration/proc/load(filename, type = "config") //the type can also be game_options, in which case it uses a different switch. not making it separate to not copypaste code - Urist
var/list/Lines = file2list(filename)
@@ -131,248 +130,126 @@
if(!t) continue
t = trim(t)
- if (length(t) == 0)
+ if(length(t) == 0)
continue
- else if (copytext(t, 1, 2) == "#")
+ else if(copytext(t, 1, 2) == "#")
continue
var/pos = findtext(t, " ")
var/name = null
var/value = null
- if (pos)
+ if(pos)
name = lowertext(copytext(t, 1, pos))
value = copytext(t, pos + 1)
else
name = lowertext(t)
- if (!name)
+ if(!name)
continue
if(type == "config")
- switch (name)
- if ("admin_legacy_system")
+ switch(name)
+ if("admin_legacy_system")
config.admin_legacy_system = 1
-
- if ("ban_legacy_system")
+ if("ban_legacy_system")
config.ban_legacy_system = 1
-
- if ("use_age_restriction_for_jobs")
+ if("use_age_restriction_for_jobs")
config.use_age_restriction_for_jobs = 1
-
- if ("jobs_have_minimal_access")
- config.jobs_have_minimal_access = 1
-
- if ("use_recursive_explosions")
- use_recursive_explosions = 1
-
- if ("log_ooc")
+ if("log_ooc")
config.log_ooc = 1
-
- if ("log_access")
+ if("log_access")
config.log_access = 1
-
- if ("sql_enabled")
- config.sql_enabled = 1
-
- if ("log_say")
+ if("log_say")
config.log_say = 1
-
- if ("log_admin")
+ if("log_admin")
config.log_admin = 1
-
- if ("log_prayer")
+ if("log_prayer")
config.log_prayer = 1
-
- if ("log_law")
+ if("log_law")
config.log_law = 1
-
- if ("log_game")
+ if("log_game")
config.log_game = 1
-
- if ("log_vote")
+ if("log_vote")
config.log_vote = 1
-
- if ("log_whisper")
+ if("log_whisper")
config.log_whisper = 1
-
- if ("log_attack")
+ if("log_attack")
config.log_attack = 1
-
- if ("log_emote")
+ if("log_emote")
config.log_emote = 1
-
- if ("log_adminchat")
+ if("log_adminchat")
config.log_adminchat = 1
-
- if ("log_adminwarn")
+ if("log_adminwarn")
config.log_adminwarn = 1
-
- if ("log_pda")
+ if("log_pda")
config.log_pda = 1
-
- if ("log_hrefs")
+ if("log_hrefs")
config.log_hrefs = 1
-
if("allow_admin_ooccolor")
config.allow_admin_ooccolor = 1
-
- if ("allow_vote_restart")
+ if("allow_vote_restart")
config.allow_vote_restart = 1
-
- if ("allow_vote_mode")
+ if("allow_vote_mode")
config.allow_vote_mode = 1
-
- if ("allow_admin_jump")
+ if("allow_admin_jump")
config.allow_admin_jump = 1
-
if("allow_admin_rev")
config.allow_admin_rev = 1
-
- if ("allow_admin_spawning")
+ if("allow_admin_spawning")
config.allow_admin_spawning = 1
-
- if ("no_dead_vote")
+ if("no_dead_vote")
config.vote_no_dead = 1
-
- if ("default_no_vote")
+ if("default_no_vote")
config.vote_no_default = 1
-
- if ("vote_delay")
+ if("vote_delay")
config.vote_delay = text2num(value)
-
- if ("vote_period")
+ if("vote_period")
config.vote_period = text2num(value)
-
- if ("allow_ai")
- config.allow_ai = 1
-
- if ("norespawn")
+ if("norespawn")
config.respawn = 0
-
- if ("servername")
+ if("servername")
config.server_name = value
-
- if ("serversuffix")
+ if("serversuffix")
config.server_suffix = 1
-
- if ("hostedby")
+ if("hostedby")
config.hostedby = value
-
- if ("server")
+ if("server")
config.server = value
-
- if ("banappeals")
+ if("banappeals")
config.banappeals = value
-
- if ("wikiurl")
+ if("wikiurl")
config.wikiurl = value
-
- if ("forumurl")
+ if("forumurl")
config.forumurl = value
-
- if ("guest_jobban")
+ if("guest_jobban")
config.guest_jobban = 1
-
- if ("guest_ban")
+ if("guest_ban")
guests_allowed = 0
-
- if ("usewhitelist")
+ if("usewhitelist")
config.usewhitelist = 1
-
- if ("feature_object_spell_system")
- config.feature_object_spell_system = 1
-
- if ("allow_metadata")
+ if("allow_metadata")
config.allow_Metadata = 1
-
- if ("traitor_scaling")
- config.traitor_scaling = 1
-
- if("protect_roles_from_antagonist")
- config.protect_roles_from_antagonist = 1
-
- if ("probability")
- var/prob_pos = findtext(value, " ")
- var/prob_name = null
- var/prob_value = null
-
- if (prob_pos)
- prob_name = lowertext(copytext(value, 1, prob_pos))
- prob_value = copytext(value, prob_pos + 1)
- if (prob_name in config.modes)
- config.probabilities[prob_name] = text2num(prob_value)
- else
- diary << "Unknown game mode probability configuration definition: [prob_name]."
- else
- diary << "Incorrect probability configuration definition: [prob_name] [prob_value]."
-
- if("allow_random_events")
- config.allow_random_events = 1
-
if("kick_inactive")
config.kick_inactive = 1
-
if("load_jobs_from_txt")
load_jobs_from_txt = 1
-
- if("alert_red_upto")
- config.alert_desc_red_upto = value
-
- if("alert_red_downto")
- config.alert_desc_red_downto = value
-
- if("alert_blue_downto")
- config.alert_desc_blue_downto = value
-
- if("alert_blue_upto")
- config.alert_desc_blue_upto = value
-
- if("alert_green")
- config.alert_desc_green = value
-
- if("alert_delta")
- config.alert_desc_delta = value
-
if("forbid_singulo_possession")
forbid_singulo_possession = 1
-
if("popup_admin_pm")
config.popup_admin_pm = 1
-
if("allow_holidays")
config.allow_holidays = 1
-
if("useircbot")
useircbot = 1
-
if("ticklag")
Ticklag = text2num(value)
-
if("tickcomp")
Tickcomp = 1
-
- if("humans_need_surnames")
- humans_need_surnames = 1
-
if("tor_ban")
ToRban = 1
-
if("automute_on")
automute_on = 1
-
- if("assistant_maint")
- config.assistant_maint = 1
-
- if("gateway_delay")
- config.gateway_delay = text2num(value)
-
- if("continuous_rounds")
- config.continous_rounds = 1
-
- if("ghost_interaction")
- config.ghost_interaction = 1
-
else
diary << "Unknown setting in configuration: '[name]'"
@@ -408,6 +285,55 @@
config.slime_delay = value
if("animal_delay")
config.animal_delay = value
+ if("alert_red_upto")
+ config.alert_desc_red_upto = value
+ if("alert_red_downto")
+ config.alert_desc_red_downto = value
+ if("alert_blue_downto")
+ config.alert_desc_blue_downto = value
+ if("alert_blue_upto")
+ config.alert_desc_blue_upto = value
+ if("alert_green")
+ config.alert_desc_green = value
+ if("alert_delta")
+ config.alert_desc_delta = value
+ if("assistant_maint")
+ config.assistant_maint = 1
+ if("gateway_delay")
+ config.gateway_delay = text2num(value)
+ if("continuous_rounds")
+ config.continous_rounds = 1
+ if("ghost_interaction")
+ config.ghost_interaction = 1
+ if("traitor_scaling")
+ config.traitor_scaling = 1
+ if("protect_roles_from_antagonist")
+ config.protect_roles_from_antagonist = 1
+ if("probability")
+ var/prob_pos = findtext(value, " ")
+ var/prob_name = null
+ var/prob_value = null
+
+ if(prob_pos)
+ prob_name = lowertext(copytext(value, 1, prob_pos))
+ prob_value = copytext(value, prob_pos + 1)
+ if(prob_name in config.modes)
+ config.probabilities[prob_name] = text2num(prob_value)
+ else
+ diary << "Unknown game mode probability configuration definition: [prob_name]."
+ else
+ diary << "Incorrect probability configuration definition: [prob_name] [prob_value]."
+
+ if("allow_random_events")
+ config.allow_random_events = 1
+ if("jobs_have_minimal_access")
+ config.jobs_have_minimal_access = 1
+ if("use_recursive_explosions")
+ use_recursive_explosions = 1
+ if("humans_need_surnames")
+ humans_need_surnames = 1
+ if("allow_ai")
+ config.allow_ai = 1
else
diary << "Unknown setting in configuration: '[name]'"
@@ -417,110 +343,64 @@
if(!t) continue
t = trim(t)
- if (length(t) == 0)
+ if(length(t) == 0)
continue
- else if (copytext(t, 1, 2) == "#")
+ else if(copytext(t, 1, 2) == "#")
continue
var/pos = findtext(t, " ")
var/name = null
var/value = null
- if (pos)
+ if(pos)
name = lowertext(copytext(t, 1, pos))
value = copytext(t, pos + 1)
else
name = lowertext(t)
- if (!name)
+ if(!name)
continue
- switch (name)
- if ("address")
+ switch(name)
+ if("sql_enabled")
+ config.sql_enabled = 1
+ if("address")
sqladdress = value
- if ("port")
+ if("port")
sqlport = value
- if ("database")
- sqldb = value
- if ("login")
- sqllogin = value
- if ("password")
- sqlpass = value
- if ("feedback_database")
+ if("feedback_database")
sqlfdbkdb = value
- if ("feedback_login")
+ if("feedback_login")
sqlfdbklogin = value
- if ("feedback_password")
+ if("feedback_password")
sqlfdbkpass = value
- if ("enable_stat_tracking")
+ if("enable_stat_tracking")
sqllogging = 1
else
diary << "Unknown setting in configuration: '[name]'"
-/datum/configuration/proc/loadforumsql(filename) // -- TLE
- var/list/Lines = file2list(filename)
- for(var/t in Lines)
- if(!t) continue
-
- t = trim(t)
- if (length(t) == 0)
- continue
- else if (copytext(t, 1, 2) == "#")
- continue
-
- var/pos = findtext(t, " ")
- var/name = null
- var/value = null
-
- if (pos)
- name = lowertext(copytext(t, 1, pos))
- value = copytext(t, pos + 1)
- else
- name = lowertext(t)
-
- if (!name)
- continue
-
- switch (name)
- if ("address")
- forumsqladdress = value
- if ("port")
- forumsqlport = value
- if ("database")
- forumsqldb = value
- if ("login")
- forumsqllogin = value
- if ("password")
- forumsqlpass = value
- if ("activatedgroup")
- forum_activated_group = value
- if ("authenticatedgroup")
- forum_authenticated_group = value
- else
- diary << "Unknown setting in configuration: '[name]'"
-
/datum/configuration/proc/pick_mode(mode_name)
// I wish I didn't have to instance the game modes in order to look up
// their information, but it is the only way (at least that I know of).
- for (var/T in (typesof(/datum/game_mode) - /datum/game_mode))
+ for(var/T in (typesof(/datum/game_mode) - /datum/game_mode))
var/datum/game_mode/M = new T()
- if (M.config_tag && M.config_tag == mode_name)
+ if(M.config_tag && M.config_tag == mode_name)
return M
del(M)
return new /datum/game_mode/extended()
/datum/configuration/proc/get_runnable_modes()
var/list/datum/game_mode/runnable_modes = new
- for (var/T in (typesof(/datum/game_mode) - /datum/game_mode))
+ for(var/T in (typesof(/datum/game_mode) - /datum/game_mode))
var/datum/game_mode/M = new T()
//world << "DEBUG: [T], tag=[M.config_tag], prob=[probabilities[M.config_tag]]"
- if (!(M.config_tag in modes))
+ if(!(M.config_tag in modes))
del(M)
continue
- if (probabilities[M.config_tag]<=0)
+ if(probabilities[M.config_tag]<=0)
del(M)
continue
- if (M.can_start())
+ if(M.can_start())
runnable_modes[M] = probabilities[M.config_tag]
//world << "DEBUG: runnable_mode\[[runnable_modes.len]\] = [M.config_tag]"
return runnable_modes
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 563114c6ebe..10cb4527844 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -625,7 +625,7 @@ datum/mind
if(src in ticker.mode.wizards)
ticker.mode.wizards -= src
special_role = null
- current.spellremove(current, config.feature_object_spell_system? "object":"verb")
+ current.spellremove(current)
current << "\red You have been brainwashed! You are no longer a wizard!"
log_admin("[key_name_admin(usr)] has de-wizard'ed [current].")
if("wizard")
diff --git a/code/defines/procs/statistics.dm b/code/defines/procs/statistics.dm
index 6011c928e90..a078d1a5538 100644
--- a/code/defines/procs/statistics.dm
+++ b/code/defines/procs/statistics.dm
@@ -10,7 +10,7 @@ proc/sql_poll_players()
log_game("SQL ERROR during player polling. Failed to connect.")
else
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
- var/DBQuery/query = dbcon_old.NewQuery("INSERT INTO population (playercount, time) VALUES ([playercount], '[sqltime]')")
+ var/DBQuery/query = dbcon.NewQuery("INSERT INTO population (playercount, time) VALUES ([playercount], '[sqltime]')")
if(!query.Execute())
var/err = query.ErrorMsg()
log_game("SQL ERROR during player polling. Error : \[[err]\]\n")
@@ -25,7 +25,7 @@ proc/sql_poll_admins()
log_game("SQL ERROR during admin polling. Failed to connect.")
else
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
- var/DBQuery/query = dbcon_old.NewQuery("INSERT INTO population (admincount, time) VALUES ([admincount], '[sqltime]')")
+ var/DBQuery/query = dbcon.NewQuery("INSERT INTO population (admincount, time) VALUES ([admincount], '[sqltime]')")
if(!query.Execute())
var/err = query.ErrorMsg()
log_game("SQL ERROR during admin polling. Error : \[[err]\]\n")
@@ -34,6 +34,7 @@ proc/sql_report_round_start()
// TODO
if(!sqllogging)
return
+
proc/sql_report_round_end()
// TODO
if(!sqllogging)
@@ -64,11 +65,11 @@ proc/sql_report_death(var/mob/living/carbon/human/H)
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
var/coord = "[H.x], [H.y], [H.z]"
//world << "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()])"
- establish_old_db_connection()
- if(!dbcon_old.IsConnected())
+ establish_db_connection()
+ if(!dbcon.IsConnected())
log_game("SQL ERROR during death reporting. Failed to connect.")
else
- var/DBQuery/query = dbcon_old.NewQuery("INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.getBruteLoss()], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()], '[coord]')")
+ var/DBQuery/query = dbcon.NewQuery("INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.getBruteLoss()], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()], '[coord]')")
if(!query.Execute())
var/err = query.ErrorMsg()
log_game("SQL ERROR during death reporting. Error : \[[err]\]\n")
diff --git a/code/global.dm b/code/global.dm
index 4735dea2be2..b5b4017d998 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -191,25 +191,10 @@ var/sqlfdbkpass = ""
var/sqllogging = 0 // Should we log deaths, population stats, etc?
-
-
- // Forum MySQL configuration (for use with forum account/key authentication)
- // These are all default values that will load should the forumdbconfig.txt
- // file fail to read for whatever reason.
-
-var/forumsqladdress = "localhost"
-var/forumsqlport = "3306"
-var/forumsqldb = "tgstation"
-var/forumsqllogin = "root"
-var/forumsqlpass = ""
-var/forum_activated_group = "2"
-var/forum_authenticated_group = "10"
-
// For FTP requests. (i.e. downloading runtime logs.)
// However it'd be ok to use for accessing attack logs and such too, which are even laggier.
var/fileaccess_timer = 0
//Database connections
//A connection is established on world creation. Ideally, the connection dies when the server restarts (After feedback logging.).
-var/DBConnection/dbcon = new() //Feedback database (New database)
-var/DBConnection/dbcon_old = new() //Tgstation database (Old database) - See the files in the SQL folder for information what goes where.
\ No newline at end of file
+var/DBConnection/dbcon = new() //Feedback database (New database)
\ No newline at end of file
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index 8203f8a1411..fcec82e3775 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -43,8 +43,8 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
dat += "Filter by Author: [author]
"
dat += "\[Start Search\]
"
if(1)
- establish_old_db_connection()
- if(!dbcon_old.IsConnected())
+ establish_db_connection()
+ if(!dbcon.IsConnected())
dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance.
"
else if(!SQLquery)
dat += "ERROR: Malformed search request. Please contact your system administrator for assistance.
"
@@ -52,7 +52,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
dat += "
"
dat += "| AUTHOR | TITLE | CATEGORY | SS13BN |
"
- var/DBQuery/query = dbcon_old.NewQuery(SQLquery)
+ var/DBQuery/query = dbcon.NewQuery(SQLquery)
query.Execute()
while(query.NextRow())
@@ -193,15 +193,15 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
dat += "(Return to main menu)
"
if(4)
dat += "External Archive
"
- establish_old_db_connection()
- if(!dbcon_old.IsConnected())
+ establish_db_connection()
+ if(!dbcon.IsConnected())
dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance."
else
dat += "(Order book by SS13BN)
"
dat += ""
dat += "| AUTHOR | TITLE | CATEGORY | |
"
- var/DBQuery/query = dbcon_old.NewQuery("SELECT id, author, title, category FROM library")
+ var/DBQuery/query = dbcon.NewQuery("SELECT id, author, title, category FROM library")
query.Execute()
while(query.NextRow())
@@ -337,8 +337,8 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
if(scanner.cache)
var/choice = input("Are you certain you wish to upload this title to the Archive?") in list("Confirm", "Abort")
if(choice == "Confirm")
- establish_old_db_connection()
- if(!dbcon_old.IsConnected())
+ establish_db_connection()
+ if(!dbcon.IsConnected())
alert("Connection to Archive has been severed. Aborting.")
else
/*
@@ -351,7 +351,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
var/sqlauthor = sanitizeSQL(scanner.cache.author)
var/sqlcontent = sanitizeSQL(scanner.cache.dat)
var/sqlcategory = sanitizeSQL(upload_category)
- var/DBQuery/query = dbcon_old.NewQuery("INSERT INTO library (author, title, content, category) VALUES ('[sqlauthor]', '[sqltitle]', '[sqlcontent]', '[sqlcategory]')")
+ var/DBQuery/query = dbcon.NewQuery("INSERT INTO library (author, title, content, category) VALUES ('[sqlauthor]', '[sqltitle]', '[sqlcontent]', '[sqlcategory]')")
if(!query.Execute())
usr << query.ErrorMsg()
else
@@ -360,8 +360,8 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
if(href_list["targetid"])
var/sqlid = sanitizeSQL(href_list["targetid"])
- establish_old_db_connection()
- if(!dbcon_old.IsConnected())
+ establish_db_connection()
+ if(!dbcon.IsConnected())
alert("Connection to Archive has been severed. Aborting.")
if(bibledelay)
for (var/mob/V in hearers(src))
@@ -370,7 +370,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
bibledelay = 1
spawn(60)
bibledelay = 0
- var/DBQuery/query = dbcon_old.NewQuery("SELECT * FROM library WHERE id=[sqlid]")
+ var/DBQuery/query = dbcon.NewQuery("SELECT * FROM library WHERE id=[sqlid]")
query.Execute()
while(query.NextRow())
diff --git a/code/world.dm b/code/world.dm
index 41ef45c11c6..0f36830bc2d 100644
--- a/code/world.dm
+++ b/code/world.dm
@@ -19,7 +19,7 @@
changelog_hash = md5('html/changelog.html') //used for telling if the changelog has changed recently
if(byond_version < RECOMMENDED_VERSION)
- world.log << "Your server's byond version does not meet the recommended requirements for TGstation code. Please update BYOND"
+ world.log << "Your server's BYOND version does not meet the recommended requirements for /tg/station code. Please update BYOND."
make_datum_references_lists() //initialises global lists for referencing frequently used datums (so that we only ever do it once)
@@ -48,14 +48,9 @@
if(config.sql_enabled)
if(!setup_database_connection())
- world.log << "Your server failed to establish a connection with the feedback database."
+ world.log << "Your server failed to establish a connection with the database."
else
- world.log << "Feedback database connection established."
-
- if(!setup_old_database_connection())
- world.log << "Your server failed to establish a connection with the tgstation database."
- else
- world.log << "Tgstation database connection established."
+ world.log << "Database connection established."
plmaster = new /obj/effect/overlay()
plmaster.icon = 'icons/effects/tile_effects.dmi'
@@ -201,7 +196,6 @@
config.load("config/config.txt")
config.load("config/game_options.txt","game_options")
config.loadsql("config/dbconfig.txt")
- config.loadforumsql("config/forumdbconfig.txt")
// apply some settings from config..
abandon_allowed = config.respawn
@@ -267,7 +261,6 @@
#define FAILED_DB_CONNECTION_CUTOFF 5
var/failed_db_connections = 0
-var/failed_old_db_connections = 0
proc/setup_database_connection()
@@ -302,41 +295,4 @@ proc/establish_db_connection()
else
return 1
-
-
-
-//These two procs are for the old database, while it's being phased out. See the tgstation.sql file in the SQL folder for more information.
-proc/setup_old_database_connection()
-
- if(failed_old_db_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to conenct anymore.
- return 0
-
- if(!dbcon_old)
- dbcon_old = new()
-
- var/user = sqllogin
- var/pass = sqlpass
- var/db = sqldb
- var/address = sqladdress
- var/port = sqlport
-
- dbcon_old.Connect("dbi:mysql:[db]:[address]:[port]","[user]","[pass]")
- . = dbcon_old.IsConnected()
- if ( . )
- failed_old_db_connections = 0 //If this connection succeeded, reset the failed connections counter.
- else
- failed_old_db_connections++ //If it failed, increase the failed connections counter.
-
- return .
-
-//This proc ensures that the connection to the feedback database (global variable dbcon) is established
-proc/establish_old_db_connection()
- if(failed_old_db_connections > FAILED_DB_CONNECTION_CUTOFF)
- return 0
-
- if(!dbcon_old || !dbcon_old.IsConnected())
- return setup_old_database_connection()
- else
- return 1
-
#undef FAILED_DB_CONNECTION_CUTOFF
\ No newline at end of file
diff --git a/config/README feedback.txt b/config/README feedback.txt
deleted file mode 100644
index 354db8f351a..00000000000
--- a/config/README feedback.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-Create a databse at the same location where the server MySQL databse is. (as defined in config/dbconfig.txt under ADDRESS and PORT) It can be a separate database or the same one, as you wish. Create the following table in it: (name needs to remain as 'erro_feedback')
-
-
-CREATE TABLE IF NOT EXISTS `erro_feedback` (
-
- `id` int(11) NOT NULL AUTO_INCREMENT,
-
- `time` datetime NOT NULL,
-
- `round_id` int(8) NOT NULL,
-
- `var_name` varchar(32) NOT NULL,
-
- `var_value` int(16) DEFAULT NULL,
-
- `details` text,
-
- PRIMARY KEY (`id`)
-
-);
-
-
-
-Open the file config/dbconfig.txt and edit the following lines:
-
-FEEDBACK_DATABASE test
-
-FEEDBACK_LOGIN mylogin
-
-FEEDBACK_PASSWORD mypassword
\ No newline at end of file
diff --git a/config/config.txt b/config/config.txt
index 8adf6ed9e04..e63c6501c0d 100644
--- a/config/config.txt
+++ b/config/config.txt
@@ -1,23 +1,12 @@
## Server name: This appears at the top of the screen in-game. In this case it will read "tgstation: station_name" where station_name is the randomly generated name of the station for the round. Remove the # infront of SERVERNAME and replace 'tgstation' with the name of your choice
# SERVERNAME tgstation
-## Alert levels
-ALERT_GREEN All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced.
-ALERT_BLUE_UPTO The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted.
-ALERT_BLUE_DOWNTO The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed.
-ALERT_RED_UPTO There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised.
-ALERT_RED_DOWNTO The self-destruct mechanism has been deactivated, there is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised.
-ALERT_DELTA The station's self-destruct mechanism has been engaged. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill.
-
## Add a # infront of this if you want to use the SQL based admin system, the legacy system uses admins.txt. You need to set up your database to use the SQL based system.
ADMIN_LEGACY_SYSTEM
## Add a # infront of this if you want to use the SQL based banning system. The legacy systems use the files in the data folder. You need to set up your database to use the SQL based system.
BAN_LEGACY_SYSTEM
-## Add a # here if you wish to use the setup where jobs have more access. This is intended for servers with low populations - where there are not enough players to fill all roles, so players need to do more than just one job. Also for servers where they don't want people to hide in their own departments.
-JOBS_HAVE_MINIMAL_ACCESS
-
## Unhash this entry to have certain jobs require your account to be at least a certain number of days old to select. You can configure the exact age requirement for different jobs by editing
## the minimal_player_age variable in the files in folder /code/game/jobs/job/.. for the job you want to edit. Set minimal_player_age to 0 to disable age requirement for that job.
## REQUIRES the database set up to work. Keep it hashed if you don't have a database set up.
@@ -25,9 +14,6 @@ JOBS_HAVE_MINIMAL_ACCESS
## you have noone older than 0 days, since noone has been logged yet. Only turn this on once you have had the database up for 30 days.
#USE_AGE_RESTRICTION_FOR_JOBS
-## Unhash this to use recursive explosions, keep it hashed to use circle explosions. Recursive explosions react to walls, airlocks and blast doors, making them look a lot cooler than the boring old circular explosions. They require more CPU and are (as of january 2013) experimental
-#USE_RECURSIVE_EXPLOSIONS
-
## log OOC channel
LOG_OOC
@@ -70,41 +56,9 @@ LOG_LAW
## log admin warning messages
##LOG_ADMINWARN ## Also duplicates a bunch of other messages.
-## sql switching
-# SQL_ENABLED
-
## disconnect players who did nothing during 10 minutes
# KICK_INACTIVE
-## probablities for game modes chosen in "secret" and "random" modes
-##
-## default probablity is 1, increase to make that mode more likely to be picked
-## set to 0 to disable that mode
-## Cult mode is in alpha test, enable at your own risk
-PROBABILITY EXTENDED 0
-PROBABILITY TRAITOR 0
-PROBABILITY METEOR 0
-PROBABILITY MALFUNCTION 2
-PROBABILITY BLOB 0
-PROBABILITY NUCLEAR 5
-PROBABILITY SANDBOX 0
-PROBABILITY WIZARD 0
-PROBABILITY RESTRUCTURING 0
-PROBABILITY REVOLUTION 5
-PROBABILITY CHANGELING 0
-PROBABILITY CULT 1
-PROBABILITY MONKEY 0
-PROBABILITY TRAITORCHAN 0
-
-## Hash out to disable random events during the round.
-ALLOW_RANDOM_EVENTS
-
-## if amount of traitors scales or not
-#TRAITOR_SCALING
-
-## If security is prohibited from being most antagonists
-#PROTECT_ROLES_FROM_ANTAGONIST
-
## Comment this out to stop admins being able to choose their personal ooccolor
ALLOW_ADMIN_OOCCOLOR
@@ -129,10 +83,6 @@ VOTE_PERIOD 600
## players' votes default to "No vote" (otherwise, default to "No change")
# DEFAULT_NO_VOTE
-## allow AI job
-ALLOW_AI
-
-
## disable abandon mob
NORESPAWN
@@ -188,24 +138,8 @@ TICKLAG 0.9
## Defines if Tick Compensation is used. It results in a minor slowdown of movement of all mobs, but attempts to result in a level movement speed across all ticks. Recommended if tickrate is lowered.
TICKCOMP 0
-## if uncommented this adds a random surname to a player's name if they only specify one name
-HUMANS_NEED_SURNAMES
-
## Uncomment this to ban use of ToR
#TOR_BAN
## Comment this out to disable automuting
-#AUTOMUTE_ON
-
-## How long the delay is before the Away Mission gate opens. Default is half an hour.
-GATEWAY_DELAY 18000
-
-## Remove the # to give assistants maint access.
-#ASSISTANT_MAINT
-
-## Remove the # to make rounds which end instantly (Rev, Wizard, Malf) to continue until the shuttle is called or the station is nuked.
-## Malf and Rev will let the shuttle be called when the antags/protags are dead.
-#CONTINUOUS_ROUNDS
-
-##Remove the # to let ghosts spin chairs
-#GHOST_INTERACTION
\ No newline at end of file
+#AUTOMUTE_ON
\ No newline at end of file
diff --git a/config/dbconfig.txt b/config/dbconfig.txt
index a0d6f28b7b6..8bf58f15d65 100644
--- a/config/dbconfig.txt
+++ b/config/dbconfig.txt
@@ -1,26 +1,25 @@
# MySQL Connection Configuration
+# This is used for stats, feedback gathering,
+# administration, and the in game library.
-# Server the MySQL database can be found at
+# Should SQL be enabled? Uncomment to enable.
+SQL_ENABLED
+
+# Server the MySQL database can be found at.
# Examples: localhost, 200.135.5.43, www.mysqldb.com, etc.
ADDRESS localhost
-# MySQL server port (default is 3306)
+# MySQL server port (default is 3306).
PORT 3306
-# Database the population, death, karma, etc. tables may be found in
-DATABASE tgstation
+# Database for all SQL functions, not just feedback.
+FEEDBACK_DATABASE feedback
-# Username/Login used to access the database
-LOGIN mylogin
+# Username/Login used to access the database.
+FEEDBACK_LOGIN username
-# Password used to access the database
-PASSWORD mypassword
+# Password used to access the database.
+FEEDBACK_PASSWORD password
-# The following information is for feedback tracking via the blackbox server
-FEEDBACK_DATABASE test
-FEEDBACK_LOGIN mylogin
-FEEDBACK_PASSWORD mypassword
-
-# Track population and death statistics
-# Comment this out to disable
+# Comment out to disable tracking of population and death statistics.
ENABLE_STAT_TRACKING
\ No newline at end of file
diff --git a/config/forumdbconfig.txt b/config/forumdbconfig.txt
deleted file mode 100644
index 61a2a2d6ecd..00000000000
--- a/config/forumdbconfig.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-# This configuration file is for the forum database, if you need to set up
-# population, death, etc. tracking see 'dbconfig.txt'
-# The login credentials for this will likely differ from those in dbconfig.txt!
-
-# Server the MySQL database can be found at
-# Examples: localhost, 200.135.5.43, www.mysqldb.com, etc.
-ADDRESS localhost
-
-# MySQL server port (default is 3306)
-PORT 3306
-
-# Database the forum data may be found in
-DATABASE tgstation13
-
-# Username/Login used to access the database
-LOGIN mylogin
-
-# Password used to access the database
-PASSWORD mypassword
\ No newline at end of file
diff --git a/config/game_options.txt b/config/game_options.txt
index 9ec32a29484..a47f8c1be63 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -1,40 +1,136 @@
### HEALTH ###
-## level of health at which a mob becomes unconscious (crit)
+# level of health at which a mob becomes unconscious (crit)
HEALTH_THRESHOLD_CRIT 0
-## level of health at which a mob becomes dead
+# level of health at which a mob becomes dead
HEALTH_THRESHOLD_DEAD -100
+
### REVIVAL ###
-## whether pod plants work or not
+# whether pod plants work or not
REVIVAL_POD_PLANTS 1
-## whether cloning tubes work or not
+# whether cloning tubes work or not
REVIVAL_CLONING 1
-## amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite)
+# amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite)
REVIVAL_BRAIN_LIFE -1
-
### MOB MOVEMENT ###
-## We suggest editing these variabled in-game to find a good speed for your server. To do this you must be a high level admin. Open the 'debug' tab ingame. Select "Debug Controller" and then, in the popup, select "Configuration". These variables should have the same name.
-
-## These values get directly added to values and totals in-game. To speed things up make the number negative, to slow things down, make the number positive.
+## We suggest editing these variables ingame to find a good speed for your server.
+## To do this you must be a high level admin. Open the 'debug' tab ingame.
+## Select "Debug Controller" and then, in the popup, select "Configuration". These variables should have the same name.
+## These values get directly added to values and totals ingame.
+## To speed things up make the number negative, to slow things down, make the number positive.
## These modify the run/walk speed of all mobs before the mob-specific modifiers are applied.
RUN_DELAY 0
WALK_DELAY 0
-
## The variables below affect the movement of specific mob types.
HUMAN_DELAY 0
ROBOT_DELAY 0
MONKEY_DELAY 0
ALIEN_DELAY 0
METROID_DELAY 0
-ANIMAL_DELAY 0
\ No newline at end of file
+ANIMAL_DELAY 0
+
+
+### NAMES ###
+## If uncommented this adds a random surname to a player's name if they only specify one name.
+#HUMANS_NEED_SURNAMES
+
+
+### ALERT LEVELS ###
+ALERT_GREEN All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced.
+ALERT_BLUE_UPTO The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted.
+ALERT_BLUE_DOWNTO The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed.
+ALERT_RED_UPTO There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised.
+ALERT_RED_DOWNTO The self-destruct mechanism has been deactivated, there is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised.
+ALERT_DELTA The station's self-destruct mechanism has been engaged. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill.
+
+
+### EXPLOSIONS ###
+
+## Unhash this to use recursive explosions, keep it hashed to use normal style explosions.
+## Recursive explosions react to walls, airlocks and blast doors, making them look a lot cooler
+## than the boring old circular explosions. They require more CPU and are (as of March 2013) experimental.
+## The default map is generally designed for the old style explosions in terms of security.
+
+#USE_RECURSIVE_EXPLOSIONS
+
+
+### GAME MODES ###
+
+## Probablities for game modes chosen in 'secret' and 'random' modes.
+## Default probablity is 1, increase to make that mode more likely to be picked.
+## Set to 0 to disable that mode.
+
+PROBABILITY TRAITOR 5
+PROBABILITY TRAITORCHAN 4
+PROBABILITY NUCLEAR 2
+PROBABILITY REVOLUTION 2
+PROBABILITY CULT 2
+PROBABILITY CHANGELING 2
+PROBABILITY WIZARD 4
+PROBABILITY MALFUNCTION 1
+PROBABILITY BLOB 0
+PROBABILITY METEOR 0
+PROBABILITY EXTENDED 0
+
+## You probably want to keep sandbox off by default for secret and random.
+PROBABILITY SANDBOX 0
+
+## Uncomment to make rounds which end instantly (Rev, Wizard, Malf) continue until
+## the shuttle is called or the station is nuked.
+## Malf and Rev will let the shuttle be called when the antags/protags are dead.
+#CONTINUOUS_ROUNDS
+
+## Uncomment to scale the number of antagonists to crew population. Doesn't
+## affect all gamemodes.
+#TRAITOR_SCALING
+
+## Uncomment to prohibit jobs that start with loyalty
+## implants from being most antagonists.
+#PROTECT_ROLES_FROM_ANTAGONIST
+
+
+### RANDOM EVENTS ###
+
+## Comment this to disable random events during the round.
+ALLOW_RANDOM_EVENTS
+
+
+### AI ###
+
+## Allow the AI job to be picked.
+ALLOW_AI
+
+
+
+### AWAY MISSIONS ###
+
+## How long the delay is before the Away Mission gate opens. Default is half an hour.
+## 600 is one minute.
+GATEWAY_DELAY 18000
+
+
+### ACCESS ###
+## Comment this out if you wish to use the setup where jobs have more access.
+## This is intended for servers with low populations - where there are not enough
+## players to fill all roles, so players need to do more than just one job.
+## Also for servers where they don't want people to hide in their own departments.
+JOBS_HAVE_MINIMAL_ACCESS
+
+## Uncomment to give assistants maint access.
+#ASSISTANT_MAINT
+
+
+### GHOST INTERACTION ###
+## Uncomment to let ghosts spin chairs. You may be wondering why this is a config option. Don't ask.
+#GHOST_INTERACTION
\ No newline at end of file