Fractal Softworks Forum

Please login or register.

Login with username, password and session length

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - alaricdragon

Pages: [1]
1
Modding / [0.97a] Forge Production V1.1.5
« on: April 16, 2024, 11:47:30 AM »


Download Forge Production V1.1.5
Look at the original thread here
 
Requires no libraries.
Cannot be removed from games in which it was already used.

Summary:
  • Acquire production hullmods from derelict mothership.
  • Use their production capacities to make supplies, fuel, machinery and ships from raw resources.
  • Consult tooltips for detailed information about production processes.
  • Manage production with comprehensive ability toggle.
  • Bring up control panel with a hotkey for even finer regulation.
  • Open settings file in mod folder to adjust features to your liking.
  • Employ bundled conversions spreadsheet to plan your ratios adjustments.

Content:
 
Preview
[close]

 
Acquisition:
 
Preview
[close]

 
Information:
 
Spreadsheet

Note: This is a preview. Interactive spreadsheet file is in the mod folder.

[close]

Changelog
v.1.1.5
  • fixed crash on startup when ran without crew replacer. sorry about that.
v.1.1.4
  • I, alaricdragon, have taken over this mod. may it see prosperity under my rule
  • added version checker support. (hopefully)
  • updated to the newest starsector version.
  • added some crew replacer stuff. but don't worry, you can still play this without crew replacer.
v.1.1.3
  • Fixed signature mismatch for addImageWithText().
v.1.1.2
  • Hopefully fixed a bug with resetting module configs.
  • Added skins to the blueprint chooser.
v.1.1.1
  • Hopefully fixed a bug with repeating mothership interactions.
  • Added a setting for unlock of ability and hullmods at game start.
  • Added a setting to disable hull production limitations.
v.1.1.0
  • New feature: Control panel, which allows for toggling of individual production capacities. No more setting repairs suspension!
  • New feature: Hull parts production capacity - can produce some derelict and low tech frigates at a steep cost, requires having Salvage Rigs.
  • New feature: Plausible way of obtaining hullmods - salvage from derelict Motherships. Hullmods are now unobtainable via normal drop or markets.
  • Re-designed and rewritten mod internals - this update is most certainly guaranteed to break your saves.
  • Reshuffled and removed some superficial settings.
  • Production report message icon no longer clickable and doesn't take you to intel tab anymore.
  • Production now also has a chance to trigger fatal incidents which result in a loss of crew, similar to breakdowns.
  • Redone pretty much every tooltip - hullmods, ability, report.
  • Removed civgrade and cargo restrictions, replaced with CR malus.
  • Included interactive production values spreadsheet in release package - might be a help in making settings adjustments.
[close]
Notice of acquisition
the original mod creator has went to me seemingly at random and asked me to take over this mod for them. I have accepted.
For now im going to keep this mod on life support, making sure no issues arise. but I might contribute to this project latter.
all credits go to the original mod creator Ontheheavens for creating this mod, because as anyone who has ever played one of my mods knows, i cant create something this nice looking to save my life.

if i have in any way misinterpreted this set of interactions, please let me know so we can sort this out, but you were really really clear in what you wanted, so i don't think that's the case this time, but if it was, just let me know
[close]

2
so you want to add a item or commodity to the game, but don't know were to begin, or simply cant understand one small step of the process?
well, don't worry! I am here to guid you though this task.
in this tutorials, we will cover the following:
1) how to add a item to the game
    -what the requirements are for a items sprite
    -how the CSV file works, and what every variable in it means, and how to set yours up.
    -how to give your item a description
2) multiple methods of how to make a item show up in game
    -adding a item to the in game economy, and how that effects were the item is sold in markets
    -how to add items to the players inventory with code
3) how to change your items description dynamically (based on how literally anything you could think of)
    -adding text to a items description
    -adding 'F1 to show more' text to your items description
4) and maybe latter, we can talk about 'special items' but not now sorry

sprites:
Spoiler
# requirements for a sprite:
Spoiler
so, the requirements are as follows:
1) *the image size should be 100 by 100 pixels or less.*
although you can have images larger then this, it will be larger then the 'box' that you can put a given commodity in and will look weired.
also, feel free to have images smaller then this. the game seems to handle even weird height/width ratios well enough in my experience
2) *the image should have a transparent background.*
although you can neglect this rule if you want, It will result in your item being very obviously different from the rest of the game. especially whenever you try to pick the image up.

besides the 2 rules both, there are not 'requirements' for a sprite. although even the 2 rules I describe can be broken, if you really really want to.

I am not a spiriting expert, so if you don't know how to resize a given image, or how to make a background transparent, i found 2 tutorials for gimp here:
cropping(1:44) and resizing(4:00) a image: https://www.youtube.com/watch?v=dQSlqcMCKx0&t=253s&ab_channel=DoiT8
adding a transparent background: https://www.youtube.com/watch?v=nl2uqKqbryo&ab_channel=EZTutorials
[close]
# were to put your sprite
Spoiler
now that you have a sprite, you need to put it somewhere the game can access.
enter your mod folder, and create a folder named 'graphics'. inside that folder, create another folder named 'icons'. and inside that, create yet another folder named 'cargo'
(please note: you can put your images anywhere in your mods folder, but this is the way most mods are structured, and the base game is structured. so it can help to organize yourself using others organization technics if you plan on your mod having a lot of things in it.)
from there, put the sprite you intend to use in the newly created 'cargo' folder. your setup should look something like this:

please take note of the name given to my sprite. most mods structure there sprites and other not player visible names to have a name like 'myModsName_WhatThisImageRepresentsName'. (were 'myModName' is the name of your mod, and 'WhatThisImageRepresentsName' is the in game name of whatever this image is suppose to be)
you can use always use a different naming structure of course. but if by chance another mod happens to add a image of the same name, at the same location, Weather your mod or theres might end up using the wrong image, and that can be... uncomfortable.
now that you have a image set up in your mod, we can move onto the interesting parts:
[close]
[close]
# the commodities.csv file
Spoiler
so the first thing we need to do is set up the location were the commodities.csv file will go. unlike were your image goes, this is extremely important. if you put this file in the wrong location, starsector will not read it.
enter your mod folder, and create a folder named 'data'. inside that folder, create another folder named 'campaign'.
now, we are going to get a commodity.csv file. because building one ourself is frustrating, im just going to go into the starsector-core and copy theres.
so in the 'starsector\starsector-core\data\campaign folder, and find the file called commodities.csv

now copy and past it into your own mods data\campaign folder

now we need to open it. i use a editor called 'Rons CSV Editor' to open such files, but you might have your own way of opening them.

wow. there is a lot of junk here. feel free to look around at everything, if you want, and try to guess what all the different stats do. I will of corse exsplain them all later.
what i want to do right now, is delete every line below 'supply'. to clean it up a little.
(in Rons CSV Editor, I don't know about others) you can do this by clicking on the numbers on the right, then dragging your mouse down to select multiple lines. then pressing the backspace button

mush more clean!
now, we are going to edit the 'Supplies' name and add a # in front of it. this will make the code ignore that inter commodity, so we don't mess with the base games supply somehow by mistake.
next, we are going to insert a new line both the supply (in Rons CSV Editor) this can be done by right clicking anywhere on the line were the supply's are, and pressing the 'insert row(s) above' option
your CSV file should look like this:

so, now we can start to fill out all the boxes so we can have our commodity
as we do, i am going to talk about what each and every box does, and what you mgiht want to put into it
Spoiler
1) name: the name of your commodity is the name that it will be referred to in game.
    -im going to write: 'Combat Lobster' because: that's what i want this to be called.

2) id: the id is how the game will remember your commodity. -not- to be confused with the 'name' of your commodity
    also note: if your save game has a item of this ID, and you change it (and no other mod or the base game has a commodity of this ID), your game will crash. so please remember that.
    -im going to write: 'LobsterCombatant_CombatLobster' because: I want to follow this equation: modName_commodityName, to avoid other mods from having the same commodityID as me (wish would cause my lobster to override theres, or theres to override mine)

3) demand class: is what the economy will see this commodity as. this should always be equal to a commodity 'id', unless you want the game to pretend its a different commodity (for the sake of economy simulation) (example: 'Volturnian Lobster' is in the 'luxury_goods' demand class, so it acts like a 'luxury_goods' for the sake of economy simulation)
    -im going to write: 'LobsterCombatant_CombatLobster' because: I want my commodity to act as its own thing

4) base price: this is how mush it generally costs to buy this item from markets (before tariffs)
    -im going to write: '250' because: that's how many credits i want one to cost

5) export value: this is how many credits a single unit of demand (on a colony) adds to the global market share for this commodity
    -im going to write: '500' because: I want my lobsters to be somewhat valuable.

6) price variability: this is how mush the price of this commodity in markets can vary depending on demand. so setting it to 3 means the commodity can be 3X the price, or 1/3 the price. at the most extreme.
    note: im not 100% sure on my equation there, but i do know that this is what this does
    -im going to write: '3' because: that's what every other commodity in the game has (that can be brought or sold), and i see no reason to have this cost a different amount

7) utility: How much demand one unit of the commodity satisfies. it is recommended to keep this at 1 most of the time.
    -im going to write: '1' because: I see no point in setting it to anything else

8) origin: probably does nothing, but at some point there was an idea for having exotic commodities that cost more further away from their "origin", still, it might do nothing
    -im going to leave this blank because I see no reason to use this

9) tags: a 'tag' is something that can be attached to a commodity, and can be read by the game or mods. you can add as many tags to a given commodity as you like, but a tag can change a lot of things, so make sure you know what your doing first
    -im going to write: 'military' because: a combat lobster should be 'military'.
    tags that exsist, and there functions, but only as far as i can tell. I miss things sometimes:
Spoiler
    1) military
        the military tag does a few things:
        1) it makes the commodity show up in the military market
        2) it prevents you from trading it in the milatary sub market unless your relations are at least 'FAVORABLE'
        3) makes it so selling this commodity on a market has a increased 'impact' (although, im unsure of what this means)
    2) expensive
        -some commodity based missions will prefer to give you missions based around commodity's with this tag
    3) crew
        -excludes this commodity from participating in procurement missions.
        might be used latter for something else, but its not yet.
    4) personnel
        governs if a commodity uses personnel slots, but only in NPC trade fleets??? (so it effectively does nothing)
    5) marines
        -excludes this commodity from participating in procurement missions.
        might be used latter for something else, but its not yet.
    6) food
        -probably unused for now. might be used latter
    7) medical
        -this is used in getting who you contact in a trade mission. (CITIZEN, or POST_MEDICAL_SUPPLIER. depending on i dont know.)
    8) luxury
        -this is used in getting who you contact in a trade mission. (civ or pirate, depending on if this commodity is legal or not)
    9) exotic
        -probably unused for now. might be used latter
    10) meta
        -prevents you from raiding this item from markets?
    11) nonecon
        -prevents you from raiding this item from markets?
        -excludes this commodity from participating in procurement missions.
        -prevents you from putting this item into your personal stockpile on your own markets.
    12) ai_core
        -lets you assing this item to the AI core sloot at a market
    13) no_loss_from_combat
        -prevents the player from losing this item
    14)no_drop
        -I think this prevents you from getting this item? I don't know though, because i could not find the code for it.
    15)nosell
        -this tag exists in the code, but i cant find were its used. It might be unused
[close]
10) stack size: does nothing anymore. used to determine stack size
    -im going to write: '0' because: it is no longer used

11) cargo space: the amount of cargo space each item takes in your cargo bay.
    -im going to write: '1' because: I think that's fine (you can set it to any number you like though. like 0.01. or 9001 or 0. whatever you think will be fun)

12) icon: the path to the sprite that this commodity uses.
    -im going to write: 'graphics/icons/cargo/LobsterCombatant_LobsterFighter.png' because: that's the path to my file (and the name of my image)
    -if you put your file somewhere else in your mods folder, you will need to write a path to it. and if your image has a different name then mine (and it should) you will need to write that name instead of my images name

13) sound id: the sound this commodity plays when you pick it up
    -im going to write: 'ui_cargo_volturn_lobster because': that's the lobster sound, and i want to use it (feel free to copy any sound from the commodities.csv file)

14) sound id drop: the sound this commodity plays when you put it down.
    -im going to write: 'ui_cargo_volturn_lobster_drop' because: that's the lobster sound, and i want to use it (feel free to copy any sound from the commodities.csv file)

15) order: the order this item will try to be sorted into when you sort your cargo bay. lower numbers means it will be more towards the top right, lower numbers mean it will be more towards the bottom left.
    -im going to write: '3' because: I felt like that was a good number? you can mess with this and see were you want your item to end up in your lists

16) economyTier: The order in which the economy simulation runs. Stuff lower on the production ladder (e.g. ore) needs to have a lower tier than the stuff that's made from it (i.e. metals) to have the simulation stabilize more quickly.
    -im going to write: '1' because: I plan to have this commodity require nothing to be produce

17) econUnitOrigUnused: this does nothing right now
    -im going to write: '0' because: this does nothing

18) econUnit: effects how many units of this commodity are available at a market (per output)
    -im going to write: '150' because: I like the number

19) baseRaidDanger: how mush more dangerous this commodity is to raid compared to others. can be left blank for LOW danger, i think.
    the accepted values of this are:
       MEDIUM
       HIGH
       EXTREME
    -im going to write: 'MEDIUM' because: the lobsters might fight back. (for most things, you should leave this blank.)

20) eU * base value: this is quite literally, what you put in the 'econUnit' slot * by what you put in the 'base price' slot
    -im going to write: '37500' because: 150 * 250 = 37500 (and 150 and 250 is what i put in the 'econUnit' and 'base price' slot, respectively)

21) iconWidthMulti: how close together your icons are on the market screen. smaller values are good for icons that are more tall then wide. higher values can sometimes be useful for wider commodity.
    -im going to write: '1' because: I copied the 'Volturnian Lobster' stats for this.

22) plugin: this does nothing, as far as i can tell.
    -im going to leave this blank because: this does nothing

23) desc: this does nothing. a forgotten bit of data from a lost age. if you want to add descriptions to your items, i will show you soon.
    -im going to leave this blank because: this does nothing
[close]
now after setting up all the varubles there (or just copying something from the base games commodity.csv file, and changing the id to something different) your commodities.CSV file should look something like this:


FAQ:
    Q: how do i make my commodity take crew space, or space in my fuel tanks
    A: as far as i can tell, there is no way to do so. maybe someday we will find a way.

    Q: I want to make my commodity make a custom sound when you pick it up / drop it
    A: I dont know how sounds work, to my shame. however, what i do know is:
        1) there is a sounds.json in the config folder of starsector-core that you could look at
            -the sound ID that you input into the 'sound id' and 'sound id drop' are found here, and link to a file in the 'sounds' folder found in starsector core.
        2) there is a sounds folder in the starsector-core that you could look at.
            -the sounds themselfs are found here.
        if you want to structure your mod like the main starsector (don't know if its important or not) create a sound folder in your mod folder, and create a sounds.json in your /data/config folder.
        if you look at the sounds.json structure, you should be able to understand it (although it might be easier to learn from mods with less sounds)


we are now going to check out our commodity in game. so lets save and close the CSV file
i advice you to download and install the 'console commands' mod (https://fractalsoftworks.com/forum/index.php?topic=4106.0) for this part, so you can test out your commodity
enable the game, and press 'CTRL' + 'SHIFT' + 'BACKSPACE' to open the console commands
then type in the following command:
'addItem commodityID'
were 'commodityID' is replaced with the ID of your new commodity you added to your CSV file
and if all went well, there it is!

but wait, if we move our mouse over the commodity, as some of you may have expected...

there is no description!
[close]
# the descriptions.csv file
Spoiler
now we need to add a description to our commodity. and there are a few ways to do this. we will be starting with the descriptions.csv file.
first, go into your mods data folder, and create a new folder named 'strings'
from there, we are going to go into starsector\starsector-core\data\strings and copy and past its own 'descriptions.csv' file into our newly created string folder
your new strings folder should now look something like this:

now we are going to open the newly copied CSV file. and then we are going to delete every line but the one at the top, and the category line
your CSV file should now look like this:

now, we are going to start to change this to match out own commodity.
first, change the id section to say your commodity id (so i would change 'lightmg' to say 'LobsterCombatant_CombatLobster')
second, change the type section to say 'RESOURCE' (so i would change 'WEAPON' to say 'RESOURCE') (also, the reason for this is to let the game know that this is looking for a commodity. it -will not- work if it says anything else, because you have a commodity that you want to have a description)
lastly, change the text1 section to say.. whatever you want your description to be (so i would change... i bunch of text to say 'mean, lean, fighting lobster')
and that's it! your new description is completed. here what mine looks like for reference:

also, ignore all the other sections (text2,text3,text4,notes) they are not needed here
if you start up the game, and give yourself one of your commodity again, it should look like this

and that's all for the basic of descriptions.
[close]
# advanced descriptions
Spoiler
in this section, we are going to cover something slightly more advanced for the first time.
if all you want to do is make a commodity and have it in game, skip this section.
if you for some reason want the following:
1) highlights in your description
2) the ability to change your description with code
3) the ability to change what is displayed when your press f1
then please read this section

so for advanced descriptions we are going to need 3 things:
1) create a new class and name it 'modName_CommodityTooltipModifier' were 'modName' is the name of your mod.
   next, make the new class 'implements CommodityTooltipModifier'
   your new class should look like this:
   
2) in your main java class (the one your mod_info says is your 'modPlugin')
   add the following function:
   @Override
   public void onGameLoad(boolean newGame) {
       super.onGameLoad(newGame);
   }
   your modPlugin should look something like this:
   
3) add your newly created 'modName_CommodityTooltipModifier' class as a transient listener. (note, you can make it none transient if you want it to rembmer data, but if you do, I advice you to make sure you dont add one if the listiner is already present (make it so it only adds if new game is true or something maybe?))
    you can use the following function to add such a listiner:
    Global.getSector().getListenerManager().addListener(new modName_CommodityTooltipModifier(),true);
    now your modPlugin should look something like this:
   

and that it! the hard part is done.
now its time to write your description. i will show you a simple example, but for more advanced things (like images, or crazy things) you will need to look up how to use the 'TooltipMakerAPI' on your own.

so, i would like to explain a few things about this.
1) line 15 is so this code will only effect the one commodity. if i didn't have that if statement, this would effect every stack of items in the game.
2) line 17 and 18 show how to create and highlight text. the text i want to highlight will always replace the %s in the first inputted text. this lets you have things like variables, instead of just static strings be added to your descriptions
3) line 21-23 show how to display text only when the text is 'expanded'.
now for showing it in game:
not expanded:

expanded:

and that's all for 'advanced' descriptions. simple i hope.
[close]
# Implementation
Spoiler
so you made it. and now we are here.
the question that must be asked, the one you have felt, silently at the back of your mind:
'how do i actually see this in game without commands'
and oh boy.. im glad you asked.
there are 3 ways to see a commodity in game without commands:
1) by making it so the item can be found and looted on things like ruins, salvage stations, and random kites outside the core worlds:
   https://fractalsoftworks.com/forum/index.php?topic=15244.0
2) by adding it to the players cargo with code:
    Global.getSector().getPlayerFleet().getCargo().addCommodity("LobsterCombatant_CombatLobster",100);
    you can replace the "LobsterCombatant_CombatLobster" with the ID of the commodity you want to add, and the 100 with how many of said item you want to add
    this can be useful when giving rewards for quests and, or other events.
    you can also use the addCommodity("LobsterCombatant_CombatLobster",100); function on any cargo in existence, if you so desire.
3) by adding it to a markets supply and/or demand (and therefore, a markets sub markets).
    with this, there are a few ways to go about it:
        1) adding your commodity to a industry supply / demand remotely
        2) replacing a industry so it makes your commodity.
        3) creating a new industry that makes your commodity.
    I will go over each of the options here in soon, but i will focus on number 1. the others will only get a quick description, or we will be here all day.

    1) adding supply and demand without overriding or creating industry:
Spoiler
        this is... different. it can cause lag, but it allows for the ability to add supply and demand without worrying about your code being overridden.
        also, normally when doing something like this, i use the marketRetrofits library, as it has a lot of things to help me run code more efficiently, but im not ready to create even a basic tutorial on how to use that yet, so here we are.
        so, lets get started! I will try to explain what we are doing as we move along:
        1) create a new class, and make sure it 'implements EconomyAPI.EconomyUpdateListener'. also, add the functions it wants you to.
           
        2) now add this newly created class as a 'UpdateListener' using the following command in your modplugin:
            Global.getSector().getEconomy().addUpdateListener(new modName_BaseCampaignEventListener());
            now your modplugin should look something like this:
           
        3) and now for the fun part! adding supply or demand to a industry. for this, go back to the class you made (the one that implements the 'EconomyAPI.EconomyUpdateListener' class).
            so, what you need to do here can vary a lot depending on what you are going to do, so my first example is going to be extremely basic, but the example is going to increase in complexity as we move on.
            so for the first example:
           
            so in this example, im adding 'Combat Lobster' as supply on lions guard HQ's, and im adding 'Combat Lobster' as demand on heavy battery's. there are a few parts to this that i would like to point out
            lines 17-20 are variables. i didn't need to make everything a variable, but it makes it easier to read and modify, so i did so.
            on line 22 we have a for loop. it loops over every market in the game. all of them. you don't need to do this, unless you want to check every world and apply demand or supply changes to industry's on every one, wish i do, so i have.
            on line 24 - 27, we see how to add supply. I would like to explain this in detail, line by line. so please read this if you want to fully understand whats going on here.
            line 24: this if statement prevents us from trying to run functions on a industry that does not exist, and crashing the game.
            line 26: this is a important line, the line that actually lets us add supply to a industry (and by extension a market) remotely. a few things to note however:
                market.getIndustry(supplyIndustry).getSupply(commodity).getQuantity().modifyFlat(source, market.getSize()-1);
                'supplyIndustry' needs to be the ID of a industry.
                'commodity' represents the ID of the commodity you want to add.
                'source' this is the 'source' of this modification. don't leave this blank please, as if anyone else try's to modify said supply or demand on the same markets industry's commodity, they might overwrite yours (or you might overwrite theres) because if the source is the same, the game assumes you mean to overwrite anything else with the same source. so be careful.
                'market.getSize()-1' is the quantity of commodity this industry should produce. it can be any integer, but most commodity have an equation using 'market.getSize()', so the market can have more commodity demand / supply when it gets larger.
            on lines 28 - 31, we see how to add demand. the function is exactly the same as lines 24 - 27, but we run 'getDemand' instead of 'getSupply'.

            we can also look and see how this looks in game
           
           
            as you can see, the lions guard is now producing lobster, and the heavy battery's are demanding it...
           
            across the inter sector!
            so you will see 'combat lobster' in trade fleets, in markets were it is demanded / supplied. everywhere. you can even get missions for combat lobster delivers.
            your commodity is completely implemented into the economy. congratulations

            ok, some design pacific issues that i would like to mention:
                1) my lobsters are only being built at the lions guard HQ. and not at worlds that have lobster.
                2) my lobsters are only being demanded at heavy battery's, and not at ground defences?
            so lets fix that:
            fair waring: this code is more complicated then the last, because i like this idea and want something good. also, i am terrible at explaining complicated things.
Spoiler
           
            so, if you look at this and think 'what?' don't worry, understanding something like this is not required. this is more of a bonus section for my own peace of mind then anything.
            so, lets go over the changes:
            lines 16 - 22 have changed in 3 ways:
                1) a new string called 'condition'. this references the market condition that will be required to add lobsters to the world.
                2) both 'supplyIndustry' and 'demandIndustry' are now arrays. this is for letting me have multiple industry have as supply or demand easier
                3) the new arrays called 'supplyValue' and 'demandValue'. this represents supply and demand + marketSize values of each industry (in supplyIndustry and demandIndustry respectively).
            lines 26 - 35 have changed in 3 ways.
                1) a new if statment stops supply from being added to markets if the 'volturnian_lobster_pens' is not present.
                2) i now run a for loop, going through all items in supplyIndustry and adding supply to them.
                3) i now run a a equation, involving supplyValue[a] to determin the amount of supply on this industry.
            lines 36 - 41 have changed, the same as lines 26 - 35, but without the if statement.
            things to note:
                if you wanted to modify this for your own needs, make sure 'supplyValue' and 'demandValue' are at least as long as 'supplyIndustry' and 'demandIndustry' respectively, or you will get a crash.

            if you don't understand this, please don't be afraid. this was something i needed to add because it was bugging me that if you played a mod that let you get lobster on one of your worlds, you would not beable to train combat lobster.
[close]
[close]
    2) replacing a industry:
Spoiler
        if you want to know how to replace a industry...
        1) copy the industry.csv file (placing it in the data\campaign folder of your mod folder),
        2) delete everything but the industry you want to replace,
        3) change the plugin to something in your own mod, that extends the previous plugin (if you dont know what the previus plugin was, its in the plugin section. it should be after the last '.' in the line),
        4) then in the apply() function (that you should override) run both super.apply(); the following command:
           supply("LobsterCombatant_CombatLobster",5);
            you can replace the "LobsterCombatant_CombatLobster" with the ID of your commodity.
            you can replace the '5' with the amount of this commodity you want this market to produce.
            please keep in mind: most commodity output increases with market size. so its wise to use an equation like:
            supply("LobsterCombatant_CombatLobster",market.getSize() - 1);
            (so the industry will produce '2' at size '3', '3' at size '4', '5' at size '6', and so on)
            (you can also do the same thing for the demand a industry has with the 'demand("LobsterCombatant_CombatLobster",5)' function)
        here's what your CSV could looks like (I overrode the lionsguard industry)
       
        please pay attention to the plugin section. its the only section i changed, and the only one you need to change with this method.
        here's what your code should look like
       
        this is what your code should look like, although what 'supply' you are adding, and what class you are 'extend' might be different
        we can even see the changes in game!
       
       
        please note this method has some issues:
        1) if anyone else try's to do the same thing to the same industry, one of your plugins is going to be overwritten, wish can cause issues
[close]
    3) creating your own industry
Spoiler
        if you want to create your own industry for your commodity.. it has less isuees, but can be a pain.
        1) copy the industry.csv file (placing it in the data\campaign folder of your mod folder),
        2) delete everything but the industry you want that you think costs an OK amount,
        3) change the plugin to something in your own mod, that extends BaseIndustry,
        4) then in the apply() function (that you should override) run the following command:
           supply("LobsterCombatant_CombatLobster",5);
            you can replace the "LobsterCombatant_CombatLobster" with the ID of your commodity.
            you can replace the '5' with the amount of this commodity you want this market to produce.
            please keep in mind: most commodity output increases with market size. so its wise to use an equation like:
            supply("LobsterCombatant_CombatLobster",market.getSize() - 1);
            (so the industry will produce '2' at size '3', '3' at size '4', '5' at size '6', and so on)
            (you can also do the same thing for the demand a industry has with the 'demand("LobsterCombatant_CombatLobster",5)' function)
        here's what your CSV could looks like (I used the lions guard industry as my base)
       
        this time, instead of only changeing the plugin, i also changed the id,name, and description
        although, you technically only need to change the plugin and id for this to work, it can get confusing for players if you don't at least also change the name.
        here's what your code should look like
       
        this is what your code should look like, although what 'supply' you are adding, and your classname might be different
        we can even see the changes in game!
       
       
[close]
    and that's all i will be talking about, in relation to creating and modifying industry in this tutorial.
    if i find/create some good tutorials on how to do this, i will likely put them -->here<--
[close]

lastly, i would like to link my little mod i mad for this tutorial, so you may look at it for examples, if you so wish: https://github.com/Alaricdragon/LobsterCombatant/tree/basic_Commoditys

3
I like the way the player faction fleet setup works in starsector. The simple select preferred ships and weapons approach, when a few sliders for more interesting options like the aggressiveness of your fleets and what type and sizes of ships is interesting and easy to use. However, as I played the game and wanted more strange faction fleet competitions, I found this system lacking.
a list of things I tried, and the issues I had
1) only having very small ships in faction
Having to large fleets be produced at my markets caused larger ships to spawn
2) having my fleets have a bunch of small ships around a single big ship
Possible, provided your big ship is not to credit costly. Required me to have only big ships of one'type'and small ships of the others, then set ship size to small and the type the big ship is in to 3/5.
3) having fleets of only one big ship
Other ships would always spawn. Sometimes more then one big ships would spawn
[close]

So here is what I think: let the player be able to add 'restrictions' to there factions fleet compassion. Here is how it could work:
ship and fleet groups
1) allow players to put ships into 'groups'.
2 allow players to put restrictions on groups
Example: group 1 must have at least 1 ships, at most 7. And only steady officers. And no unselected ships. And prefer officers in this group over others.
3) allow players to make fleet groups and set what groups can spawn in them.
Example: fleet type A active groups are 1,3, and 7.
Fleet type B active groups are 2,3,4, and 7.
So on.
[close]

