Confirmed Stellaris - [3.0.3][Event] Suspected cause for L-Gate event chain never ending

  • We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.
L-Cluster L-Gate

Rodmar18

General
8 Badges
Sep 19, 2018
1.956
345
  • 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
[3.0.3][Event] Suspected cause for L-Gate event chain never ending

Game Version
(3.0.3)

What version do you use?
Steam

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

Do you have mods enabled?
No

Please explain your issue is in as much detail as possible.


Steps to reproduce the issue.

Issue:


In my game, another empire opened thz first L-Gate and triggered a dragon season. Since then, I'm still stuck at 5/7 clues in my log and the L-Gate event chain never ended (I wasn't notified about loosing the race, only about another empire accessing the L-Cluster, the gates activating, and the dragons spawning). I had two L-Gates within borders.
I remember that this not the first time this bug shows, but it never show when my empire is the first opener. Only outcomes I 've had so far are the Empire and L-Drakes.

You can see on the screenshot that I own 5 L-Drakes, and yet the event chain is not ended and the clues are not cleared.


Suspected cause:

1/ Context:

In /events/distar_events.txt, it looks like: (distar.10901, distar.10905, distar.10953)
- the L-Gate event chain is ended whenever the special project becomes available, or you are informed that another empire opened the first gate;
- clues (insights) are liquidated if you choose to abandon the whole thing (because no L-Gate is within borders), or you are informed that another empire opened the first gate.

distar.10953 presents this script bit:
Code:
# Other Country Informed (has chain)
country_event = {
    id = distar.10953
    title = "distar.10953.name"
    desc = "distar.10953.desc"
    picture = GFX_evt_surreal_visions
    show_sound = event_alien_signal

    is_triggered_only = yes

    immediate = {
        liquidate_clues = yes                                                   <<<<<<<<<<<<<<<<<<<<<
        end_event_chain = "l_cluster_chain"                             <<<<<<<<<<<<<<<<<<<<<
    }

    option = {
        name = "distar.10953.a"
    }
}
I don't know which one line is really needed to make the chain disappear from the log, but let's just assume both (one to clear the insights, one to halt the country event chain).

Now, distar.10953 is called from distar.10951, when the cluster is found abandoned by any first opener empire.
And distar.10951 is called from distar.10950, when the special project about activating a L-Gate has been successful.

In distar.10950:
Code:
# outcome, to be determined at game start
        if = {
            limit = { has_global_flag = gray_goo_crisis_set }
            country_event = { id = graygoo.1 }                       >>>>>>>>>>>>>>>>>>> Gray Tempest
        }
        else_if = {
            limit = { has_global_flag = dragon_season }
            country_event = { id = distar.13000 }                   >>>>>>>>>>>>>>>>>>> L-Drakes
        }
        else_if = {
            limit = { has_global_flag = gray_goo_empire_set }
            country_event = { id = graygoo.100 }                   >>>>>>>>>>>>>>>>>>> the Dessanu
        }
        else = {
            country_event = { id = distar.10951 }                   >>>>>>>>>>>>>>>>>>> other incomes ??!
            # enable other L-Gates over time
            random_country = {
                limit = { is_country_type = global_event }
                country_event = { id = distar.10960 days = 200 random = 500 }
            }
        }
        # activated terminal egress l-gate
        event_target:lcluster1 = {
            random_system_megastructure = {
                activate_gateway = this
                set_megastructure_flag = lgate_activated
            }
        }
        set_global_flag = lgates_activated_globally
    }
}
we can see that distar.10951, hence distar.10953, are only called if the L-Cluster is found abandoned.

The question is now why the player doesn't get any ending when another empire triggers the L-Drakes.

It looks like only graygoo.1 in /events/gray_goo_events.txt presents a similar bit as distar.10953:
Code:
every_playable_country = {
            limit = {
                OR = {
                    has_event_chain = l_cluster_chain
                    has_special_project = LCLUSTER_PROJECT
                }
                NOT = { is_same_value = root }
            }
            liquidate_clues = yes                                 <<<<<<<<<<<<<<<<<< chain is ended already if LCLUSTER_PROJECT
            country_event = { id = graygoo.11 }
        }

