Difference between revisions of "Hostile Worlds - Invasions - Customizing"

From Coros.us Wiki
Jump to: navigation, search
Line 54: Line 54:
  
 
=== Dynamic Local Difficulty ===
 
=== Dynamic Local Difficulty ===
 +
 +
CoroUtil has a local dynamic difficulty systems that tries its best to figure out what stage of the game the player is at, so it can ramp up difficulty along with them.
 +
 +
Use of this system isn't actually required for invasions, but the default invasion setup uses it for scaling up inventory equipment, health, attack damage, speed, xp of mobs and also how many spawn in an invasion.
 +
 +
  
 
TODO:  
 
TODO:  
Line 60: Line 66:
  
 
TODO:
 
TODO:
 +
 +
Enable helpfull debug output to diagnose potential problems in json:
 +
* in CoroUtil/General.cfg, set useLoggingDebug to true
 +
 +
You will be able to see if there were any syntax errors with your json file, and where the error was, if everything went ok it should look like this:
 +
<code>processing, detected as DifficultyData: ./config/CoroUtil/data/templates/actions/mob_spawns.json
 +
[19:53:05] [main/INFO]: detected mob spawns to deserialize by detecting: mob_spawns</code>
  
 
Live edit normal config options:
 
Live edit normal config options:

Revision as of 18:34, 23 January 2019

This page is for customizing the existing invasion wave profiles or creating your own.

Getting setup

You'll need a good text editor, for windows, notepad++ should do, but something that can do syntax checking would help make sure things are formatted correctly, and editor like IntelliJ IDEA can do this. If you just use notepad++ you can find out if anything went wrong reading your json file later.

The first thing you'll need to do is run the game with coroutil and hw-invasions installed, this will generate the needed files in your minecraft config folder, you can leave the game open or close it at this point, doesn't matter. If you leave it open you can live edit and reload json files, to save from having to reload large modpacks.

The main file you will be working in is mob_spawns.json, once you have run the game, you can find it in config/CoroUtil/data/templates/actions/

Resetting files or updating CoroUtil

CoroUtil will overwrite the contents of config/CoroUtil/data/ every game run if:

  • The folder is empty, or
  • It detects zero file changes by comparing file contents against the info in filehashes.txt (leave this file alone or you might lose data)

If you make changes to the json files, you should be safe from having files overwritten.

This is to make sure any new mod updates has the latest json on the filesystem unless files have been manually edited.

For updating the mods when you have custom files I would recommend backing up your json files, deleting the data folder, then let the mod generate the new files, you could then paste your files back in and see if things work out ok ingame, if not, decide on how to merge in your changes.

JSON Structure

The default invasion setup is making use of 3 files: templates/action/mob_spawns.json, templates/cmods/invasions_cmods.json, and templates/conditions/invasions_stages.json.

Only mob_spawns.json is truely required, you can get away with using only it if you don't use templates at all, the default setup uses templates though, the other 2 files contain pre-made templates referenced in mob_spawns.json to keep down on the copying and pasting.

I would recommend copying bits from these files to create and customize your invasions.

mob_spawns.json

  • Contains a list of potential spawn templates, defined in the "templates" list object
  • Each spawn template can have a list of conditions required to use the spawn profile, defined in the "conditions" list object, this list is optional
  • Each spawn template has a list of spawn profiles, defined in the "spawns" list object
  • The spawn profile defines a lot of things
    • What to spawn
    • How it spawns
    • How many spawn
    • What cmods to give them

Have a look at mob_spawns_example_commented.json to see every piece explained.

Cmods

A Cmod is just short for the more corny term: Coro Modifier. They modify an entity in various ways, from things as simple as health to more complex things like preset AI routines.

To see an up to date list on every cmod possible, the file all_cmods.json will always be where to look for every single thing the cmod system supports, there is also lots of comments in the file to explain them as much as possible.

Conditions

A Condition is used to decide if a mob spawns profile can be used at the moment an invasion starts. You can define things like what wave number it should be used, what what difficulty, or for randomizing between various mob spawn profiles like the default spawn templates do.

To see an up to date list on every condition possible, look at all_conditions.json

Dynamic Local Difficulty

CoroUtil has a local dynamic difficulty systems that tries its best to figure out what stage of the game the player is at, so it can ramp up difficulty along with them.

Use of this system isn't actually required for invasions, but the default invasion setup uses it for scaling up inventory equipment, health, attack damage, speed, xp of mobs and also how many spawn in an invasion.


TODO:

Testing Tips

TODO:

Enable helpfull debug output to diagnose potential problems in json:

  • in CoroUtil/General.cfg, set useLoggingDebug to true

You will be able to see if there were any syntax errors with your json file, and where the error was, if everything went ok it should look like this: processing, detected as DifficultyData: ./config/CoroUtil/data/templates/actions/mob_spawns.json [19:53:05] [main/INFO]: detected mob spawns to deserialize by detecting: mob_spawns

Live edit normal config options:

  • /config

Live reload data from the json files ingame:

  • /coroutil reloadData

See difficulty of area:

  • /coroutil difficulty

Reset dps calculations for 50 chunk area around you:

  • /coroutil resetDPS