This rais since issues with fleet uptime: what's stopping a player from saying "group a only selected ships, and at least 30 ships, and then selecting a capital ship then having all there fact picits be capital spam?

Let's call this system 'fleet supply'. It's a set of rules that will prevent this without preventing creative faction fleets.
fleet supply
1) every world gets a certain amount of fleet supply, based on the'fleet size' market stat.
2) if a fleet requires more supply then what is available, fleets will only spawn here fleetSize/fleetCost as often.
This will create downtime In patrols, were there is not a patrol from a world. This would be a representation of how overtakes your world is, when it comes to producing and maintaining that good super cap stack.
3) if a fleet forces less supply then what is available, fleets will down here fleetSize/fleetCost as often
This represents you forcing your fleets to be much smaller then required, so you have more of them. Think scouts. Of just little combat formations.
4?) very fleets needs at least one officer. If your world is using all there officers, you can't spawn any more fleets, regardless of fleet supply
This feels restrictive. Don't like it. But it makes sense, and would prevent someone from let's say, spawning 200 fleets of one kite from one market. Maybe add an option in config for that one guy(me?) who wants to break the game?
[close]

Now for the last thing I feel restricted on, what fleets spawn were:
fleet spawn restrictions
1) fleets can be selected to spawn in a market from the command screen, wish will nable this fleet type to spawn there.
2) allow each fleet type to have a weight, to determine how often this type of fleet spawns there.
[close]

'But this is not friendly to anyone who does not want to mess with this'. I hear you and agree, that's why the deflat group would exist. This group would be a fleet type that:
the default group
1) on by default on all markets.
2) would have it's options set up to spawn fleets freely by default.
3) would have an option to turn on / off at will, after you have at least one other fleet type setup.
4) would be able to reset it's settings with a button
 
[close]

'this does more then let's you have one big ship with little ships around it? Why all the extra rules'?
I never even tried my more crazy ideas. How could I? The most simple of things seemed mpossible...

This, overall would let be final build the strange a wacky roleplay setups I really want, but can never get just right...
I need sleep. Plz tell me what you all think and why this is a terrible idea.

4
hello all, for a while now I have been getting this crash. its a crash that happens seemingly at random. the only way to avoid it is to go back to a save a few in game months ago, and move very far in a direction you were not going before, and -hope- that the crash does not happen when the in game time reaches the point it crashed last time (and if it does go even farther back). no clue what triggers it or why, but it has made my game almost unplayable the past 2 days. I think its a mod issue, but I have no clue what mod it could possibly be. it is more likely to happen outside of the core worlds, but it can still happen in the core worlds.

the primary issue that stops me from finding out what mod is causing this issue myself is the nature of the crash itself. I can go 10 or more hours without getting it, or it can happen so mush it feels like I'm swimming through landmines to not get a hard crash.

I do have a few dozen saves just about 10 - 15 mins before the crash shows up as well if anyone wants to take a look at them. although finding most of them would be difficult,  I make a lot of extra saves because of this. (I do know were 2 are though).
the crash
434040 [Thread-10] INFO  sound.OooO  - Playing music with id [miscallenous_corvus_campaign_music.ogg]
434464 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain  - java.util.ConcurrentModificationException
java.util.ConcurrentModificationException
   at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:911)
   at java.util.ArrayList$Itr.next(ArrayList.java:861)
   at com.fs.starfarer.campaign.econ.Market.reapplyConditions(Unknown Source)
   at com.fs.starfarer.campaign.econ.Market.advance(Unknown Source)
   at com.fs.starfarer.campaign.econ.Economy.advance(Unknown Source)
   at com.fs.starfarer.campaign.CampaignEngine.advance(Unknown Source)
   at com.fs.starfarer.campaign.CampaignState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Thread.java:748)
[close]
enabledMods
{"enabledMods": [
  "$$$_lightshow",
  "$$$_trailermoments",
  "AI-Retrofits",
  "Adjusted Sector",
  "AAIPP",
  "all_the_domain_drones+NewDrones",
  "all_the_domain_drones+Vanilla",
  "anotherportraitpack",
  "ApproLight",
  "ApproLightPlus",
  "arthrspiratesbutepic",
  "lw_autosave",
  "timid_admins",
  "bountiesexpanded",
  "ORK",
  "CaptainsLog",
  "Csp",
  "chatter",
  "cmutils",
  "lw_radar",
  "timid_commissioned_hull_mods",
  "lw_console",
  "aaacrew_replacer",
  "DetailedCombatResults",
  "diableavionics",
  "dronelib",
  "edshipyard",
  "seven_nexus",
  "pt_exiledSpace",
  "XLU",
  "fleethistory",
  "fleetsizebydp",
  "forge_production",
  "sun_fuel_siphoning",
  "fp",
  "GrandColonies",
  "HMI",
  "HexShields",
  "hte",
  "IndEvo",
  "JYD",
  "kadur_remnant",
  "keruvim_shipyards",
  "kingdomofterra",
  "kyeltziv",
  "lw_lazylib",
  "ArkLeg",
  "logisticsNotifications",
  "lunalib",
  "exshippack",
  "MagicLib",
  "Mayasuran Navy",
  "missingships",
  "niko_moreCombatTerrainEffects",
  "more_hullmods",
  "ness_saw",
  "nexerelin",
  "kayse_phaseships",
  "sun_nomadic_survival",
  "OcuA",
  "oas",
  "ORA",
  "pn",
  "pearson_exotronics",
  "wisp_perseanchronicles",
  "Polaris_Prime",
  "PulseIndustry",
  "QualityCaptains",
  "reactiveui",
  "rotcesrats",
  "sv",
  "sikr",
  "tahlan_scalartech",
  "SCY",
  "SEEKER",
  "PT_ShipDirectionMarker",
  "stardustventures",
  "sun_starship_legends",
  "superweapons",
  "timid_supply_forging",
  "supportships",
  "tahlan",
  "presmattdamon_takenoprisoners",
  "Terraforming & Station Construction",
  "exalted",
  "star_federation",
  "TORCHSHIPS",
  "transfer_all_items",
  "underworld",
  "uaf",
  "US",
  "ungp",
  "URW",
  "vanidad",
  "XhanEmpire",
  "astroidships",
  "aaamarketRetrofits",
  "prv",
  "shaderLib"
]}
[close]

5
Modding / 0.97a - Market Retrofits
« on: February 13, 2023, 12:58:01 PM »
Market Retrofits V0.2.3

what is market retrofits? it is a library for modders, containing all my painstakingly crafted ways i had to edit the markets and industry trying to do things that i should have given up on if i knew what was good for me.

only download this mod if another mod requires it, or you are a modder looking to use it. it alone will add nothing noticeable to your game.
Download it here

find the documentation here
available mini libarys in this mod:
Spoiler
Commodity changer (functional)
        -allows the mass or pacific changing of supply or demand on a industry
Custom Market Founder (complete)
        -allows a user to add new ways to found markets, with there own requirements and costs. can even run code on founding a market, just to make things extra special
[close]
mini libarys i have planed (or am planing/working on) but might not be complete or even possible.
don't expect anything anytime soon.
Spoiler
    1) industry replacer (disabled for now) (reason: extra unacceptable crazy stupid lag)
        -would allow for complete changing of every function in a industry conditionally.
        -going to give this a redising someday, but for now i am so done.
    2) condition replacer (think its possible. no clue if it is.)
        -replaces functions in market conditions with different ones conditionally.
    3) Commodity changer (functional)
        -allows the mass or pacific changing of supply or demand on a industry
    4) growth changer (it is possible. just need to write it.)
        -allows one to easily remove or add new growth from outside of conditions or industry
    5) hazard changer (I hope this is possible)
        -allows for changing in the hazard button name, description, looks, and function.
    6) free port changer (I hope this is possible)
        -allows the change in the free-port name, and description.
    7) found a market change (done)
        -allows players to have there own requirements and addition code run when founding a market. multiple options available.
[close]

changelog
Spoiler
V0.2.3:
    save combatable with V0.2+:
    fixed rare issue with being unable errors when AOTD pre-collaps facility on them
V0.2.2:
    save combatable with V0.2+:
    updated to the latest version
    added version checker support
V0.2.1:
    save compatible with V0.2+:
    fixes:
        maybe fixed a issue that caused a crash on pressing escape in a normadic survival operation. but could not replicate it to check.
    background:
        did some background work for adding a few more things, that are never going to be ready at this rate.
V0.2:
    completed the 'MarketFounder' class and related functions.
    added additional compatibility with the new library for crew replacer.
    started work on the documentation (almost nothing done there is mush to do.)
    added the following classes:
        for compatibility patches:
           MarketRetrofits_PatchBase
           MarketRetrofits_InitCombatabilityPatches
           MarketRetrofits_CrewReplacer_patch
        for MarketFounder Library:
            MarketRetrofits_MarketFounderMasterList
            MarketRetrofits_MarketFounder
            MarketRetrofits_CustomMarketFounderType
            MarketRetrofits_SurveyPlugin_CrewReplacer
            MarketRetrofits_SurveyPlugin_Base
            MarketRetrofits_SurveyPlugin

            MarketRetrofits_customMarketFounder_dialog
        for other:
            MarketRetrofit_dialogShell
V0.1.1:
    updated to game version 0.96a
V0.1 -
    save compatible with any older version
    new
        -recreated the supply demand library (now called Commodity Changer in notes and code).
        (may contain bugs, but tests showed it was stable. should be no risk of breaking your game.)

    notes:
        i said i was going to release supply demand library a while ago, but the project went out of control. i though i could
        complete the basics of all the library's i wanted to make, but i could not. so this is late now, with little to show.
[close]

6
Is anyone else seeing the issue were, if you try to improve a industry, and then press enter, it will improve it regardless of if you have the required number of story points or not?

7
Mods / [0.97a] Crew Replacer
« on: March 10, 2022, 02:23:00 PM »
Crew Replacer v0.7
an modders utility library thing.
have you ever wanted to create a mod, were you had 'mega salvage rigs' to perform salvage jobs instead of 'crew'? have you every wanted to stop using 'marine's' and start using 'heavy titan walkers' when raiding a world? have you ever wanted to do away with 'heavy machinery' when salvaging, and instead use your newly modded in 'salvage equipment'? maybe you wanted to create a task in one for your mods, were other modders could set things to be consumed in said task but thought 'why bother'? maybe you wanted to have an diverse ground army when attacking an world? but could never find a way to mod that into the game easily and quickly?
well now you can. with CREW REPLACER!

what is Crew Replacer?
Crew Replacer is a mod library built with one goal in mind: to make it easy and quick to mod in new items to be used in jobs. crew replacer lets multiple modders modify the same tasks, by adding a system that lets a modder add an 'crew'(really any type of commodity) to an 'job'. were said 'job's replace all the instances of crew i could find in code.

but what dose that mean? it means that modders now have a system to to change what is used/required when the one tries to 'salvage' or 'survey' or 'raid'. it also means that modders have a system to add new jobs into the game, then let other modders change what is used/required in said task.

still dont understand? feel free to ask me questions. and i will do my best to explain.

Compatibility:
Spoiler
not compatible with anything that changes:
Spoiler
plugins:
   SurveyPluginImpl
rules.csv:
   sal_showRatingAndCost
   sal_optionCheckAccidents
   sal_salvageOptionSelected
   sal_scavengeDebris
   sal_forceRecoveryOptSel
   sal_demolishOptionConfirmed

   marketHostileRaidSel
   marketHostileRaidNonMarket
   marketHostileRaidValuableSel
   marketHostileRaidDisruptSel
   marketHostileRaidConfirmSel
[close]
known incompatible mods and there patches (if they have one)
Spoiler
[close]
[close]
Download

how to use the mod (for modders.)
look at the documentation https://github.com/Alaricdragon/Crew_Replacer/tree/master/jars/src/desing/documentationurl
available 'basic' Jobs in the this mod:
NOTICE: the tutorial / documentation below is a little outdated. im going to make a new one in a while. like the things here work, but its very incomplete.
(note: an Task is not a Job. only an Job is an Jobs)
Job ID's are in quotes. example: Job:"this is an job ID"
Spoiler
Note: quests have not had there requirements modified because I don't want spoilers when I do them. feel free to make your own add-ons that change quest items.

Task:survey(done)
Spoiler
-there is a possibility of a issue in wish the code calls on getXP from the survey pluggin, then you loss some supplys. but hopefully i succeeded in minimizing that possibility hopefully
Job:"survey_crew"(done)
Job:"survey_supply"(done)
 -crew added to the supply_job are not consumed when they should be.
 -the only way i can make then consumed, is if i make it happen every time someone mouses over a planet. and thats a no go for me thanks
 -this dose not effect normal supply.
Job:"survey_heavy_machinery"(done)
[close]
Task:salvage(done/tested)
Spoiler
-DONE in theory. might have a bug or 50, but i simply don't know for sure. i think its working though
Job:"salvage_crew"(done)
Job:"salvage_heavyMachinery"(done)
[close]
Task:raiding(done/tested)
Spoiler
-DONE in theory.
Job:"raiding_marines"(done)
[close]
task: steal a starship mission (done/tested)
Spoiler
functional
job:"Mission_hijack_marines"(done)
[close]
task: repair Coronal HyperShunt (functional/display not yet working)
Spoiler
Almost done, it works, but the display is not respecting me
job:"CoronalHyperShunt_repair_Metals"(done)
job:"CoronalHyperShunt_repair_RareMetals"(done)
job:"CoronalHyperShunt_repair_Crew"(done)
[close]
[close]
for adding crew (basic):
Spoiler
how to get crewReplacer_Job:
Spoiler
crewReplacer_Main.getJob(String job)
   returns: an crewReplacer_Job with the same name. or creates one if none exists.
   job: is an ID that you wish for this job to have. most be no other jobs with this ID.
[close]
how to add a 'crew' to a 'job':
Spoiler
crewReplacer_Job.addNewCrew(String crew,float crewPower,float crewDefence,float crewPriority);
crew:
   is the ID of the commodity that you want to add to this job.
   there can only be one instance of an name in each job. make sure its something distentct.
crewPower:
  is the multiplier to the number of 'crew' already in the fleet. so if you have 10 of this item with a crew power of 2, the game will treat it as though there are 20 of this 'crew' in this fleet.
  default value is 1.
crewDefence:
  is the multiplier to the amount of defense per crew in fleet. so if you were set to lose 10 of this crew, and your crew had 2 crew power, you would only loess 5 crew instead (10 / 2)
  default value is 1.
crewPriority:
  is the order in wish the 'crew' will be used in a job. smaller numbers go first in a job.
  default value is 10.

you can also run:
crewReplacer_Job.addCrew(crewReplacer_Crew crew);
however, you must set crew.name first.
this method is only recommended if you plan on creating your own crewReplacer_Crew class.

crewReplacer_Job.organizePriority();
you MUST run this code after doing adding/changing any crew in a crewReplacer_Job. things WILL GO BAD otherwize.

[close]
[close]
for adding/running jobs (basic):
Spoiler
how to create a new job:
Spoiler
crewReplacer_Main.getJob(String job)
   returns: an crewReplacer_Job with the same name. or creates one if none exists.
   job: is an ID that you wish for this job to have. most be no other jobs with this ID.

crewReplacer_Main.addOrMergeJob(crewReplacer_Job job);
   you can also run this command. however, this is for people who want to create there own crewReplacer_Job class.
   make sure to set your job.name first.
[close]
when running job data there is 3 commands you need to know:
to get available crew power:
Spoiler
crewReplacer_Job.getAvailableCrewPower(CargoAPI cargo)
   returns: (float) the availableCrew * crewPower in this cargo
   cargo: is the cargothat you want to get crew from.
[close]
to display available crew for this job:
   
Spoiler
crewReplacer_Job.displayCrewAvailable(CargoAPI cargo,TextPanelAPI text)
   displays all the crew in the fleet to the inputted TextPanelAPI
   cargo: is the cargo that you want to get crew from.
   text: is the TextPanelAPI you want to display to
[close]
to apply and display crew losses for this job:
   
Spoiler
crewReplacer_Job.automaticlyGetDisplayAndApplyCrewLost(CargoAPI cargo,int crewPowerRequired, float crew_power_to_lose,TextPanelAPI text)
   removes crew from the fleet, and displays how mush crew was lost to the inputed TextPanelAPI
   cargo: is the cargothat you want to get crew from.
   crewPowerRequired: an float that should be equal to the required amount of crew to complete this job.
   crew_power_to_lose: the number of crew you want to remove from this fleet. should never be more then crewPowerRequired.
   text: is the TextPanelAPI you want to display to
[close]
[close]
Changelog
Spoiler
V0.7:
    save compatible with v0.6.2+
    added the following classes and variables:
        crewReplacer_Job:
            public float loadPriority;
            public ArrayList<CrewReplacer_BlackListCrew> blackListCrews = new ArrayList<>();
            public boolean addBlackListCrew(String crew,float loadPriority)
            public CrewReplacer_BlackListCrew getBlackListCrewIfExists(String crew)
            public boolean removeBlackListCrew(String crew)
            protected boolean addBlackListCrew(CrewReplacer_BlackListCrew EC)
        crewReplacer_CrewSet:
            public ArrayList<CrewReplacer_BlackListCrew> blackListCrews = new ArrayList<>();
            public boolean addBlackListCrew(String crew,float loadPriority)
            public CrewReplacer_BlackListCrew getBlackListCrewIfExists(String crew)
            public boolean removeBlackListCrew(String crew)
            protected boolean addBlackListCrew(CrewReplacer_BlackListCrew EC)
            public crewReplacer_CrewSet getAllLinkedCrewsSets()
            getAllLinkedCrewsSets(int maxDepthForGathering)
        crewReplacer_Main:
            static public boolean addOrMergeJob(crewReplacer_Job job, float loadPriority)
    changes:
        crewReplacer_Job.addNewCrew now runs addCrew.
        made crewReplacer_Job.addCrew and crewReplacer_CrewSet.addCrew respect blacklist.
    removed:
        crewReplacer_Job:
            mergeCrew
        crewReplacer_CrewSet:
            mergeCrew
    fixes:
        made crewReplacer_Job.applyCrewSets() get all the inherent crew sets form its crew sets like it was suppose to.
        added some crash protection onto some variable bits of code that related to getting strings.
    readme:
        updated the readme with info on the blacklist system, and on the crewSet system
    mod compatibility:
        added some random mod compatibility for forge production. crew replacer now supports its mothership quest
V0.6.10:
    save compatible with v0.6.2+
    fixes:
        fixed a issue were 'metals' might have been a valid commodity for founding a colonly provided market retrofits was not installed. sorry
V0.6.9:
    save compatible with v0.6.2+
    fixes:
        fixed spam in the starsector logs every time crew replacer did anything (sorry)
        fixed logs failing to name there crewReplacer_Job and crewReplacer_Crew. as well as some other things probably.
V0.6.8:
    save compatible with v0.6.2+
    fixed broken combatability and crashes with Perilous Expanse
V0.6.7:
    save compatible with v0.6.2+
    updated to the latest starsector version
    fixed some a broken button from the last alpha release.

V0.6.6: (the never released alpha)
    save compatible with v0.6.2+
    changes:
        updated the following plugins to (hopefully) be easyer to keep up to date.
        please note: this might cause unknown issues. i did all i can to keep things stable, but crew replacer might have some growing pains for a bit.
        -survey Plugin.
        -salvage plugin

        updated the strings from (hopefully) every none log instance in the game to be in the config, so i can change them and spellcheck them because i suck
        -also did this for some of the logs. mainly, the crewReplacer_Job logs, and the crewReplacer_CrewSet logs.
    fixed:
        fixed a possible issue were it might have been possible to remove items from players inventory because it was thought that you colonized somewhere.

V0.6.5:
    save compatible with v0.6.2+
    new:
        (hopefully) added working version checker support
        added colonization suooprt. you can now add new commodities that will be used in place of crew, supplies, and heavy machinery when colonizing.
            -NOTE: this will not work when using market retrofits until i patch it. hopefully i can do that soon.
    fixes:
        fixed the issue of items: apearing on top of each other, not being were they look like, and grabbing items that were not the ones you meant to pick up.
        it was me. 100%. sorry guys. I had no clue it was me, but some in depth investigation proved it 100%. and thank you so very mush to the person who suggested the CargoScreenListener. it was something i desperately needed.
        PS: this does create a slight issue were survey data apears at the 4th empty sloot, (and likely some other items at random. anything you didnt put there by opening your cargo basicly. but only if you looked at a not surveyed world after you last opened your cargo bay, and -then- had items inputted. no clue how to fix this send help.), but that is nothing compared to the beep bop beep that was happing before.

        maybe fixed a issue were sometimes surveying would use 2x the supply? i hope that was not a thing though.
    changes:
        disabled the endless spam of 'preparing to removing items for survey....(from crew replacer.)' in the logs. now off by default.
        crewReplacer_Job:
            addCrew(crewReplacer_Crew crew) now compleatly replaces the old crew. instead of whatever it was doing before.
            (NOTE: other instances of addCrew still use merge crew when 2 of the same crew show up, maintaining whatever strange class they might have.)

            added a 'loadPriority' variable to most add instances of addCrew
            added a new addCrew that has a default 'loadPriority' of zero.
        crewReplacer_Crew:
            added the 'public float crewLoadPriority = 0;' variable.
                -crew will only replace other crew in a job provided there load priority is >= to the old crew.
        reasoning:
            the reason i added the 'crewLoadPrioirity' system is because before if a user wanted to override someone elses crew,
            they would have to load there mod after that persons, and that... did not seem right. at all.
            hopefully this help avoid some headache

V0.6.4.1:
    save compatible with v0.6.2+
    fixes:
        refactored the name of one, and only one, file in the inter code.
V0.6.4:
    save compatible with v0.6.2+
    fixes:
        fixed the survey plugging only being able to reduce the amount of crews visable, and not provide you with the amount of crew you have available.
        finaly.
        i wanted to do this since i created this mod. i win
v0.6.3:
    save compatible with v0.6.2+
    mod compatibility:
        added compatibility with 'nomadic survival'. tested and found no bugs. enjoy.
    documentation:
        added the missing documentation from the last update.
    settings:
        added a setting to activate nomadic survival logs.
v0.6.2:
    updated to 0.96a
    mod compatibility:
        still not done
    fixes:
        fixed a missing log in crewReplacer_Job.getCrewDisplayNames(CargoAPI)
    new functions: (NOTE add this to documentation).
        crewReplacer_crew:
            getCargoSpaceUse(CargoAPI cargo,float amountOfCrew)
            getCargoSpaceUse(CargoAPI cargo)
            getCargoSpacePerItem(CargoAPI cargo)
            getFuelSpacePerItem(CargoAPI cargo)
            getFuelSpaceUse(CargoAPI cargo,float amountOfCrew)
            getFuelSpaceUse(CargoAPI cargo)
            getCrewSpacePerItem(CargoAPI cargo)
            getCrewSpaceUse(CargoAPI cargo,float amountOfCrew)
            getCrewSpaceUse(CargoAPI cargo)
        crewReplacer_job:
            getCargoSpaceUsed(CargoAPI cargo,String cargoType)
            getCargoSpaceRange(CargoAPI cargo,float power,boolean includeDefence,String cargoType)
    background:
        added a better way to organize arrays. that's untested, because i needed to update this....
v0.6.1:
    save compatible with V0.5+
    IMPORTANT:
        if you downloaded the V0.6 that was available, download this instead. at least if you use normadic suvival. i thought it worked but i found GAME BREAKING bug sorry 5 mins after i posted sorry =(
v0.6:
    save compatible with V0.5+
    mod combatability:
        now fully compatible with normadicSurvival. feel free to mod in new crews for the -many- jobs available.
    changes:
        disabled most console logs be default
    new:
        added a bunch of new crew sets for all already created jobs. will improve on that latter.

        new functions:
            crewReplacer_Job:
                boolean hasCrew(String crew)

                boolean addCrewSet(String jobSet)
                boolean removeCrewSet(String jobSet)
                void applyCrewSets()
            crewReplacer_Main:
                crewReplacer_crewSet getCrewSet(String crewSet)
                boolean removeCrewSet(String crewSet)
                boolean addOrMergeCrewSet(crewReplacer_crewSet crewSet)
        new classes:
            crewReplacer_crewSet.
                -a 'crew set' represents a set of crews, that are all replaceing the same commodity in the base game.
                example: the commodity 'crew' is used in salvaging, surveying, and repairing hyper realys.
                adding a Crew to the crew set 'crew' would add that Crew to all jobs that replaced the commodity 'crew'.
    fixes:
        fixed a bug that might have been letting 'crew' steel starships? opps?
v0.5.1:
    save compatible with V0.5+
    documentation:
        finished the main part of the documentation for now.
    fixes:
        fixed crew defence not being set right on initialization.
v0.5:
    should be save compatible with V0.4+.
    background work:
        raids and marines:
            raid plugin things. see fixes
        started to do battle with the survey code. its making ghost sounds at me.
    fixes:
        made it so crewReplacer_Job.displayCrewAvailable() does not display crew available if you have none of said type of crew.
        made it so marine XP only effects marines.
        changed the way marines are removed again. hopefully it works this time.
        made it so raids can comprehend the fact that you did not deploy every force you had

        enabled 'marketHostileRaidConfirmContSel', 'marketHostileRaidResultSel' in my rules.csv maybe fixing a crash on raid non market
        -NOTE: its possable this fix failed. if someone notices the game giving a null point exception when you raid objectives somehow, plz tell meplz tell me.
    new:
        added 6 new function to crewReplacer_Job:
            applyExtraDataToCrew();
            applyExtraDataToCrew(Object newData);
            applyExtraDataToCrewAndJob(Object newData);
            resetExtraDataToCrews();
            resetExtraDataToCrewsAndJob();

            public boolean addNewCrew(String crew,float crewPower,float crewDefence,float crewPriority)
        added 5 new function to crewReplacer_Crew:
            resetExtraData();
            setExtraData(Object newData);

            displayCrewAvailable(CargoAPI cargo, float numberOfItems, TextPanelAPI text)
            displayCrewLost(CargoAPI cargo, float numberOfItems, TextPanelAPI text)

            public float getCrewDefence(CargoAPI cargo)
        added a new variable to both crewReplacer_Crew and crewReplacer_Job:
            public Object ExtraData;

        added a new variable to crewReplacer_Crew:
            public float crewDefence = 1;
        explanation:
            sometimes, one wants to send / process some random data to crews or jobs. this was hard before, but now its simple.
            this is currently used in the raid plugin for marines to get XP. will be explained farther when i update the documentation
        explanation 2:
            displayCrewNumbers was a effective way to display crew, but it needed to be split into two for modability sake. something i forgot to do earlier.
        explanation 3:
            i find myself wanting to have differences between crew ability to do a job, and how many losses they receive and the weight of said losses. this is the best way i think.
    changes:
        marine in raiding:
            made it so the marine displays its XP and related bonuses on it, instead of on the inter ground combat force.
        file names:
            changed the 'crew' and 'marine' files to 'CrewReplacer_CrewType_crew' and 'CrewReplacer_CrewType_marine' resepctively
        job data handling:
            made it so crew use there defence when handling crew losses, not there power. should be no difference so long as power and defence are the same
        other:
            made 'static ArrayList<crewReplacer_Job> Jobs' in 'crewReplacer_Main' 'private'
v0.4.3:
    save compatible with V0.4+
    fixes:
        fixed a missing crewReplacerRefrence on line 1139 in CrewReplacerMarketCMD.getMarineLossesStat(List<GroundRaidObjectivePlugin> data), that was getting marrines instead of crew
    changes:
        changed how marines are removed from a fleet. should change nothing.
        changed two lines of dialog in the raid plugin, to hopefully avoid confusion between ground troops and ground support ability.
    changed the following functions:
        crewReplacer_Crew:
            DisplayedCrewNumbers(float,TextPanelAPI) -> DisplayedCrewNumbers(CargoAPI,float,TextPanelAPI)
            getDisplayName()                         -> getDisplayName(CargoAPI)
            getCrewIcon()                            -> getCrewIcon(CargoAPI)
            getCrewPower()                           -> getCrewPower(CargoAPI)
        crewReplacer_Job:
            getCrewLost(ArrayList<Float>,float)             -> getCrewLost(CargoAPI,ArrayList<Float>, float)
            getCrewDisplayNames()                           -> getCrewDisplayNames(CargoAPI cargo)
            displayCrewLost(ArrayList<Float>, TextPanelAPI) -> displayCrewLost(CargoAPI,ArrayList<Float>, TextPanelAPI)
        reasoning:
            it was difficult before to have more dynamic custom stats and names for crew.
            routing cargo through everything in crewReplacer_Crew (and by requirements, some things in crewReplacer_Job),
            a user will be able to get anything from fleet to faction to other things in cargo, allowing more interesting crew options.
        NOTICE: anybody that uses any of the changed functions should look into updating there code, as it is now outdated. sorry.
    more prep work on the raiding plugin. its confusing.
v0.4.2:
save compatible with V0.4+
    fixes:
        fixed a bug that caused the player to lose 2X the marines from rading.
    changes:
        changed the name of CrewReplacerLog to CrewReplacer_Log to match the rest of my code.
    the following functions were added. they are now considered the primary form of said functions
        crewReplacer_Job:
            getAvailableCrewPower(CargoAPI cargo)
            getAvailableCrew(CargoAPI cargo)
            automaticlyGetDisplayAndApplyCrewLost(CargoAPI cargo,int crewPowerRequired, float crew_power_to_lose,TextPanelAPI text)
            automaticlyGetAndApplyCrewLost(CargoAPI cargo, int crewPowerRequired, float crew_power_to_lose)
            applyCrewLost(ArrayList<Float> crewLost,CargoAPI cargo)
            getCrewForJob(CargoAPI cargo, float crewPowerRequired)
            displayCrewAvailable(CargoAPI cargo,TextPanelAPI text)

        crewReplacer_Crew: the following function were added
            removeCrew(CargoAPI cargo,float CrewToLost)
            getCrewInFleet(CampaignFleetAPI fleet)
            getCrewPowerInFleet(CampaignFleetAPI fleet)

        the reason said functions were added, is because i realized that making a moder input a fleet just to get cargo is a pointless.
        the old functions (that are the same, just they get CampaignFleetAPI instead of CargoAPI) will remain. they will simply run the new functions from them, so no change to your code is required, unless you are overwriting parts of a crewReplacer_Job, or a crewReplacer_Crew

    prep work:
        started to prepare my code for a rework of large parts of the raid plugging, to fix many issues
        started to prepare my code for more improvements and customization to crewReplacer_Job and crewReplacer_Crew
v0.4.1
    save compatible with V0.4+
    polish
        -made the 'repair Coronal Hyper Shunt' jobs display respect crew replacer.
    improvements
        -added a way to use Starsector's fancy display rules thing with crew replacer jobs. its called CrewReplacer_showResCost.

    crewReplacer crew:
        added 3 more functions:
        -getDisplayName()
        -getCrewIcon()
        for use when you want to have a crew that is not a commodity, and dont want to rebuild the inter display to do it,
        you can now simply override both functions, and everything will work
        -getCrewPower()
        a better way to set a non static power for your crew.

    crewReplacer Job:
        added 1 more function:
        getCrewDisplayNames()
        (the old getCrewNames) gets the crew name stats (that double as a ID). not the display name
    debugging:
        added a option to display logs of everything crew replacer is doing, for debugging. turn it on/off in the config file.
    error handling:
        added a bunch of error handling. it will output tot he log when a issue is detected, and help prevent crashes.
V0.4
    -new jobs:
        task: steal a starship mission
            job name:                               replaces
            Mission_hijack_marines:                 marines
        task: repair Coronal HyperShunt
            job name:                               replaces
            CoronalHyperShunt_repair_Metals:        metals
            CoronalHyperShunt_repair_RareMetals:    rare_metals
            CoronalHyperShunt_repair_Crew:          crew
    -issues:
        steal a starship mission has no feedback on what crews can do a mission. will be fixed later
        repair Coronal HyperShunt's fancy looking display that shows what is available/required dose not respect crew replacer yet. will be fixed in a week or so
V0.3.4
    -fixes:
        fixed supplyDemandChange crashing the game because of bad code when supply change was ran.
         -this is no longer functional. my update broke everything about this. expect this to be moved into an diffrent project when it is fixed.
v0.3.3
made crewReplace_Job.organizePrioirty(); public (thanks for the bug reports)
made marines in the job "raiding_marines" correctly have the right crew priority.
V0.3.2
(thanks Histidine, the person who added this change) improved display of crew lost with little pictures of items and colored numbers. it looks like the rest of the game now =)
v0.3.1
fixed an indexing bug that caused issues that i missed
v0.3
 updated crewReplacer_Job
  -fixed an bug were crewReplacer_Job could not select crew randomly when they were the same priority.
  -optimized some random things.
  -made it so when displaying crew, it displays an integer, and not an float.
 crewReplacer_Crew
  -i forgot to keep track of what i did, but i think i added an function or three to this. or maybe not. please don't judge me.
 added an new thing called supply demand class
  -this is nothing specials, that's to say, you could do this on your own without crew replacer, but it fits here well, and its not big enough for its own project.
  -supply demand class is an collection of functions and data that makes it a little easier to edit an industry's supply and demand without having to override said industry. it might be moved to its own project someday, but for now its going to sit here, as something useful, but not really needed that mush.
