• 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.

Archael90

Field Marshal
18 Badges
Nov 30, 2017
4.272
5.031
  • Stellaris: Humanoids Species Pack
  • Stellaris: Nemesis
  • Stellaris: Necroids
  • Stellaris: Federations
  • Stellaris: Lithoids
  • Stellaris: Ancient Relics
  • Stellaris: Megacorp
  • Stellaris: Distant Stars
  • Stellaris: Apocalypse
  • Surviving Mars
  • Stellaris - Path to Destruction bundle
  • Stellaris: Leviathans Story Pack
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Galaxy Edition
  • Stellaris
  • Majesty 2
  • Stellaris: Synthetic Dawn
  • Stellaris: Galaxy Edition
I know that FTL we know pre 2.0 are hardcoded.
But i was wandering how deep moders can get.
Is it possible to create FTL based on jump drive that will act simmilar to old warp? I mean it works simmilar at the moment, but is it possible to reduce it range, but remove jum penalties and cooldown, make ships to use it as default and allow path finding based on it?
Is it possible for constructor ships to build smaller and cheeper gateways that allow ships with "wormhole" drive to use jumps from system where they are to some range and from their range to the system where they are?
Also is there a way to allow empires to choose one of them at the empire creator and disable researching others later, even from debries?
Im not asking for such mod, this would require hell of a work, especially with balance.
Im asking if such a thing is possible.
 
Answering your questions in order:

Loosely. Depends how picky you are.

Yes, yes, no, no.

No, gateways don't work that way. It is either access to all, as in the normal gateways, or they work like L-gates.

No, I don't think it can be done in the empire creator. You could do it as a event at game start to grant the tech. Yes, techs can be excluded from debris.
 
No, gateways don't work that way. It is either access to all, as in the normal gateways, or they work like L-gates.
Okay, but maybe a structure that bring present in a system allow ships with specific ftl engine to perform jump from that system to a certain range, and from any system on the range to the system with that structure, or implement to this specific ftl a function making it MIA and appear in the nearest system with that structure?

But either way. If this cant be used as default and game cant find paths, this means that travels would be manual from system to system.. this would be too much micro heavy, and AI could not handle this ;/

Okay second attempt
Is it possible to create this (or how much simmilar to this?):
Wormhole : can jump only from outside system gravity field, but dont need to travel to specific hyperlane to travel through it.
It has very quick warm time, and no cooldown, but only one ship at the time (not one from each fleet, just one from the system) can warm up, and only when all ships in fleet has warmed, fleet jumps.
(Spliting fleet into few smaller ones wont fasten).
Upgrades allows to jump more hyperlanes at one time (max 3 or 4), but if on any system on path there is an FTL inhibitor, the jump will stay there.
This subtype would be most effitient at the start of the game, and with smaller fleets or high hyperlane density.
Warp drive : this FTL subtype can jump from anywhere in the system, has very short warm up time, but huuge cooldown. This one can make only one ship IN FLEET at the time to warmup, so more smaller fleets would benefit more from this. Higher tiers od this one reduces cooldown, so it stays decent choice through whole game.
Hyperdrive : this one needs to be at specific place outside system gravity field (near the arrow pointing to hyperlane), and require some wormup, and decent cooldown. Higher tiers reduces cooldown to even 0 (on friendly territory) and increase number od lanes that can be jumped at one time (max 2, or 3).
This one would be not best choice at start, but become the fastest as gamę progress.
 
Last edited:
Okay, but maybe a structure that bring present in a system allow ships with specific ftl engine to perform jump from that system to a certain range, and from any system on the range to the system with that structure, or implement to this specific ftl a function making it MIA and appear in the nearest system with that structure?

But either way. If this cant be used as default and game cant find paths, this means that travels would be manual from system to system.. this would be too much micro heavy, and AI could not handle this ;/

