Jump to content

Recommended Posts

Hi all, I'm hoping this is the right forum, since it is modding related.

There is currently a bug with the Don't Starve Alone mod that amounts to two things: Rifts not spawning properly, needing another day to be spent in the caves after the initial 5 day cooldown, and dreadstone outcrops not respawning on nightmare fissures unless you spend 3 days in the caves. Trick is these cooldowns not only don't tick down when you're on the surface, but they actually both reset whenever you leave and reenter the caves, which is a problem if you actually want to use the shiny new shadow rift gear. Both of these values were checked with insight.

Now since I have no hope (or desire) of actually fixing this thing inside the mod, I'm thinking using console command would be much easier. While I have found a solution to forcing the rifts to spawn via copious amounts of ChatGPT (my lua is weak), using this command:

TheWorld.components.riftspawner:SpawnRift()

What I'm desperately looking for is something similar for dreadstone outcrops. I'm fine with manually writing down when I've mined it/killed whatever it spawned and resetting the cooldown whenever I'm going back (after 3 days) via console, but I just can't find the proper command, no matter what I try. I'm guessing the function must be hidden somewhere in scripts\components\shadowthrallmanager.lua, but no matter what I try with the console, no dice.

Could someone give me a hand, either to modify the cooldown to make it a few seconds, or to force the game into being able to spawn dreadstone outcrops?

The reason it only updates when you go in the caves is because it depends on GetTime() for calculating cooldown time. in DSA, GetTime() resets to 0 when you enter the caves because any shards you're not in are either unloaded or paused, one of those two. As for a fix, I'm not sure unless you're somehow able to make GetTime() the time you have in the other shard.

You can use require"debugcommands" and d_shadowrift() to spawn shadowrifts. shadowfissure.lua handles dreadstone outcrops, it's entity gets overwritten.

example of shadowthrallmanager.lua using GetTime() for OnLoad()

Spoiler
function self:OnLoad(data)
    if data then
        _internal_cooldown = GetTime() + (data.cooldown or _internal_cooldown)
        if data.dreadstonecooldown then
            _dreadstone_regen_task = self.inst:DoTaskInTime(data.dreadstonecooldown, OnMineCooldown)
        end
        if data.spawnthrallstime then
            _spawn_thralls_task = self.inst:DoPeriodicTask(CHECK_FISSURE_INTERVAL, OnSpawnThralls_Bridge, data.spawnthrallstime)
        end
        _loading = true
        self.inst:DoTaskInTime(LOADING_GRACE_TIME, OnLoadingGraceTime)
    end
end

I would want to help but I don't know what's the most effective solution for this. Looks like on sync.lua in the DSA alone mod they use TheWorld.components.dsa_clocksync.elapsedtime in place of GetTime() when trying to sync things? Ingame it looks like TheWorld.components.dsa_clocksync.currenttime is what the value GetTime() would be if you wanted things to sync. But not sure why it's not used outside of the component file.

Edited by oregu

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
×
  • Create New...