Stellaris - [2.8.1] The droid technician issue in pictures

  • Victoria 3 - Sign up now!

    The journey begins, sign up now and get a special in-game item when the game is released.


  • Crusader Kings III Available Now!

    The realm rejoices as Paradox Interactive announces the launch of Crusader Kings III, the latest entry in the publisher’s grand strategy role-playing game franchise. Advisors may now jockey for positions of influence and adversaries should save their schemes for another day, because on this day Crusader Kings III can be purchased on Steam, the Paradox Store, and other major online retailers.


    Real Strategy Requires Cunning
  • Crusader Kings II Expansion Subscription

    Subscribe to the CK II Expansion and enjoy unlimited access to 13 major expansions and more!


Rodmar18

Lt. General
8 Badges
Sep 19, 2018
1.514
188
  • Stellaris: Galaxy Edition
  • Stellaris: Galaxy Edition
  • Stellaris: Galaxy Edition
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • Stellaris: Humanoids Species Pack
  • Stellaris: Distant Stars
  • Stellaris: Synthetic Dawn
Description
[2.8.1] The droid technician issue in pictures

Game Version
(2.8.1) [dfce]

What version do you use?
Steam

What expansions do you have installed?
Synthetic Dawn, Leviathans Story Pack, Distant Stars

Do you have mods enabled?
Yes

Please explain your issue is in as much detail as possible.
Mods active: Real Space, Lighter Borders, Softer Hyperlanes, Whiter Stars, etc.

The issue with odd job prioritization and unemployment is rather recurrent, with a number of reports, here and on Steam forum.
I always thought that the weights to prioritize workers, in 03_worker_jobs.txt were able to explain an apparent oddity, up to justifying it to players complaining about their droids not picking up the right jobs (for example, the change in paradigm between mining robots that have absolute priority for miner jobs, and mining droids that are just more efficient and not as highly prioritized...).

In my previous game, I already stumbled on energy droids not always employed as technicians, and I put it on the account of a Divinity Right to Work resolution, without looking beyond it.

Droid: tier 2 robot, upgraded upon researching the Droid Workers technology.
Energy droid: a droid with Superconductive and Highly Efficient Processors traits.


Issue at first glance: all the energy droids are not always employed as technicians, whereas some less prioritized (and less talented) organic workers are hired as technicians.

Issue in detail:
1. The weighting procedure seems to be bypassed under a certain condition on droid and organic employed or unemployed populations, and/or on closed/open technician jobs;
2. Closing/opening technician jobs displays a strange "hysteresis" phenomenon that is not explained by the sole priority for already employed workers (if any). Other said, the order in which unemployed workers get newly opened jobs is not the same in which employed workers are ousted <hen jobs are closed.

Perhaps both issues are related, but the real one, however, is clearly the first.

The following manipulation was done in a paused game, but previous situation (prior to pausing the game) was found to be the same at the end of the manipulation.

Screenshot 1: Cajubus Secundus planet
6 technician jobs in total
  1. close them all;
  2. open the first 3 jobs: the 3 energy droids are hired, one by one, as expected (note that the unemployed mining droid is not);
  3. open 2 more jobs (total is 5/6); 2 strong workers are hired, one by one, as expected;
  4. open LAST job: all 3 energy droids are fired and replaced by 4 strong workers;
So far, the prioritization had worked in compliance with the script in 03_worker_jobs.txt (AFAIK). With the last stage, it is as if energy droids had suddenly lost an important weighting factor (or their weight went to 0?), or if organic workers suddenly gained an important weighting factor.

Screenshot 2: Bastion of H'mrvlish planet
6 technician jobs in total
  1. close them all;
  2. open the first 2: the 2 energy droids are hired, one by one;
  3. open 3 more jobs (total is 5/6): 3 strong workers are hired, one by one;
  4. open the last job: both energy droids are fired and get replaced by 3 workers, 1 of them not even being strong.
Same oddity, apparently happening with the last opened job.

Screenshot 3: Cajubus Secundus planet, years later
16 technician jobs in total
  1. close them all;
  2. open the first 8 jobs: 8 energy droids are hired, one by one;
  3. open 4 more jobs (total is 12/16): 4 strong workers are hired, one by one;
  4. open 1 more job (total is 13/16): 5 energy droids (out of 8) are fired and get replaced by 6 strong workers;
  5. open 1 more job (total is 14/16): last unemployed organic worker is hired;
  6. open the last 2 jobs (total is 16/16): 2 energy droids are hired back.
So, it's not about opening the last closed technician job.

I'd be glad if anyone can explain this. As for me, I'm very puzzled and I wonder if there's not a kind of bypass hard coded