Okay second attempt
Is it possible to create this (or how much simmilar to this?):
Wormhole : can jump only from outside system gravity field, but dont need to travel to specific hyperlane to travel through it.
It has very quick warm time, and no cooldown, but only one ship at the time (not one from each fleet, just one from the system) can warm up, and only when all ships in fleet has warmed, fleet jumps.
(Spliting fleet into few smaller ones wont fasten).
Upgrades allows to jump more hyperlanes at one time (max 3 or 4), but if on any system on path there is an FTL inhibitor, the jump will stay there.
This subtype would be most effitient at the start of the game, and with smaller fleets or high hyperlane density.
Warp drive : this FTL subtype can jump from anywhere in the system, has very short warm up time, but huuge cooldown. This one can make only one ship IN FLEET at the time to warmup, so more smaller fleets would benefit more from this. Higher tiers od this one reduces cooldown, so it stays decent choice through whole game.
Hyperdrive : this one needs to be at specific place outside system gravity field (near the arrow pointing to hyperlane), and require some wormup, and decent cooldown. Higher tiers reduces cooldown to even 0 (on friendly territory) and increase number od lanes that can be jumped at one time (max 2, or 3).
This one would be not best choice at start, but become the fastest as gamę progress.
I really don't know how you'd even begin to try implementing that.

First off, no, you cannot jump multiple hyperlanes in any method that would allow the ship to use it normally.

Second, you can't make only 1 ship per fleet warm up with anything that the ships could use normally. Same with per system.

Wormhole, no. The main mechanic there is 1 per system. Can't do it. Otherwise it's just jump drives.

Warp is just jump drive with the numbers changed around, aside from the limit of only 1 ship per fleet. But even if all you did was change around numbers, jump drives still require you to press the button, as it's not automatic.

Hyperdrive can be mostly changed to that right now. Messing with cooldown times and such is available, but as I said, jumping multiple hyperlanes is not.
 
I really don't know how you'd even begin to try implementing that.
Im not saying i will do that.
Im just asking if this is even possible in current modding abilities.

Well then its not possible ^.^"
Thanks guys :)
 
It is possible to make a script which instantly or with a delay moves a fleet from current spot in the galaxy to another, you just have to anchor exit on something, like a planet, ambient_object, megastructure, fleet etc.

I did not manage yet to get euclidean (as opposed to number of hyperlane jumps) distance measurment to work between systems. Other than that I wrote a script which works just like "wormhole drives" you mention. I think connor from Discord worked on an FTL alternative, he even swapped a jump button with a new jump drive type., and aparently there is a way to make euclidean measurment work, even though it should not.

As James said, "Depends how picky you are."
 
It is possible to make a script which instantly or with a delay moves a fleet from current spot in the galaxy to another, you just have to anchor exit on something, like a planet, ambient_object, megastructure, fleet etc.

I did not manage yet to get euclidean (as opposed to number of hyperlane jumps) distance measurment to work between systems. Other than that I wrote a script which works just like "wormhole drives" you mention. I think connor from Discord worked on an FTL alternative, he even swapped a jump button with a new jump drive type., and aparently there is a way to make euclidean measurment work, even though it should not.

As James said, "Depends how picky you are."
I was just asking questions and presenting examples, not definitives.
And im not picky at all, as long as it works :v
 
Right, for anyone interested here is the code for a wormhole station which will recall random allied fleet when enemy fleet enters the system. If anyone wants feel free to extract what's valuable and make a wormhole drive out of it. Script creates an ambient_object marked with an ambient object flag a fleet can then be moved onto.

Code:
# set_country_flag = acemod_defensive_jumpdrive_protocol                        country                Enables defensive jumpdrive protocol for given country. Contingency has it by default. Requires acemod_assisted_ai country flag.
# acemod_set_country_acemod_defensive_jumpdrive_protocol_exclusion_on = yes        country                Prevents ACEMOD from issuing defensive jumpdrive protocol.
# acemod_set_country_acemod_defensive_jumpdrive_protocol_exclusion_off = yes    country                Resumes default operation.
# set_star_flag = acemod_star_flag_is_defensive_jumpdrive_protocol_system        fleet planet        Designates defensive jumpdrive protocol protected system.
# set_ambient_object_flag = acemod_ambient_object_flag_defensive_jumpdrive_protocol_target            ambient_object            Designates ambient object to move fleet to.
# set_global_flag = acemod_defensive_jumpdrive_protocol_disabled                global                Disables defensive jumpdrive protocol for all countries.

Code:
# Prevents ACEMOD from issuing defensive jumpdrive protocol.
# Scope: country
acemod_set_country_acemod_defensive_jumpdrive_protocol_exclusion_on = {
    set_variable = {
        which = acemod_var_country_defensive_jumpdrive_protocol_exclusion
        value = 1
    }
}

# Resumes default operation.
# Scope: country
acemod_set_country_acemod_defensive_jumpdrive_protocol_exclusion_off = {
    set_variable = {
        which = acemod_var_country_defensive_jumpdrive_protocol_exclusion
        value = 0
    }
}

Code:
on_yearly_pulse = {
    events = {
        acemod_core.3        # Applies anti-crisis damage debuff to all playable empires.
        acemod_core.5        # Applies anti-relics damage debuff to all playable empires.
        acemod_fleet.605        # Spawns wormhole station for Contingency worlds.
    }
}

on_entering_system_fleet = {
    events = {
        acemod_fleet.610        # Activates defensive jumpdrive protocol if protected system is under attack.
    }
}


Code:
# Jumps to the capital scope. This is a debug event.
fleet_event = {
    id = acemod_fleet.600
    hide_window = yes
    is_triggered_only = yes
    immediate = {
        set_location = {
            target = owner.capital_scope
            distance = 5
            angle = random
            direction = in_system
        }
        clear_orders = yes
    }
}

# Spawns wormhole station for Contingency worlds.
event = {
    id = acemod_fleet.605
    hide_window = yes
    is_triggered_only = yes
    trigger = {
        has_global_flag = ai_invasion_ongoing
        has_global_flag = acemod_activated
        NOR = {
            has_global_flag = acemod_defensive_jumpdrive_protocol_disabled
            has_global_flag = acemod_all_wormhole_station_spawned
        }
    }
    immediate = {
        every_country = {
            limit = {
                is_country_type = ai_empire
                has_country_flag = acemod_assisted_ai
                NOT = {
                    check_variable = {
                        which = acemod_var_country_defensive_jumpdrive_protocol_exclusion
                        value = 1
                    }
                }
            }
            every_system_within_border = {
                limit = {
                    OR = {
                        has_star_flag = AI_hub
                        has_star_flag = AI_lair
                    }
                    NOT = {
                        has_star_flag = acemod_star_flag_wormhole_station_spawned
                    }
                }
                every_system_planet = {
                    limit = {
                        is_planet_class = pc_ai
                    }
                    owner = {
                        set_country_flag = acemod_defensive_jumpdrive_protocol
                        change_variable = {
                            which = acemod_var_num_wormhole_station_spawned
                            value = 1
                        }
                        if = {
                            limit = {
                                check_variable = {
                                    which = acemod_var_num_wormhole_station_spawned
                                    value >= 4
                                }
                            }
                            set_global_flag = acemod_all_wormhole_station_spawned
                        }
                    }
                    # save_event_target_as = acemod_pc_ai_scale
                    create_ambient_object = {
                        type = abandoned_wormhole_station
                        scale = 2
                        location = this
                        entity_offset = {
                            min = 20
                            max = 30
                        }
                        entity_offset_height = {
                            min = 20
                            max = 10
                        }
                    }
                    last_created_ambient_object = {
                        set_ambient_object_flag = acemod_ambient_object_flag_defensive_jumpdrive_protocol_target
                    }
                }
                set_star_flag = acemod_star_flag_wormhole_station_spawned
                set_star_flag = acemod_star_flag_is_defensive_jumpdrive_protocol_system
            }
        }
    }
}

