Jump to content

[Stellaris] Modding Help, Ideas and Suggestions


Recommended Posts

5 hours ago, RavinBeast said:

A Single Weapon

That simplifies things quite a bit. I've divided everything you need by folder and put each file within a spoiler under the filename.

 

Everything with colored text is the stuff you'll need to edit. Red text are things you need to only choose one of.

 

For deciding which weapon stats to use between autocannons and point defense you can look at the weapon wiki page, or in the weapon_components spreadsheet in the vanilla common/component_templates folder.

 

 

 

common/component_sets

MODNAME_weapons_projectile.txt

Spoiler

component_set = {
    key = "WEAPON_KEY"
    

    icon = "GFX_ship_part_autocannon_1 "    # Choose only one GFX icon.
    icon = "GFX_ship_part_autocannon_2 "
    icon = "GFX_ship_part_autocannon_2 "
    icon = "GFX_ship_part_flak_batteries_1"
    icon = "GFX_ship_part_flak_batteries_2"
    icon = "GFX_ship_part_flak_batteries_3"

    icon_frame = 1    
}

 

common/component_templates

MODNAME_weapons_projectile.txt

Spoiler

weapon_component_template = {
    type = instant
    
    key = "WEAPON_KEY"
    size = small    # Choose only one size (this is the weapon slot type on the ships).
    size = point_defence

 

    entity = "small_kinetic_gun_entity"    # Choose only one entity (this is the turret style on the ships).
    entity = "turret_point_defence_entity"
    
    icon = "GFX_ship_part_autocannon_1 "    # Choose only one GFX icon.
    icon = "GFX_ship_part_autocannon_2 "
    icon = "GFX_ship_part_autocannon_2 "
    icon = "GFX_ship_part_flak_batteries_1"
    icon = "GFX_ship_part_flak_batteries_2"
    icon = "GFX_ship_part_flak_batteries_3"

    icon_frame = 1
    
    power = -X    # Ship power cost.
    damage = { min = X max = Y }    # Damage per shot.
    hull_damage = X.X    # Damage modifier against hull.
    shield_damage = X.X    # Damage modifier against shields.
    armor_damage = X.X    # Damage modifier against armor.
    windup = { min = 2 max = 14 }    # Autocannon windup.
    windup = { min = 0 max = 0 }    # Point-defense windup.
    total_fire_time = X    # Weapon cooldown. 5 for Point-Defense : 15 for Autocannon.
    range = 30
    accuracy = 0.X    # Accuracy %.
    tracking = 0.X    # Tracking %.
    
    prerequisites = { "tech_MODTECH" }
    component_set = "WEAPON_KEY"
    projectile_gfx = "auto_cannons_s"    # Choose only one projectile_gfx.
    projectile_gfx = "ripper_auto_cannons_s"
    projectile_gfx = "stormfire_auto_cannons_s"

    projectile_gfx = "flak_pd_1"
    projectile_gfx = "flak_pd_2"
    projectile_gfx = "flak_pd_3"
    tags = { weapon_type_point_defense weapon_type_kinetic }    # Remove point defense tag if weapon size is not point defense.
    ai_tags = { weapon_role_anti_shield }    # Match ai_tag to weapon size.
    ai_tags = { weapon_role_point_defense }
    resources = {
        category = ship_components
        cost = {
            alloys = @s_t3_cost
        }        
        upkeep = {
            energy = @s_t3_upkeep_energy
            alloys = @s_t3_upkeep_alloys
        }
    }
}

Replace t3 with t4 or t5 depending on which tech tier you want it to be a part of.

Add volatile_motes = @s_t4_rare or volatile_motes = @s_t5_rare to the cost bracket if it's from those tiers.

 

common/technology

MODNAME_phys_weapon_tech.txt

Spoiler

tech_MODTECH = {
    area = engineering
    cost = @tier2cost2
    tier = 2
    category = { propulsion }    
    ai_update_type = military
    prerequisites = { tech_mass_drivers_2 }    # Change to whatever vanilla tech you want to make a requirement.
    weight = @tier2weight2    # Choose only one tech weight.
    weight = @tier3weight1
    weight = @tier4weight1

    
    weight_modifier = {
        modifier = {
            factor = 1.25
            has_ethic = ethic_militarist
        }
        modifier = {
            factor = 1.5
            has_ethic = ethic_fanatic_militarist
        }
        modifier = {
            factor = 1.25
            research_leader = {
                area = physics
                has_trait = "leader_trait_expertise_propulsion"
            }
        }
    }
    
    ai_weight = {
        factor = 2
        modifier = {
            factor = 1.25
            has_ethic = ethic_militarist
        }
        modifier = {
            factor = 1.5
            has_ethic = ethic_fanatic_militarist
        }
        modifier = {
            factor = 1.25
            research_leader = {
                area = physics
                has_trait = "leader_trait_expertise_propulsion"
            }
        }
    }
}

Change tier2 to tier3 or tier4 based on if the weapon's tier is 3, 4, or 5 respectively.

 

localisation/english

MODNAME_l_english.yml

Spoiler

l_english:
 tech_MODTECH:0 "Tech Name"
 tech_MODTECH_desc:0 "Tech descriptive fluff text."

 WEAPON_KEY:0 "Weapon Name"

 WEAPON_KEYdesc:0 "Weapon descriptive fluff text."

 

Link to comment