v0.2
 updates crewReplacer_Crew.DisplayedCrewNumbers
  -added the starsector function "getAOrAnFor()" to the default display (thanks anonymous user.)
  -made the code properly display commodity name, as apposed to its ID.
v0.1:
 release
[close]

8
Mods / [0.97a] AI-Retrofits
« on: July 09, 2021, 08:34:11 PM »
AI-RetrofitsV0.9.1

  • Robotic markets, captains, and administrators
  • A hullmod to automate any ship
  • New drones and another hullmod to create them

Download

My very first mod: feel free to suggest things or report bugs.



Compatibility
No known incompatible mods.
Mods that overwrite the automated ships skill will remove the indicator of the abilities from this mod, but you will still get them after you visit a market.
[close]
Hullmods
AI retrofit
Zeroes the minimum crew requirement but increases supply consumption and reduces repair speed; costs OP based on the minimum required crew.
[close]
Automated Robotic Drone Factory
Replaces crew on a ship (max crew - min crew) with a robot factory for the Automated Robotic Drone Factory ability to activate.
[close]
[close]
Items
Robots
robots are used in fleets to preform operations, mush like crew and marine's. unlike people however, there is no reliable way to get them in the sector. you will need to find a way to get them yourself.
Salvage Drone

A salvage drone. It is about as effective as a normal crew at salvaging, but is worthless at everything else.
Salvage Drones can be built from any fleet with a captain that is willing to go through the efforts of setting up there own robot forge somewhere. be it on there own ship, or somewhere else entirely
jobs: salvaging, repair hyper relay
power: 1
[close]
Combat Drone

A battle robot meant for ground engagements. Combat drones have very effective weapons, but have a tendency to walk straight into killboxes and other fortifications. Without the flexibility of normal combatants, they must be deployed en masse to overwhelm the enemy.
Combat Drones can be built from any fleet with a captain that is willing to go through the efforts of setting up there own robot forge somewhere. be it on there own ship, or somewhere else entirely
jobs: raiding. invasions.
power: 0.5,0.5
[close]
Survey Drone

A specialized survey drone. It's extremely effective at taking samples from the ground and exploring, much more so than normal crew.
Survey Drones can be built from any fleet with a captain that is willing to go through the efforts of setting up there own robot forge somewhere. be it on there own ship, or somewhere else entirely
jobs: survey
power: 1.5
[close]
Advanced Salvage Drone

A utility robot that moves objects with four advanced tractor beams. It is powered by an internal power core doubling as a primary computer. It can project its beams into a cutting edge for tearing objects apart cleanly. Attempts to replicate this technology without [DATA EXPUNGED] have been unsuccessful.
As an extremely advanced construction a Advanced Salvage Drone would require a specialized facility to be built. and a lot of processing power. how one would accomplish such things is unknown.
jobs: salvage, repair hyper relay
power: 1.25
[close]
Advanced Combat Drone

A relatively large combat unit armed with a miniaturized phase lance. Deadlier than a human being, it is able to assault enemy positions with no regard for its own safety - resulting in poorer overall defenses and a higher enamy casualty rate. Attempts to replicate this technology without [DATA EXPUNGED] have been unsuccessful.
As an extremely advanced construction a Advanced Combat Drone would require a specialized facility to be built. and a lot of processing power. how one would accomplish such things is unknown.
jobs: raiding, invasions
power: 1.25
[close]
Advanced Survey Drone

A relatively small robot armed with a litany of scanners and sensors, primarily used for planetary surveys. Its advanced propulsion allows it to swiftly react to any changes in its environment, and it is just durable enough to survive most planetary conditions. Attempts to replicate this technology without [DATA EXPUNGED] have been unsuccessful.
As an extremely advanced construction a Advanced Survey Drone would require a specialized facility to be built. and a lot of processing power. how one would accomplish such things is unknown.
jobs: survey
power: 1.5
[close]
REDACTED
sometimes, its better to wonder at the impossible, then it is to actually do it.
sometimes it is better to sleep, then to wake up.
sometimes, you never even existed. other times, you always were and always will be. its saddling the line between the two possibilities that make us alive
[close]
[close]
Command Relay

An AI Command Core. While it is not even comparable to something like a gamma core, it is still capable of performing calculations, provided there are not too many variables to consider. If given too much to do, the core will lag to the point of uselessness.
can be used to improve the effectiveness of robots in your fleet.
[close]
Maintenance Parts

Various parts for robot maintenance, for when robotic workers suffer minor damage.
presently has no use outside of trade
[close]
Robotic Replacement Parts

A set of easily-adaptable parts to repair robotic workers that have suffered extensive damage.
presently has no use outside of trade
[close]
Human Interface Node