# TO DO: Fleet power comparison
# TO DO: Distance check
# Activates defensive jumpdrive protocol if protected system is under attack.
fleet_event = {
    id = acemod_fleet.610
    hide_window = yes
    is_triggered_only = yes
    trigger = {
        solar_system = {
            has_star_flag = acemod_star_flag_is_defensive_jumpdrive_protocol_system
            NOT = {
                has_star_flag = acemod_star_flag_defensive_jumpdrive_protocol_cooldown
            }
            owner = {
                NOT = {
                    check_variable = {
                        which = acemod_var_country_defensive_jumpdrive_protocol_exclusion
                        value = 1
                    }
                }
            }
        }
        NOT = {
            has_global_flag = acemod_defensive_jumpdrive_protocol_disabled
        }
    }
    immediate = {
        if = {
            limit = {
                fleet_power > 0
                owner = {
                    is_hostile = from.owner
                }
            }
            solar_system = {
                if = {
                    limit = {
                        owner = {
                            has_country_flag = acemod_defensive_jumpdrive_protocol
                        }
                    }
                    random_system_ambient_object = {
                        limit = {
                            has_ambient_object_flag = acemod_ambient_object_flag_defensive_jumpdrive_protocol_target
                        }
                        solar_system = {
                            set_timed_star_flag = {
                                flag = acemod_star_flag_defensive_jumpdrive_protocol_cooldown
                                days = 200
                            }
                            owner = {
                                random_owned_fleet = {
                                    limit = {
                                        is_ship_class = shipclass_military
                                        is_in_combat = no
                                        NOR = {
                                            check_variable = {
                                                which = acemod_var_fleet_piloted_exclusion
                                                value = 1
                                            }
                                            has_fleet_flag = acemod_fleet_flag_defensive_jumpdrive_protocol_cooldown
                                        }
                                        # Does not work.
                                        # solar_system = {
                                        #     closest_system = {
                                        #         min_steps = 1
                                        #         max_steps = 20
                                        #        has_star_flag = AI_lair
                                        #         has_star_flag = AI_hub
                                        #     }
                                        # }
                                    }
                                    fleet_event = {
                                        id = acemod_fleet.611
                                        days = 14
                                    }
                                    # set_location = {
                                    #     target = prevprevprev
                                    #     distance = 10
                                    #     angle = random
                                    # }
                                    # set_timed_fleet_flag = {
                                    #     flag = acemod_fleet_flag_defensive_jumpdrive_protocol_cooldown
                                    #     days = 200
                                    # }
                                    # add_modifier = {
                                    #     modifier = acemod_defensive_jumpdrive_protocol_cooldown_modifier
                                    #     days = 200
                                    # }
                                    # clear_orders = yes
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

# Delayed effect to jump the fleet. Simulates jump windup.
fleet_event = {
    id = acemod_fleet.611
    hide_window = yes
    is_triggered_only = yes
    immediate = {
        owner = {
            random_system_within_border = {
                limit = {
                    has_star_flag = acemod_star_flag_defensive_jumpdrive_protocol_cooldown
                    NOT = {
                        any_fleet_in_system = {
                            has_fleet_flag = acemod_fleet_flag_defensive_jumpdrive_protocol_cooldown
                            owner = {
                                is_same_value = root.owner
                            }
                        }
                    }
                }
                random_system_ambient_object = {
                    limit = {
                        has_ambient_object_flag = acemod_ambient_object_flag_defensive_jumpdrive_protocol_target
                    }
                    save_event_target_as = acemod_solar_system_defensive_jumpdrive_protocol_target
                }
            }
        }
        set_location = {
            target = event_target:acemod_solar_system_defensive_jumpdrive_protocol_target
            distance = 10
            angle = random
        }
        set_timed_fleet_flag = {
            flag = acemod_fleet_flag_defensive_jumpdrive_protocol_cooldown
            days = 200
        }
        add_modifier = {
            modifier = acemod_defensive_jumpdrive_protocol_cooldown_modifier
            days = 200
        }
        clear_orders = yes
    }
}