Facts:
  • Tries are not sufficient to find a ratio in pop or jobs that would trigger the sudden apparent change in weighting (it's not 1/2).
  • The empire is nowhere near to energy deficit (the low income weight can't be invoked).
  • The empire is member of the Galactic Community.
  • Having the Spiritualist ethics, the empire has outlawed AIs and allowed robotic workers.
  • The Divinity Right To Work galactic resolution has not been presented nor voted yet (beside, should it had been, the mining droid would have lost its job).
  • The complex_worker_job_check_trigger block seems clear, although I first thought that it was the culprit, being the only major difference between the technician script and the miner/farmer scripts. Let's say anyway that if, for any reason, this trigger suddenly was set to false, then the issue would be explained.
Code:
complex_worker_job_check_trigger = {
    worker_job_check_trigger = yes
    hidden_trigger = {
        exists = owner
        OR = {
            NOT = { has_trait = trait_mechanical }
            owner = { has_technology = tech_droid_workers }
        }
    }
}
Code:
worker_job_check_trigger = {
    custom_tooltip = WORKER_JOB_TRIGGER
    hidden_trigger = {
        exists = owner
        is_being_purged = no
        is_being_assimilated = no
        NOT = { has_citizenship_type = { type = citizenship_organic_trophy } }
        NAND = {
            has_citizenship_type = { type = citizenship_slavery }
            OR = {
                has_slavery_type = { type = slavery_livestock }
                has_slavery_type = { type = slavery_matrix }
            }
        }
        if = {
            limit = {
                divinity_right_to_work_job_check_trigger_exempt = no
            }
            divinity_right_to_work_job_check_trigger_worker = yes
        }
    }
}
Code:
divinity_right_to_work_job_check_trigger_worker = {
    NOT = {
        planet = {
            any_owned_pop = {
                is_unemployed = yes
                is_robotic_species = no
                is_pop_category = worker
            }
        }
    }
}

That's why I wonder if there isn't any hard-coded condition in the prioritization procedure, that would bypass these prioritization scripts.
Or is it tied to the old bug when droids were already considered as synths, and thus put into slavery/purge when AI was outlawed?

Steps to reproduce the issue.
  1. Be a Spiritualist empire (?).
  2. Research the robotic tree all the way unto the Droid Workers technology.
  3. Research the technology to mod robots and create a model of "energy droid".
  4. Bring or produce energy droids on a planet with developped generator districts.
  5. Wait a few years and allow a little of unemployment.
  6. Watch the technician roster, and play with the close/open jobs feature.

Upload Attachment
File(s) attached
 

Attachments

  • stellaris_engibotTechnicianJob_planet1.jpeg
    stellaris_engibotTechnicianJob_planet1.jpeg
    265,1 KB · Views: 0
  • stellaris_engibotTechnicianJob_planet2.jpeg
    stellaris_engibotTechnicianJob_planet2.jpeg
    219,4 KB · Views: 0
  • stellaris_engibotTechnicianJob_planet3.jpeg
    stellaris_engibotTechnicianJob_planet3.jpeg
    286,3 KB · Views: 0
Last edited:
Upvote 0

Rodmar18

Lt. General
8 Badges
Sep 19, 2018
1.514
188
  • Stellaris: Galaxy Edition
  • Stellaris: Galaxy Edition
  • Stellaris: Galaxy Edition
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • Stellaris: Humanoids Species Pack
  • Stellaris: Distant Stars
  • Stellaris: Synthetic Dawn
About the "hysteresis" behaviour, let's return to Cajubus Secundus:
20 technician jobs in total
  1. close them all;
  2. open the first 9 jobs: all 9 energy droids are hired, one by one; per capita production is 10.3;
  3. open 6 more jobs (total is 15/20): 6 strong workers are hired, one by one; per capita production for them is 9.8, for a total of +115/153 surplus/income;
  4. open 1 more job (total is 16/20): 4 energy droids are fired (out of 9) and get replaced by 5 strong workers, for a total of +123/160 surplus/income;
  5. open 1 more job (total is 17/20): 1 energy droid is fired (out of 5) and get replaced by 2 non strong workers (9.5 per capita), all organic workers being now employed, 5 energy droids unemployed;
  6. open the last 3 jobs (total is 20/20): 3 energy droids are hired back, 2 energy droids left unemployed.
-------------------------------------
  1. close the first 7 jobs: 7 energy droids are fired (out of 7), one by one; all energy droids are unemployed, all organic workers are employed; energy surplus down to +90.
  2. close 2 more jobs (total is 11/20): 2 non strong workers are fired (out of 2), balance down to +71 (surplus);
  3. close 7 more jobs (total is 4/20): 7 strong workers are fired (out of 11), one by one; total of +2/60 surplus/income;
  4. close 1 more job (total is 3/20): 1 strong worker is fired; total of -8/30 deficit/income;
  5. close 1 more job (total is 2/20): 3 strong workers are fired (out of 3) and get replaced by 2 energy droids), for a total of -17/21 deficit/income; all organic workers being now unemployed, 6 energy droids unemployed;
The hysteresis is that in the progressive opening manipulation, the fallover (from scripted efficiency weighting to organic prioritization) happens at the 16th job opening, whereas the reverse fallover happens at the 18th job closing in the closing manipulation.
To be confirmed, but it looks like the fallover to the scripted prioritization happens when the planetary energy balance is negative (deficit) prior to close another technician job. No such condition is detected in the other way (with 17 technicians, there's still a surplus in energy).