## Core

Commands | Core Module - Commands - Factorio command making module that makes commands with better parse and more modularity
Common-Library | Core Module - Common Library - Adds some commonly used functions used in many modules
Gui | Core Module - Gui - This file is used to require all the different elements of the gui module - each module has an outline here but for more details see their separate files in ./gui - please read the files for more documentation that cant be shown here - please note there is a rework planned but not started
Permissions-Groups | Core Module - Permission Groups - Permission group making for factorio so you never have to make one by hand again
Roles | Core Module - Roles - Factorio role system to manage custom permissions.
Store | Core Module - Store - Used to store and watch for updates for values in the global table
Sudo | Core Module - Sudo - An extention of task and token to allow a single require to register and run functions bypassing all permissions.

## Control

Jail | Control Module - Jail - Adds a way to jail players and temp ban players.
Production | Control Module - Production - Common functions used to track production of items
Reports | Control Module - Reports - Adds a way to report players and store report messages.
Rockets | Control Module - Rockets - Stores rocket stats for each force.
Tasks | Control Module - Tasks - Stores tasks for each force.
Warnings | Control Module - Warnings - Adds a way to give and remove warnings to players.
Warps | Control Module - Warps - Stores warps for each force.

## Addons

Advanced-Start | Adds a better method of player starting items based on production levels.
Chat-Popups | Creates flying text entities when a player sends a message in chat; also displays a ping above users who are named in the message
Chat-Reply | Adds auto replies to chat messages; aswell as chat commands
Compilatron | Adds a compilatron that walks around the spawn area; adapted from redmew code
Damage-Popups | Displays the amount of dmg that is done by players to entities; also shows player health when a player is attacked
Death-Logger | Makes markers on the map where places have died and reclaims items if not recovered
Discord-Alerts | Sends alert messages to our discord server when certain events are triggered
Pollution-Grading | Makes polution look much nice of the map, ie not one big red mess
Player-Colours | Gives players random colours when they join, also applies preset colours to those who have them
Scorched-Earth | When a player walks around the tiles under them will degrade over time, the same is true when entites are built
Spawn-Area | Adds a custom spawn area with chests and afk turrets

## Guis

Player-List | Gui Module - Player List - Adds a player list to show names and play time; also includes action buttons which can apply to players
Rocket-Info | Gui Module - Rocket Info - Adds a rocket infomation gui which shows general stats, milestones and build progress of rockets
Science-Info | Gui Module - Science Info - Adds a science info gui that shows production usage and net for the different science packs as well as an eta
Task-List | Gui Module - Task List - Adds a task list to the game which players can add remove and edit items on
Warps-List | Gui Module - Warp List - Adds a warp list gui which allows players to add and remove warp points

## Commands

Admin-Chat | Commands Module - Admin Chat - Adds a command that allows admins to talk in a private chat
Bonus | Commands Module - Bonus - Adds a command that allows players to have increased stats
Cheat-Mode | Commands Module - Cheat Mode - Adds a command that allows players to enter cheat mode
Clear-Inventory | Commands Module - Clear Inventory - Adds a command that allows admins to clear people's inventorys
Debug | Commands Module - Debug - Adds a command that opens the debug frame
Find | Commands Module - Find - Adds a command that zooms in on the given player
Help | Commands Module - Help - Adds a better help command that allows searching of descriotions and names
Home | Commands Module - Home - Adds a command that allows setting and teleporting to your home position
Interface | Commands Module - Interface - Adds a command that acts as a direct link to the the active softmod, for debug use
Jail | Commands Module - Jail - Adds a commands that allow admins to jail, unjail, and temp ban players
Kill | Commands Module - Kill - Adds a command that allows players to kill them selfs and others
Me | Commands Module - Me - Adds a command that adds * around your message in the chat
Rainbow | Commands Module - Rainbow - Adds a command that prints your message in rainbow font
Repair | Commands Module - Repair - Adds a command that allows an admin to repair and revive a large area
Reports | Commands Module - Reports - Adds a commands that allow players to report other players
Roles | Commands Module - Roles - Adds a commands that allow interaction with the role system
Spawn | Commands Module - Spawn - Adds a command that allows players to teleport to their spawn point
Tag | Commands Module - Tag - Adds a command that allows players to have a custom tag after their name
Teleport | Commands Module - Teleport - Adds a command that allows players to teleport to other players
Warnings | Commands Module - Warnings - Adds a commands that allow admins to warn other players

## Configs

File-Loader | This contains a list of all files that will be loaded and the order they are loaded in; to stop a file from loading add "--" in front of it, remove the "--" to have the file be loaded; config files should be loaded after all modules are loaded; core files should be required by modules and not be present in this list;
Player-List | Config for the different action buttons that show on the player list; each button has the button define(s) given along side an auth function, and optional reason callback; if a reason callback is used then Store.set(action_name_store,player.name,'BUTTON_NAME') should be called during on_click; buttons can be removed from the gui by commenting them out of the config at the bottom of this file; the key used for the name of the button is the permission name used by the role system;
Advanced-Start | This file is used to setup the map starting settings and the items players will start with
Bonuses | Lists all bonuses which can be used, name followed by min max
Chat-Reply | This file defines the different triggers for the chat bot
Compilatron | Config file for the compliatrons including where they spawn and what messages they show
Death-Logger | This config controls what happens when a player dies mostly about map markers and item collection; allow_teleport_to_body_command and allow_collect_bodies_command can be over ridden if command_auth_runtime_disable is present; if not present then the commands will not be loaded into the game
Discord-Alerts | Config file used to enable and disable different push messages for discord
Commands-Auth-Admin | This is a very simple config file which adds a admin only auth functio; not much to change here its more so it can be enabled and disabled from ./config/file_loader.lua; either way you can change the requirements to be "admin" if you wanted to
Commands-Auth-Roles | This will make commands only work if the role has been allowed it in the role config
Commands-Auth-Runtime-Disable | This config for command auth allows commands to be globally enabled and disabled during runtime; this config adds Commands.disable and Commands.enable to enable and disable commands for all users
Commands-Parse | This file contains some common command param parse functions; this file is less of a config and more of a requirement but you may wish to change how some behave; as such you need to be confident with lua but you edit this config file; use Commands.add_parse('name',function(input,player,reject) end) to add a parse; see ./expcore/commands.lua for more details
Commands-Parse-Roles | Adds some parse functions that can be used with the role system
Permission-Groups | Use this file to add new permission groups to the game; start with Permission_Groups.new_group('name'); then use either :allow_all() or :disallow_all() to set the default for non specified actions; then use :allow{} and :disallow{} to specify certain actions to allow/disallow
Pollution-Grading | This controls how pollution is viewed on the map
Popup-Messages | A combination of config settings for different popup values like chat and damage
Preset-Player-Colours | Preset colours that players get when they join the server, if not in the list then will be given a random colour (which isnt disallowed)
Repair | Config file for the repair command
Rockets | This file controls what will show in each section of the rocket info gui
Roles | This is the main config file for the role system; file includes defines for roles and role flags and default values
Science | Config file for the science info gui
Scorched-Earth | This file controls the placement/degrading of tiles as players build and walk
Spawn-Area | Used to config the spawn generation settings yes there is alot here i know just ignore the long tables at the end (they were generated with a command)
Tasks | Config file for the tasks gui
Warnings | Config file for the warning system, this is very similar to reports but is for the use of moderators rather than normal users.
Warps | This file contains all the different settings for the warp system and gui

## Modules

control | Please go to ./config if you want to change settings, each file is commented with what it does if it is not in ./config then you should not attempt to change it unless you know what you are doing all files which are loaded (including the config files) are present in ./config/file_loader.lua this file is the landing point for all scenarios please DO NOT edit directly, further comments are to aid development
utils.alien_evolution_progress | info Original (javascript) version: https://hastebin.com/udakacavap.js Can be tested against: https://wiki.factorio.com/Enemies#Spawn_chances_by_evolution_factor
utils.core | This file contains core utilities used by the redmew scenario.
utils.debug
utils.dump_env | A small debugging tool that writes the contents of _ENV to a file when the game loads.
utils.event | This Module allows for registering multiple handlers to the same event, overcoming the limitation of script.register.
utils.event_core | Do not use this function, use Event.add instead as it has safety checks.
utils.math | Takes two points and calculates the slope of a line
utils.recipe_locker | A module to prevent recipes from being unlocked by research.
utils.state_machine | This module provides a classical mealy/moore state machine.
utils.table | Searches a table to remove a specific element without an index
utils.task | Threading simulation module Task.sleep()
utils.timestamp | source https://github.com/daurnimator/luatz/blob/master/luatz/timetable.lua edited down to just what is needed.

## Topics

readme.md
license