diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..664c5544 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.lua text eol=lf +*.md text eol=lf \ No newline at end of file diff --git a/docs/Index.md b/docs/Index.md index 02053b6e..913c042c 100644 --- a/docs/Index.md +++ b/docs/Index.md @@ -1,6 +1,6 @@ -## RedMew Documentation Index - - [Installing and Using the RedMew Scenario](Installation.md) - - [Creating a New Scenario Using the RedMew Framework](NewScenario.md) - -### Scenario Specific Documentation - - [Diggy Installation and Configuration](scenarios/Diggy.md) +## RedMew Documentation Index + - [Installing and Using the RedMew Scenario](Installation.md) + - [Creating a New Scenario Using the RedMew Framework](NewScenario.md) + +### Scenario Specific Documentation + - [Diggy Installation and Configuration](scenarios/Diggy.md) diff --git a/docs/Installation.md b/docs/Installation.md index 663158c9..b462e761 100644 --- a/docs/Installation.md +++ b/docs/Installation.md @@ -1,49 +1,49 @@ -## Installing and Using the RedMew Scenario -Some scenarios have more detailed information, please check [the index](Index.md) before continuing with the generic -RedMew installation. To install the RedMew scenario directly into something playable, [download the -archive](https://github.com/Valansch/RedMew/archive/develop.zip) and take the next step based on your Operating System. - -- **Windows**: extract the the zip file into `%appdata%\Factorio\Scenarios\RedMew` -- **MacOS**: extract the the zip file into `~/Library/Application Support/factorio/Scenarios/RedMew` -- **Linux**: extract the the zip file into `~/.factorio/scenarios/RedMew` - -Make sure it's called RedMew and there's a `control.lua` in the root of that directory. If you are using the RedMew -scenario for a public-facing multi-player server, be sure to provide attribution back to github and keep links to the -Discord, Patreon and website intact. - -> _Note_: these locations are based on the default configuration [defined by -factorio](https://wiki.factorio.com/Application_directory). If your installation is not default, you have to find your -scenarios directory in another way. - -## Generating maps -There are 3 ways to generate maps using our scenario: Vanilla, FactorioMapConverter and Custom Maps. - -### Vanilla -Start the scenario from the scenario menu and you are ready to go. Additionally you can turn features on or off via -[`control.lua`](../control.lua) if desired. - -### Custom Maps -There are many pre-made map modules that can be combined to create a unique map. - -Map module previews can be found in [map_gen/data/.map_previews](../map_gen/data/.map_previews). You can select and -activate a module by removing the `--` in front of the require in [`map_layout.lua`](../map_layout.lua). - -You can mix as many modules as you want, as long as they logically fit together. - -### FactorioMapConverter (Windows only) - -You can generate your own maps from images. First convert the image file into a lua file (For example `image_data.lua`). -Then use our scenario to load the `image_data.lua` file and generate the map from it. - -To create your own map preview: -1. Download the Map Converter [here](https://github.com/grilledham/FactorioMapConverter/releases) to generate the - `image_data.lua`. -2. Place your `image_data.lua` file in the `map_gen/data/presets/` directory. -3. Create new lua file (for example `my_image.lua`) inside the folder `map_gen/presets/`. This file is used to configure - your map (scale, translate etc.). To do this, you can copy `map_gen/presets/template.lua` and replace line 8 to point - to your `image_data.lua` -4. Load your new preset by adding a new line to `map_layout.lua`. This should look similar to this: - ```lua - MAP_GEN = require "map_gen.presets.my_image.lua" - ``` -5. Load the scenario from the scenario menu. +## Installing and Using the RedMew Scenario +Some scenarios have more detailed information, please check [the index](Index.md) before continuing with the generic +RedMew installation. To install the RedMew scenario directly into something playable, [download the +archive](https://github.com/Valansch/RedMew/archive/develop.zip) and take the next step based on your Operating System. + +- **Windows**: extract the the zip file into `%appdata%\Factorio\Scenarios\RedMew` +- **MacOS**: extract the the zip file into `~/Library/Application Support/factorio/Scenarios/RedMew` +- **Linux**: extract the the zip file into `~/.factorio/scenarios/RedMew` + +Make sure it's called RedMew and there's a `control.lua` in the root of that directory. If you are using the RedMew +scenario for a public-facing multi-player server, be sure to provide attribution back to github and keep links to the +Discord, Patreon and website intact. + +> _Note_: these locations are based on the default configuration [defined by +factorio](https://wiki.factorio.com/Application_directory). If your installation is not default, you have to find your +scenarios directory in another way. + +## Generating maps +There are 3 ways to generate maps using our scenario: Vanilla, FactorioMapConverter and Custom Maps. + +### Vanilla +Start the scenario from the scenario menu and you are ready to go. Additionally you can turn features on or off via +[`control.lua`](../control.lua) if desired. + +### Custom Maps +There are many pre-made map modules that can be combined to create a unique map. + +Map module previews can be found in [map_gen/data/.map_previews](../map_gen/data/.map_previews). You can select and +activate a module by removing the `--` in front of the require in [`map_layout.lua`](../map_layout.lua). + +You can mix as many modules as you want, as long as they logically fit together. + +### FactorioMapConverter (Windows only) + +You can generate your own maps from images. First convert the image file into a lua file (For example `image_data.lua`). +Then use our scenario to load the `image_data.lua` file and generate the map from it. + +To create your own map preview: +1. Download the Map Converter [here](https://github.com/grilledham/FactorioMapConverter/releases) to generate the + `image_data.lua`. +2. Place your `image_data.lua` file in the `map_gen/data/presets/` directory. +3. Create new lua file (for example `my_image.lua`) inside the folder `map_gen/presets/`. This file is used to configure + your map (scale, translate etc.). To do this, you can copy `map_gen/presets/template.lua` and replace line 8 to point + to your `image_data.lua` +4. Load your new preset by adding a new line to `map_layout.lua`. This should look similar to this: + ```lua + MAP_GEN = require "map_gen.presets.my_image.lua" + ``` +5. Load the scenario from the scenario menu. diff --git a/docs/NewScenario.md b/docs/NewScenario.md index 87774181..f6b635a2 100644 --- a/docs/NewScenario.md +++ b/docs/NewScenario.md @@ -1,28 +1,28 @@ -## Creating a New Scenario Using the RedMew Framework -To add a new scenario and make it available to everyone that wants to use RedMew, make a Pull Request on github to -request adding your scenario to the repository. - -### Starting From Scratch -Depending on the size of the scenario, it could be desired to have its own dedicated directory. By default a scenario -is added in `map_gen/combined/your_scenario.lua`. - -#### Step 1 -If you're not experienced with git, it's advised to read up on how git works first or ask someone else to help out. To -get your change into the repository, you need to [fork the repository](https://help.github.com/articles/fork-a-repo/) -and eventually make your Pull Request from there. [Clone](https://help.github.com/articles/cloning-a-repository/) the -fork to your local environment and get your favorite IDE or Editor ready. - -#### Step 2 -Small scenarios can go into a single lua file, bigger scenarios might need their own dedicated directory. To follow the -RedMew structure for scenarios, create your scenario file: `map_gen/combined/your_scenario_file.lua`. - -#### Step 3 (Optional) -If you plan on making a bigger scenario, create a directory: `map_gen/combined/your_scenario_file/` where you can place -your scenario specific lua files. - -#### Step 4 -Regardless, the `map_gen/combined/your_scenario_file.lua` file will be the entry point for your scenario and will be -loaded via `map_layout.lua`. Underneath `--combined--`, add your require: `require map_gen.combined.your_scenario_file`. - -When making the Pull Request, make sure to comment the require in `map_layout.lua` as by default it should be off. To -enable debugging and get some extra feedback during development, enable `_DEBUG` in `config.lua`. +## Creating a New Scenario Using the RedMew Framework +To add a new scenario and make it available to everyone that wants to use RedMew, make a Pull Request on github to +request adding your scenario to the repository. + +### Starting From Scratch +Depending on the size of the scenario, it could be desired to have its own dedicated directory. By default a scenario +is added in `map_gen/combined/your_scenario.lua`. + +#### Step 1 +If you're not experienced with git, it's advised to read up on how git works first or ask someone else to help out. To +get your change into the repository, you need to [fork the repository](https://help.github.com/articles/fork-a-repo/) +and eventually make your Pull Request from there. [Clone](https://help.github.com/articles/cloning-a-repository/) the +fork to your local environment and get your favorite IDE or Editor ready. + +#### Step 2 +Small scenarios can go into a single lua file, bigger scenarios might need their own dedicated directory. To follow the +RedMew structure for scenarios, create your scenario file: `map_gen/combined/your_scenario_file.lua`. + +#### Step 3 (Optional) +If you plan on making a bigger scenario, create a directory: `map_gen/combined/your_scenario_file/` where you can place +your scenario specific lua files. + +#### Step 4 +Regardless, the `map_gen/combined/your_scenario_file.lua` file will be the entry point for your scenario and will be +loaded via `map_layout.lua`. Underneath `--combined--`, add your require: `require map_gen.combined.your_scenario_file`. + +When making the Pull Request, make sure to comment the require in `map_layout.lua` as by default it should be off. To +enable debugging and get some extra feedback during development, enable `_DEBUG` in `config.lua`. diff --git a/docs/scenarios/Diggy.md b/docs/scenarios/Diggy.md index b2065d7c..281725ff 100644 --- a/docs/scenarios/Diggy.md +++ b/docs/scenarios/Diggy.md @@ -1,79 +1,79 @@ -## Diggy Installation and Configuration -Diggy is a custom [RedMew](../../README.md) scenario. You start out with nothing but a market, your pick-axe and some -walls [deep, deep in the mine](https://www.youtube.com/watch?v=ov5pxaIbJlM). The goal is to launch a rocket, but be -careful, there's not a lot of space and the mine is unstable! - -- Gameplay: https://www.youtube.com/watch?v=J3lheDK-6Cw -- Time lapse video: https://www.youtube.com/watch?v=4cRsx-wl_fk (By Namelesshunter Gaming) - -> _Note_: Scenarios- also known as soft-mods- are scripted maps. They can be played online without having to download -any mods as the script is included in the map. - -### Scenario Information -The idea of Diggy is similar to vanilla, except that it greatly changes how to build your factory. As you're in a cave, -each rock you dig, each support entity you remove and every tile you mine, can cause a collapse. You can use walls, -stone paths and (refined) concrete floor to increase the strength of your mine and reduce the chance of a collapse. - -Whenever you place or remove a wall for example, the stress level of the area around it (9x9 tiles) will rise or lower. -When a certain threshold is reached, the cave will collapse. You can stop this by quickly placing walls or run away as -fast as you can. Letting the cave collapse _will_ destroy structures below it! The recommended pattern on dirt is to -place a wall every 4th tile. Using stone paths and concrete will increase this to 5 tiles while refined concrete will -make it 6. - -## How to start Diggy for Single-player mode - -#### Step 1 -Download the zip file from -[https://github.com/Valansch/RedMew/archive/develop.zip](https://github.com/Valansch/RedMew/archive/develop.zip) - -#### Step 2 -- **Windows**: extract the the zip file into `%appdata%\Factorio\Scenarios\Diggy` -- **MacOS**: extract the the zip file into `~/Library/Application Support/factorio/Scenarios/Diggy` -- **Linux**: extract the the zip file into `~/.factorio/scenarios/Diggy` - -Make sure it's called Diggy and there's a `control.lua` in the root of that directory. - -> _Note_: these locations are based on the default configuration [defined by -factorio](https://wiki.factorio.com/Application_directory). If your installation is not default, you have to find your -scenarios directory in another way. - -#### Step 3 -Open `map_layout.lua` in that directory and look for `--require "map_gen.combined.diggy"`. -Change this to `require "map_gen.combined.diggy"`, by removing the double dashes. - -#### Step 4 -In factorio start either a local or online game via Scenarios. Select `Diggy` under -`User scenarios` and start it up. - -> _Note:_ Downloading the latest version might not always be a functional version, please consult on discord for a -working version if this is the case. - -#### Step 5 (optional) -Diggy is designed to work for at least 15 players online, working together. It's advised to change the configuration -to adjust the difficulty for your needs. You can find the config in `map_gen/Diggy/Config.lua`. Most options should be -well-explained. For Single-player it's recommend to enable cheats with modified values. You can change the starting -items and some pre-defined cheat values (if cheats are enabled) under the `SetupPlayer` config item. - -## Configuring Diggy - -### Changing or Disabling Biter Spawning -You can find the biter spawning feature in the config file under `AlienSpawner`. If you don't want biters to spawn -according to the Diggy scenario, turn this feature off completely. - -### Disabling Collapses -While one of the core features, it can also be fun to play without. To turn off collapses completely, you can turn off -this feature under `DiggyCaveCollapse`. If you experience performance issues while digging, you can turn off this -feature as well as it can be quite heavy. - -### Configuring Resource Spawning -At the moment, Diggy is not yet using any of the build-in mechanics to spawn resources and you will have to manually add -them. The resource spawning mechanism is quite complex, so don't hesitate to us how to configure it on Discord. Most -basic configuration can be found under `ScatteredResources`. To customize the resource weights, you have to configure -those specifics in the `map_gen/Diggy/Orepattern` directory. Resources are defined with a weight, meaning you can add -your own resources (for example bobs or angels) with a value and the scenario will automatically calculate the proper -spawn chances. - -### Adding Market Items -Items can be configured by adding the desired item under the `MarketExchange` configuration. You only have to define a -level at which it unlocks, a price or prices in case it can cost more, and what the item prototype is. For a list of -items, you can look up each possible item on the [Factorio raw data page](https://wiki.factorio.com/Data.raw#item). +## Diggy Installation and Configuration +Diggy is a custom [RedMew](../../README.md) scenario. You start out with nothing but a market, your pick-axe and some +walls [deep, deep in the mine](https://www.youtube.com/watch?v=ov5pxaIbJlM). The goal is to launch a rocket, but be +careful, there's not a lot of space and the mine is unstable! + +- Gameplay: https://www.youtube.com/watch?v=J3lheDK-6Cw +- Time lapse video: https://www.youtube.com/watch?v=4cRsx-wl_fk (By Namelesshunter Gaming) + +> _Note_: Scenarios- also known as soft-mods- are scripted maps. They can be played online without having to download +any mods as the script is included in the map. + +### Scenario Information +The idea of Diggy is similar to vanilla, except that it greatly changes how to build your factory. As you're in a cave, +each rock you dig, each support entity you remove and every tile you mine, can cause a collapse. You can use walls, +stone paths and (refined) concrete floor to increase the strength of your mine and reduce the chance of a collapse. + +Whenever you place or remove a wall for example, the stress level of the area around it (9x9 tiles) will rise or lower. +When a certain threshold is reached, the cave will collapse. You can stop this by quickly placing walls or run away as +fast as you can. Letting the cave collapse _will_ destroy structures below it! The recommended pattern on dirt is to +place a wall every 4th tile. Using stone paths and concrete will increase this to 5 tiles while refined concrete will +make it 6. + +## How to start Diggy for Single-player mode + +#### Step 1 +Download the zip file from +[https://github.com/Valansch/RedMew/archive/develop.zip](https://github.com/Valansch/RedMew/archive/develop.zip) + +#### Step 2 +- **Windows**: extract the the zip file into `%appdata%\Factorio\Scenarios\Diggy` +- **MacOS**: extract the the zip file into `~/Library/Application Support/factorio/Scenarios/Diggy` +- **Linux**: extract the the zip file into `~/.factorio/scenarios/Diggy` + +Make sure it's called Diggy and there's a `control.lua` in the root of that directory. + +> _Note_: these locations are based on the default configuration [defined by +factorio](https://wiki.factorio.com/Application_directory). If your installation is not default, you have to find your +scenarios directory in another way. + +#### Step 3 +Open `map_layout.lua` in that directory and look for `--require "map_gen.combined.diggy"`. +Change this to `require "map_gen.combined.diggy"`, by removing the double dashes. + +#### Step 4 +In factorio start either a local or online game via Scenarios. Select `Diggy` under +`User scenarios` and start it up. + +> _Note:_ Downloading the latest version might not always be a functional version, please consult on discord for a +working version if this is the case. + +#### Step 5 (optional) +Diggy is designed to work for at least 15 players online, working together. It's advised to change the configuration +to adjust the difficulty for your needs. You can find the config in `map_gen/Diggy/Config.lua`. Most options should be +well-explained. For Single-player it's recommend to enable cheats with modified values. You can change the starting +items and some pre-defined cheat values (if cheats are enabled) under the `SetupPlayer` config item. + +## Configuring Diggy + +### Changing or Disabling Biter Spawning +You can find the biter spawning feature in the config file under `AlienSpawner`. If you don't want biters to spawn +according to the Diggy scenario, turn this feature off completely. + +### Disabling Collapses +While one of the core features, it can also be fun to play without. To turn off collapses completely, you can turn off +this feature under `DiggyCaveCollapse`. If you experience performance issues while digging, you can turn off this +feature as well as it can be quite heavy. + +### Configuring Resource Spawning +At the moment, Diggy is not yet using any of the build-in mechanics to spawn resources and you will have to manually add +them. The resource spawning mechanism is quite complex, so don't hesitate to us how to configure it on Discord. Most +basic configuration can be found under `ScatteredResources`. To customize the resource weights, you have to configure +those specifics in the `map_gen/Diggy/Orepattern` directory. Resources are defined with a weight, meaning you can add +your own resources (for example bobs or angels) with a value and the scenario will automatically calculate the proper +spawn chances. + +### Adding Market Items +Items can be configured by adding the desired item under the `MarketExchange` configuration. You only have to define a +level at which it unlocks, a price or prices in case it can cost more, and what the item prototype is. For a list of +items, you can look up each possible item on the [Factorio raw data page](https://wiki.factorio.com/Data.raw#item). diff --git a/features/report.lua b/features/report.lua index 293c3bf2..2467dae3 100644 --- a/features/report.lua +++ b/features/report.lua @@ -1,360 +1,360 @@ -local Module = {} - -local Gui = require("utils.gui") -local Utils = require("utils.utils"); -local Game = require 'utils.game' - -local report_frame_name = Gui.uid_name() -local report_close_button_name = Gui.uid_name() -local report_tab_button_name = Gui.uid_name() -local jail_offender_button_name = Gui.uid_name() -local report_body_name = Gui.uid_name() -local prefix = '------------------NOTICE-------------------' -local prefix_e = '--------------------------------------------' - -global.reports = {} -global.player_report_data = {} - - -local function draw_report(parent, report_id) - local report = global.reports[report_id] - if report_id == 0 or not report then - parent.add {type = "label", caption="No reports yet."} - return - end - - local reported_player_name = Game.get_player_by_index(report.reported_player_index).name - local reporting_player_name = "