A robotic worker designed to perfectly mimic the appearance of a human being. If no colonist can converse with a visitor, then this will naturally arouse suspicion. This machine helps to prevent that by talking to people; about their day, about work, about all sorts of things.
presently has no use outside of trade
[close]
[close]
Ability
Automated Robotic Drone Factory:
[image is currently placeholder. will add once it is no longer a placeholder.]
An ability that can be used to produce survey, salvage, and combat drones.
Can be inproved by haveing nanoforges in your fleet or by having more 'forge power' from ships with the 'Automated Robotic Drone Factory' hull mod.
[close]
[close]
New Market Type
With the automated ship skill or the right hull mods you can create a robotic market:
  • Different required commodity to maintain stability
  • Different growth system, relying on constructing robots instead of immigration
  • Crew and marines supply and demand swapped with salvage and combat robots.
  • Small stability bonus
  • Can host a handful of special buildings (mostly useless for now)
  • Fleets and people from and on this world have special captain names and portraits.
  • Every ship of every fleet from this world has AI-Retrofit and no crew.
[close]
Industries
(only allowed on robotic population market)
  • robotic worker assembely
  • robot worker factory
  • robot worker production center
  • AI Node Production Facility
  • Robotic Maintenance Center
  • Synthetic Production Center
  • Automated Ship Instalation Center
(allowed anywhere): (still requires the relevant skills though)
  • Personal Salavage Robot Manufactory
  • Personal Survey Robot Manufactory
  • Personal Combat Robot Manufactory
  • Population Replacement Center (for the people with a little evil in your hearts)
[close]
Market Conditions
Robotic Population
[close]
Thanks
  • Liral: for making the from post more readable on 2023/01/07
  • Capesh: the editor for making my mod at least readable.
  • the Quacken for the automated ship instalation center image. It's cool! =)
  • FrownTown for editing the words that made up the 0.7.19 update.
  • Everyone who answered the questions I needed to answer to make this mod.
  • Everyone who posted suggestions and bug reports on the discord.  They helped greatly!
[close]
Changelog
V0.9.1:
save compatible with 0.7.20.1+
    disabled the 'increased defences with higher their bots' feature that was causeing lag end game. maybe. if you are lucky.
    you can re enable it by going into settings and setting 'AIRetrofits_AllowDefenceBounusFromAdvancedBots' to true
V0.9:
save compatible with 0.7.20.1+
    updated to the latest version
    fixed:
        fixed broken version checker support. sorry that was a thing.
        fixed some things not being hidden that should have never been noticed.
    new:
        cross mod content!!
            Invasions with nexerline on AI-Pop worlds, or other worlds were there are robots do to industrys, now might have robot defenders!
            Invasions with nexerline from AI-Pop worlds, or other worlds were there are robots do to industrys, now might have robot attackers!
            you can now have robotic heavy units!
            all robots now have there own unit definitions, so they can have dramatically different stats
            sometimes, you can even have more 'advanced' robots in your invasions, provided you can create them
            -note: this can all be disabled in the settings.
        added a defence bonus for creating more advanced combat robots on your colony's.
    changes:
        changed the image for the basic combat robot. its not better, but i needed to change it, and i think im going to redo it because it sucks.

    note: to the ones who are waiting fixes to my terrible, inconsistent spelling and grammar, that will (hopefully) be next update. this was delayed to long however, so i needed to post it before then.
V0.8:
save compatible with 0.7.20.1+
    NOTE:
        requires marketRetrofits V0.2+
    new:
        added a new sub market, wish is added a market when you build a 'AI Node Production Facility'
            -this market sells command nodes as admins and officers. i think its cool.
        added T2 robot manufactures. because sometimes you want more
        added version checker support (hopefully)
        added a new item called a 'command node'.
            -this item can only be found in the new sub-market.
            -it can be right clicked on to get a new officer or admen.
        (with nexerlin) added a new person that can be made in the robot forge.
    changes:
        changed the way you found an robotic market, you now need to use the 'establish a colony', then select the appropriate option to do so.
        changed the way beta core modifiers work for the personal robot manufacture. they now scale with output
        changed the way the personal robot output works for the personal robot manufacture. they now scale with output
    fixes:
        fixed a possible issue with detecting if an alpha core was in a industry. probably never happened though.
        fixed the game crashing when you went to look at the production report for the AI-Retrofits shipyard if you loaded the game after it was created
    config:
        added the midding create command node text tot he config

V0.7.20.5:
save compatible with 0.7.20.1+
    fixes: fixed a rare crash involving the intil thing for upgrading ships.
V0.7.20.4:
save compatible with 0.7.20.1+
    fixes: did a patchwork fix on the patchwork AIRetrofit for patchwork reasons.
V0.7.20.3:
save compatible with 0.20.1+
    fixes: fixed a rare bug that stopped the player from adding hullmods in very rare conditions hopefully
V0.7.20.2
save compatible with 0.7.20.1+
    fixes: fixed 'patchwork AI-retrofit' and AI-retrofit crash when both hullmods were unlocked.
V0.7.20.1:
updated to 0.96a.
    background: worked on something cool
V0.7.20: (was only released as a private project. is part of the 0.7.20.1 update.)
save compatible with 0.7.9+
    mod compatibility:
        made it so combat and salvage robots could be used in 'nomadic survivals' planetary operations (once crew replacer supports this)
    improvements:
        added 108 first and last names to possible names for command nodes. (got them from a online name generator. feel free to suggest more names / name generators.)
    fixes:
        fixed AIRetrofit hull-mod sometimes not displaying its repair time increase correctly.
        made AIRetrofit hull-mod be a little more clear on how mush repair speed is slowed down hopefully.
        possably fixed a issue that might have been causing crashes?
    new:
        added a new hullmod, patchwork AIRetrofits. for when you want to fly the ship back to the spaceport with no crew.
    background work:
        did some background work for adding a new hull-mod or 2.
        did some background work for a interesting item.
v0.7.19.1:
save compatible with 0.7.9+
    improvements: a handful more edits (thanks again 'FrownTown' for edits)
v0.7.19:
save compatible with 0.7.9+
    improvements:
        edited a bunch of text (thank you 'FrownTown' for editing all the text to be more readable)
        changed the robotic population and infrastructure test to something none placeholder, if boring. as well as adding it the the settings
v0.7.18.1:
save compatible with 0.7.9+
    fixes:
        (hopefully) fixed a issue in relation to AIRetrofit causing a crash with progressive S-mods on oping the progressive S-mod menu. hopefully.
v0.7.18: save combatable with version 0.7.9+:
    new:
        added a new way to found a market, (unlucked once you have AI ships skill or have found the relevant hullmods and skills), costing salvage robots and sub command nodes instead of crew. worlds built in this way have some interesting properties:
            -they have different required commodity to maintain stability
            -they have a different growth system, relying on constructing robots instead of immigration
            -they have all there crew and marines supply and demand swapped with salvage and combat robots.
            -they have a small stability bonus
            -they can host a handful of special buildings (mostly useless for now)
            -fleets and people from / on this world now have special captions names and portraits.
            -fleets from this world now all have AI-Retrofit, and no crew.
        added a host of new colony buildings:
            (only allowed on robotic population market)
                robotic worker assembely
                robot worker factory
                robot worker production center
                AI Node Production Facility
                Robotic Maintenance Center
                Synthetic Production Center
                Automated Ship Instalation Center
            (allowed anywhere):
                Personal Salavage Robot Manufactory
                Personal Survey Robot Manufactory
                Personal Combat Robot Manufactory
                Population Replacement Center (for the people with a little evil in your hearts)
        robot forge:
            can now craft sub command nodes.
            sub command nodes can be 'upgraded' into officers or admins.
        items:
            added:
                2 new tiers of salvage, combat, and survey robots
                Command Relay
                Maintenance Parts
                Sub-Command Node
                Robotic Replacement Parts
                Human Interface Node
        robots:
            robots ability to do jobs has been changed, they now rely on AI cores to command them, and restive detergents when no AI core in is cargo, and buffs when there is one.
    removed:
        the sound robot forge played when it was on. didn't like.
    changed:
        robot forge:
            -changed the default robot forge power from 1 power per 500 crew, to 1 power per 100 crew
            -changed the way nanoforges were calculated, so its now caped at the robot forge power from your robot forges.
            -changed C-nanoforge power from 0.025 to 1.
            -changed P-nanoforge power from 0.075 to 5.
    fixes:
        fixed many of my displays and texts that were broken in some way
        made it so if you find the 'robot forge' hullmod, you will get the 'robot forge' skill after visiting a market.
        a bunch of other things i forgot about
    combatability:
        made this mod compatible with mods that change the AI ships skill. (you will gain the relevant hullmods and skills when you visit a market)
        combat robots are now valid for invasions with nexerlin (yay)

    thank you:
        Capesh: the editor for making my mod at least readable.
        the Quacken: for the automated ship instalation center image. its cool =)
        all the people i asked seemingly random questions at for tolerating that and helping me. i could not have done this without you all
        all the people who piped up with suggestions and bug reports on the discord. it helped a lot

0.6: (not save combatable)
-removed: AutomatedCrewReplacementDrones
-added: hullmod Automated Robotic Drone Factory
-added: ability Automated Robotic Drone Factory
-added: item survey drone
-added: item salvage drone
-added: item combat drone
-added: an working config file.
-added: graphics to everything (to be worked on latter)
-added: an new requirement
-fixed: broken displays for hullmods
-fixed: a few random requirements
-fixed: my name in the mod file
0.5: (save combatable)fixed AutomatedCrewReplacementDrones so it now shows the right numbers in description, and so it lowers max crew correctly
0.4: release
[close]
Plans (feel free to suggest things!)
i have plans. ill tell you all about them later
[close]

Pages: [1]