Just want to give a ton of thanks (or is that a tonne? I'm not sure how thanks are measured) to dullman, Raana and darkspleen for their help. In frustration, I changed the name of my file to what darkspleen suggested, and it looks like that worked (for some reason!?). Maybe it's because I flipped UTF-8-BOM off and on just the right number of times, but right now I'm flipping off my own stupidity for not trying that sooner.

Link to comment
  • 2 weeks later...

Greetings,

 

I have this problem:

 

# trait_plentiful_traditions_slave_01 #Vieh
# trait_plentiful_traditions_slave_02 #Energie
# trait_plentiful_traditions_slave_03 #Mineral
# trait_plentiful_traditions_slave_04 #Nahrung
# trait_plentiful_traditions_slave_05 #Forschung
# trait_plentiful_traditions_slave_06 #Einheit
# trait_plentiful_traditions_slave_07 #Strategische Ressource

 

Those are traits, that are only used by event. And: only one of those traits should be given at any time.

 

I dont know why, but sometimes, the slaves got more then one trait.

How could I use "while" to look through "every_owned_pop" to check, if it got more then one of those traits?

Link to comment
On 1/21/2019 at 6:03 PM, Abominus said:

Greetings,

 

I have this problem:

 

# trait_plentiful_traditions_slave_01 #Vieh
# trait_plentiful_traditions_slave_02 #Energie
# trait_plentiful_traditions_slave_03 #Mineral
# trait_plentiful_traditions_slave_04 #Nahrung
# trait_plentiful_traditions_slave_05 #Forschung
# trait_plentiful_traditions_slave_06 #Einheit
# trait_plentiful_traditions_slave_07 #Strategische Ressource

 

Those are traits, that are only used by event. And: only one of those traits should be given at any time.

 

I dont know why, but sometimes, the slaves got more then one trait.

How could I use "while" to look through "every_owned_pop" to check, if it got more then one of those traits?

Would have to see how the event is set up, but I'm guessing the event is supposed to fire more than once and when it does it just happens to occasionally pick a pop that already has a trait?

 

If that's what's happening then you probably need a limit array to make the event ignore pops that already have one of the traits.

Link to comment
On 1/21/2019 at 7:03 PM, Abominus said:

Greetings,

 

I have this problem:

 

# trait_plentiful_traditions_slave_01 #Vieh
# trait_plentiful_traditions_slave_02 #Energie
# trait_plentiful_traditions_slave_03 #Mineral
# trait_plentiful_traditions_slave_04 #Nahrung
# trait_plentiful_traditions_slave_05 #Forschung
# trait_plentiful_traditions_slave_06 #Einheit
# trait_plentiful_traditions_slave_07 #Strategische Ressource

 

Those are traits, that are only used by event. And: only one of those traits should be given at any time.

 

I dont know why, but sometimes, the slaves got more then one trait.

How could I use "while" to look through "every_owned_pop" to check, if it got more then one of those traits?

If you just want to make sure no pop has more than one of those traits, then you could just set them all up as opposites?

 

Otherwise I think what you want is something like:

 

while = {

   limit = { any_owned_pop = { #check for two traits } }

   random_owned_pop = {

      limit = { #check for two traits }

      #remove extra trait

   }

}

Link to comment


event = {
    id = plentiful_traditions_malice.5
    hide_window = yes
    is_triggered_only = yes

    trigger = {
        any_country = {
            has_ascension_perk = ap_plentiful_traditions_slave_complex
        }
    }

    immediate = {
        every_country = {
            limit = {
                has_ascension_perk = ap_plentiful_traditions_slave_complex
            }
            every_owned_pop = {
                limit = {
                    is_enslaved = yes
                    OR = {
                        has_job = livestock
                        has_job = organic_battery
                    }
                    NOT = {
                        pop_has_trait = trait_plentiful_traditions_slave_01 #Vieh
                    }
                }
                modify_species = {
                    species = this
                    add_trait = trait_plentiful_traditions_slave_01 #Vieh
                    remove_trait = trait_plentiful_traditions_slave_02 #Energie
                    remove_trait = trait_plentiful_traditions_slave_03 #Mineral
                    remove_trait = trait_plentiful_traditions_slave_04 #Nahrung
                    remove_trait = trait_plentiful_traditions_slave_05 #Forschung
                    remove_trait = trait_plentiful_traditions_slave_06 #Einheit
                    remove_trait = trait_plentiful_traditions_slave_07 #Strategische Ressource
                }
            }
            every_owned_pop = {
                limit = {
                    is_enslaved = yes
                    OR = {
                        has_job = technician_drone
                        has_job = technician
                        has_job = primitive_technician
                        has_job = fe_acolyte_generator
                    }
                    NOT = {
                        pop_has_trait = trait_plentiful_traditions_slave_02 #Energie
                    }
                }
                modify_species = {
                    species = this
                    remove_trait = trait_plentiful_traditions_slave_01 #Vieh
                    add_trait = trait_plentiful_traditions_slave_02 #Energie
                    remove_trait = trait_plentiful_traditions_slave_03 #Mineral
                    remove_trait = trait_plentiful_traditions_slave_04 #Nahrung
                    remove_trait = trait_plentiful_traditions_slave_05 #Forschung
                    remove_trait = trait_plentiful_traditions_slave_06 #Einheit
                    remove_trait = trait_plentiful_traditions_slave_07 #Strategische Ressource
                }
            }
            every_owned_pop = {
                limit = {
                    is_enslaved = yes
                    OR = {
                        has_job = foundry
                        has_job = fabricator
                        has_job = alloy_drone
                        has_job = mining_drone
                        has_job = miner
                        has_job = primitive_miner
                        has_job = fe_acolyte_mine
                    }
                    NOT = {
                        pop_has_trait = trait_plentiful_traditions_slave_03 #Mineralien
                    }
                }
                modify_species = {
                    species = this
                    remove_trait = trait_plentiful_traditions_slave_01 #Vieh
                    remove_trait = trait_plentiful_traditions_slave_02 #Energie
                    add_trait = trait_plentiful_traditions_slave_03 #Mineral
                    remove_trait = trait_plentiful_traditions_slave_04 #Nahrung
                    remove_trait = trait_plentiful_traditions_slave_05 #Forschung
                    remove_trait = trait_plentiful_traditions_slave_06 #Einheit
                    remove_trait = trait_plentiful_traditions_slave_07 #Strategische Ressource
                }
            }
            every_owned_pop = {
                limit = {
                    is_enslaved = yes
                    OR = {
                        has_job = agri_drone
                        has_job = farmer
                        has_job = hunter_gatherer
                        has_job = peasant
                        has_job = primitive_farmer
                        has_job = fe_acolyte_farm
                    }
                    NOT = {
                        pop_has_trait = trait_plentiful_traditions_slave_04 #Nahrung
                    }
                }
                modify_species = {
                    species = this
                    remove_trait = trait_plentiful_traditions_slave_01 #Vieh
                    remove_trait = trait_plentiful_traditions_slave_02 #Energie
                    remove_trait = trait_plentiful_traditions_slave_03 #Mineral
                    add_trait = trait_plentiful_traditions_slave_04 #Nahrung
                    remove_trait = trait_plentiful_traditions_slave_05 #Forschung
                    remove_trait = trait_plentiful_traditions_slave_06 #Einheit
                    remove_trait = trait_plentiful_traditions_slave_07 #Strategische Ressource
                }
            }
            every_owned_pop = {
                limit = {
                    is_enslaved = yes
                    has_job = guinea_pigs
                    NOT = {
                        pop_has_trait = trait_plentiful_traditions_slave_05 #Forschung
                    }
                }
                modify_species = {
                    species = this
                    remove_trait = trait_plentiful_traditions_slave_01 #Vieh
                    remove_trait = trait_plentiful_traditions_slave_02 #Energie
                    remove_trait = trait_plentiful_traditions_slave_03 #Mineral
                    remove_trait = trait_plentiful_traditions_slave_04 #Nahrung
                    add_trait = trait_plentiful_traditions_slave_05 #Forschung
                    remove_trait = trait_plentiful_traditions_slave_06 #Einheit
                    remove_trait = trait_plentiful_traditions_slave_07 #Strategische Ressource
                }
            }
            every_owned_pop = {
                limit = {
                    is_enslaved = yes
                    OR = {
                    #Unity
                        has_job = bio_trophy
                        has_job = enforcer
                        has_job = telepath
                        has_job = entertainer
                        has_job = culture_worker
                        has_job = manager
                        has_job = priest
                        has_job = patrol_drone
                        has_job = soldier
                        has_job = preacher
                        has_job = fe_xeno_ward
                        has_job = fe_hedonist
                        #has_job = pleasure_slave #xxx
                    #consumer goods
                        has_job = artisan
                        has_job = artisan_drone
                        has_job = primitive_laborer
                        has_job = fe_acolyte_artisan
                    }
                    NOT = {
                        pop_has_trait = trait_plentiful_traditions_slave_06 #Einheit
                    }
                }
                modify_species = {
                    species = this
                    remove_trait = trait_plentiful_traditions_slave_01 #Vieh
                    remove_trait = trait_plentiful_traditions_slave_02 #Energie
                    remove_trait = trait_plentiful_traditions_slave_03 #Mineral
                    remove_trait = trait_plentiful_traditions_slave_04 #Nahrung
                    remove_trait = trait_plentiful_traditions_slave_05 #Forschung
                    add_trait = trait_plentiful_traditions_slave_06 #Einheit
                    remove_trait = trait_plentiful_traditions_slave_07 #Strategische Ressource
                }
            }
            every_owned_pop = {
                limit = {
                    is_enslaved = yes
                    OR = {
                        has_job = chemist
                        has_job = chemist_drone
                        has_job = mote_harvester
                        has_job = translucer
                        has_job = translucer_drone
                        has_job = crystal_miner
                        has_job = gas_refiner
                        has_job = gas_refiner_drone
                        has_job = gas_extractor
                        has_job = dimensional_portal_researcher
                    }
                    NOT = {
                        pop_has_trait = trait_plentiful_traditions_slave_07 #Strategische Ressource
                    }
                }
                modify_species = {
                    species = this
                    remove_trait = trait_plentiful_traditions_slave_01 #Vieh
                    remove_trait = trait_plentiful_traditions_slave_02 #Energie
                    remove_trait = trait_plentiful_traditions_slave_03 #Mineral
                    remove_trait = trait_plentiful_traditions_slave_04 #Nahrung
                    remove_trait = trait_plentiful_traditions_slave_05 #Forschung
                    remove_trait = trait_plentiful_traditions_slave_06 #Einheit
                    add_trait = trait_plentiful_traditions_slave_07 #Strategische Ressource
                }
            }

        }
    }
}

 

This is the event...

Link to comment
  • 3 weeks later...
18 hours ago, RavinBeast said:

I'm Trying To Create A Species That's Psionic From The Start, Kinda How The Asari From Mass Effect Are Evolved To Be Biologically Biotic,

 

Is There Anyway To Make A Species Trait That Grants A Tech Right From The Start? If So, How Would I Go About Doing That?

You need to make an event triggered from on-action empire_init_add_technologies which gives the tech to a civilization with that trait. See game_start.8 in events\game_start.txt for how vanilla gives mechanists the robot techs. If you want to check for a trait rather than a civic, you need to switch to species scope with owner_species since empire_init_add_technologies is in country scope.

Link to comment

Not necessarily a Stellaris-specific question, although it is part of trying to mod Stellaris:

 

So, I'm trying to make an overarching event on planetary occupation which leads to a bunch of other events via a random_list. Ideally, there will be a bunch of random_list entries which are only valid if a pop on the planet has a certain specialist job (metallurgist, researcher, culture worker, etc). I have pics lined up for pretty much all of them...except for metallurgist. I was going to use Bridgette Lindholm (from Overwatch), but she's slated for another (metallurgist-related) event, and I'd prefer not to repeat if I can help it.

 

So, does anyone have suggestions for female fictional characters who fit the following criteria:

-Muscular

-Working-class attire (yes, I know Metallurgists are Specialists.)

-Engineering themed

 

My back-ups are Korra (I can find some vaguely steampunk Korra sans visible bending) or Yoko Littner (She's sometimes depicted as muscular, but doesn't have the tech theme). However, I'm betting that the Loverslab hive has more data than I do, so I'm submitting my query.

 

(On a sidenote, Stellaris conditionals are mind-breaking. For some reason, CKII seemed a LOT easier to wrap my head around)

Link to comment
6 hours ago, astronomenon said:

This is dumb, but how do I install these mods. I drop them in the folder but nothing shows up. Anywhere on the site with the right procedure?

-Download the zip file you want.

-Unzip to somewhere you can find it (your desktop?)

-Open the resulting file

-You should have a mod folder and a .mod file inside.

-Cut/Copy both the .mod file and the mod folder to your Paradox Interactive/Stellaris/mods file (on Windows 7 it's in Documents.)

 

The new mod should show up in your launcher. Basically, the mod folder contains the actual mod data, while the .mod file tells your Stellaris program where to look for it.

Link to comment

Does anyone understand paradox mod load order?

My mod is an EU4 mod, but I assumed it worked just like Stellaris where I thought it was bottom->top of mod list (reverse alphabetical load order where A / special characters load last and overwrite).

 

All of a sudden for seemingly no reason my mod stopped overwriting that of another and I had to remove the files from that mod to get it working again (deselecting it, and trying different orders reselecting didn't help, and it is titled Cosmopolitan_1_of_4 whereas the one I want to overwrite is extendedtimeline).

 

It worked up until the very last time I had to split my mod because it was getting too large.  I thought it was something to do with the split, but all I had to do was remove the extendedtimeline files that were conflicting and it worked again.

Link to comment
On 2/20/2019 at 6:30 PM, Dargaron said:

-Download the zip file you want.

-Unzip to somewhere you can find it (your desktop?)

-Open the resulting file

-You should have a mod folder and a .mod file inside.

-Cut/Copy both the .mod file and the mod folder to your Paradox Interactive/Stellaris/mods file (on Windows 7 it's in Documents.)

 

The new mod should show up in your launcher. Basically, the mod folder contains the actual mod data, while the .mod file tells your Stellaris program where to look for it.

I did this. I clicked on the mods, but they still don't pop up. Any ideas? Maybe I'm doing something wrong I can't even imagine? My other mods work, the dlc works, but for some reason these don't.

Link to comment

Open the .mod file with a text editor (notepad works).  Look at the path and make sure it is the same as you have it set up.

For example

archive="mod/cosmopolitan_1_of_5.zip"

 

Will open a .zip file of that name in the mod folder.  If must be spelled and have the same file extension for it to work.


 Or if it is in a folder it will obviously not end in an extension and look like this:

 

path="mod/sexual_gameplay"

 

Maybe either the path or the folder are misspelled, you can either change the folder name or the path.

 

Link to comment
  • 3 weeks later...

So, I'm reworking an event triggered by the On_Action event "on_planet_attackers_win." Originally, I had a random_list that selected the follow-up event based on whether or not the planet had various job slots. I figured that I should probably change the event to select based on pops with specific jobs rather than just checking to see if the planet had that kind of job (since Xenophile empires are, in fact, a thing that exists). However, I'm having a problem getting the game to save a specific pop as an event_target, which means the following events aren't firing.

 

Here's how I'm trying to get the game to select a random pop that holds a job of x type in the "Immediate" block of my gateway event:

Spoiler

                random_pop = {
                    limit = {
                        location = FROMFROM
                        OR = {
                            has_job = administrator
                            has_job = executive
                            has_job = researcher
                            has_job = enforcer
                            has_job = telepath
                            has_job = healthcare
                            has_job = entertainer
                            has_job = duelist
                            has_job = culture_worker
                        }
                    }
                save_event_target_as = target_pop
                }

 

then in the sole option of the (hidden) gateway event, I have a bunch of IF blocks, that look something like this:

 

Spoiler

        IF = {
            limit = {
                event_target:target_pop = {
                    OR = {
                        has_job = administrator
                        has_job = executive
                        }
                    }
                }
        event_target:planet_attacker = {
            country_event = { id = dargarmy.4 } #administrator
            }
        }

 

However, if I leave the IF block in place, the game simply refuses to fire the follow-up event. If I comment out everything but the country_event section, then the game fires dargarmy.4, but my [target_pop.GetAdjective] shows up blank, which seems to indicate that no pops on the planet are getting saved as "event_target:target_pop."

 

Since the wiki hasn't been updated to 2.2 (and everything to do with Pop jobs was introduced in 2.2), I'm having a really hard time figuring out WHY my events aren't working. Is is just impossible to save a pop as an event_target?

 

The only workaround I can think of is telling the game to apply a modifier to a (single) random pop on the planet, then having the relevant event fire based on whether "any_pop" has both "job = x" and "has_modifier = y." However, part of the goal is to refer to the selected pop's species in the event itself, so I'd still need some way to refer to the pop in the localization file. In theory I could then save the species itself as "target_species," but that seems really clunky, and there's gotta be a better way.

Link to comment
  • 3 months later...

I'm trying to make an event that fires a few times a year

 

from reading up on the stellaris files i've created this on_action file

Quote

 

on_monthly_pulse = {

events = {

custom_event.1

}

}

 

 

which supposedly polls every month and for my event file

Quote

 

namespace = custom_event

 

planet_event = {

id = custom_event.1

title = custom_event.1.title

desc = custom_event.1.desc

picture = "test_bg"

 

pre_triggers = {

is_ai = no

}

 

is_triggered_only = yes

 

option = {

name = OK

add_modifier = {

modifier = "test"

years = 1

}

}

}

 

 

so far in the console i can force this to happen and every shows up fine, title, picture, everything but I can't get it to fire in game

 

anybody have any ideas as to why?

Link to comment
On 6/22/2019 at 4:17 AM, highagan said:

I'm trying to make an event that fires a few times a year

 

from reading up on the stellaris files i've created this on_action file

 

which supposedly polls every month and for my event file

 

so far in the console i can force this to happen and every shows up fine, title, picture, everything but I can't get it to fire in game

 

anybody have any ideas as to why?

The pre-trigger could be wrong. I made a planetary-decision with is_ai = no. You have to put in in owner = { ... }.

Link to comment
3 hours ago, BlindPassPirates said:

Hi I have HEAVILY MODDED my Stellaris most of these mods being outdated and its finally broken and crashes upon trying to load the "map graphics" can anyone tell me how to fix this?

(Sorry for the badly done screenshots)

Sounds like what happened to me after the recent story pack game update. Though the only way to find out is to disable all of your mods and try to start a game with just a quick random empire.

 

If it still crashes in the same spot with all mods disabled, then it's probably a problem caused by a game update. Which in my case required me to completely purge my stellaris files (both in program files and my documents) and reinstall the game from scratch. Re adding my mods after.

 

If it -doesn't- crash after disabling all of the mods then it's probably a mod conflict and I recommend re activating each mod individually until you find which mod has the compatibility issue.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use