At first glance, one could say that both L-Drakes (distar.13000) and Dessanu (gragoo.100) outcomes lack the proper ending bit, but it would be rather big an oversight.

Instead, what if the whole mess is caused by a mere branching "typo" in distar.10950, the last 'ELSE' being the issue, when controls returns to this script after anyone above (graygoo.1, distar.13000, graygoo.100) got executed?

What if:

Code:
# outcome, to be determined at game start
        if = {
            limit = { has_global_flag = gray_goo_crisis_set }
            country_event = { id = graygoo.1 }                       >>>>>>>>>>>>>>>>>>> Gray Tempest
        }
        else_if = {
            limit = { has_global_flag = dragon_season }
            country_event = { id = distar.13000 }                   >>>>>>>>>>>>>>>>>>> L-Drakes
        }
        else_if = {
            limit = { has_global_flag = gray_goo_empire_set }
            country_event = { id = graygoo.100 }                   >>>>>>>>>>>>>>>>>>> the Dessanu
        }

        country_event = { id = distar.10951 }                          >>>>>>>>>>>>>>>>>>> IN ANY CASE

# ???
        # enable other L-Gates over time
        random_country = {
            limit = { is_country_type = global_event }
            country_event = { id = distar.10960 days = 200 random = 500 }
        }
      
        # activated terminal egress l-gate
        event_target:lcluster1 = {
            random_system_megastructure = {
                activate_gateway = this
                set_megastructure_flag = lgate_activated
            }
        }
        set_global_flag = lgates_activated_globally
    }
}
A Dev or a modder should check what happens in the last part of distar.10950 script if the final ELSE is removed. I didn't make the effort to check in parallel what should happen in all possible cases.

Upload Attachment
File(s) attached
 

Attachments

  • stellaris_noEndingLClusterChain.jpeg
    stellaris_noEndingLClusterChain.jpeg
    103,2 KB · Views: 0
  • 1
Reactions:

Firegolem

First Lieutenant
17 Badges
Oct 19, 2019
247
110
  • Stellaris: Humanoids Species Pack
  • Stellaris: Nemesis
  • Stellaris: Necroids
  • Stellaris: Federations
  • Stellaris: Lithoids
  • Stellaris: Ancient Relics
  • Stellaris: Megacorp
  • Stellaris: Distant Stars
  • Stellaris: Apocalypse
  • Crusader Kings II: The Old Gods
  • Age of Wonders III
  • Stellaris: Synthetic Dawn
  • Knights of Honor
  • Stellaris - Path to Destruction bundle
  • Stellaris: Leviathans Story Pack
  • Stellaris: Digital Anniversary Edition
  • Stellaris
Yes I wondered about this sketchy set piece of code too (long time ago) only the Tempest and Empty outcome are right. I've already included a fix in my mod ADT (will extend this and bring it to Ariphaos). Btw.
The liquidate_clues effect should of course include the project too (it is rare but possible).
Ruby:
liquidate_clues = {
    hidden_effect = {
        if = {
            limit = {
                has_special_project = LCLUSTER_PROJECT
            }
            custom_tooltip = liquidated_7
            add_resource = {
                engineering_research = 3500
                energy = 3500
            }
            abort_special_project = { type = LCLUSTER_PROJECT }
        ...
and
Ruby:
country_event = {
    id = distar.10953
    ...
    immediate = {
        liquidate_clues = yes
        end_event_chain = "l_cluster_chain"                            <<<<<<<<<<<<<<<<<<<<<     IS REDUNDANT
    }

EDIT: https://github.com/F1r3Pr1nc3/Stell...mmit/f4a57a4694dc81f35ecff46c9f7bd472fca0ee77
 
Last edited: