Jump to content

Return of Data Mining, Art Assets, Model Dumping & More! (SPOILERS!)


Recommended Posts

7 hours ago, Slagger said:

Wait, what's going on?

In general, wagstaff was added via the moonstorm event, people are freaking out over that-

for the recent thread posts, theyre referencing the white kings speech in hollow knight so spoilers for that

Spoiler
Quote

No cost too great.

No mind to think.
No will to break.
No voice to cry suffering.
Born of God and Void.
You shall seal the blinding light that plagues their dreams.
You are the Vessel.
You are the Hollow Knight.

its in reference to the final boss of hollow knight, the radiance which sort of does the same attacks as the new DS boss

 

I thought I posted this already but obviously not. It was suggested I put these here so I shall.
Anyhow I was doing some digging and found out that the giant eye in the sky is indeed named Alter, here's the animations of it revealing and hiding itself.
alter_reveal.gif.99c814b2bf0d7d1ec182538e078cb04c.gifalter_hide.gif.918999389476c388836b2b2d3c368b48.gif

10 hours ago, -Variant said:

I thought I posted this already but obviously not. It was suggested I put these here so I shall.
Anyhow I was doing some digging and found out that the giant eye in the sky is indeed named Alter, here's the animations of it revealing and hiding itself.
alter_reveal.gif.99c814b2bf0d7d1ec182538e078cb04c.gifalter_hide.gif.918999389476c388836b2b2d3c368b48.gif

Thats the icon for the new full moon nights (the ones while moonstorm is activated)

14 hours ago, HeatAndRun said:

Now celestial champion at phase 2 will spin faster if your base speed is fast.

 

This looks like it's been taken straight out of a cartoon, thanks for posting! :wilson_ecstatic:

Did you guys know... The gestalts don't attack you when you're wearing an enlightened crown? Like a bone helm. You don't need to struggle with every night's lunacy effect if you have an enlightened crown when you're gonna exploit the perma full moon!

1 minute ago, HeatAndRun said:

Did you guys know... The gestalts don't attack you when you're wearing an enlightened crown? Like a bone helm. You don't need to struggle with every night's lunacy effect if you have an enlightened crown when you're gonna exploit the perma full moon!

I never seemed to notice this. That's really cool, but I still think it's sanity threshold needs lowering.

Most likely someone has already written something like this before me, but I noticed in the game files the designation of things from The Gorge for the map. As long as I remember there were no maps  in the Gorge. Does anyone know why they are needed in the game?

1234.png.07ee7c5d10626388ef137ec992a500c9.png

And also this, I can't remember what it is1233.png.ca55299aa0711d16b481f758ae1344df.png

37 minutes ago, Deerclops Mika said:

Most likely someone has already written something like this before me, but I noticed in the game files the designation of things from The Gorge for the map. As long as I remember there were no maps  in the Gorge. Does anyone know why they are needed in the game?

Maybe in an early version of the Gorge you could use the map?

 

38 minutes ago, Deerclops Mika said:

And also this, I can't remember what it is

That's the old design of the mushlight!  : )

Does anyone know if and where the Archive Sigil is used?1890042795_ArchiveSigil.png.3f8f1f4727f3aebdca6b734f5eee7f2d.png
It's found under data/anim/archive_sigil.zip 

There's an animation included, but I couldn't get it to run..

 

 

And while I'm here, could anyone of you help me understand the brightmare_gestalt_invaderbrain.lua file found in scripts/brains?
 

Spoiler

require "behaviours/chaseandattack"
require "behaviours/panic"
require "behaviours/attackwall"
require "behaviours/leash"
require "behaviours/standstill"

local WORK_DIST = 3 --must be greater than physics radii
local LOST_DIST = 60
local RETURN_DIST = 15
local BASE_DIST = 6

local LOST_TIME = 5
local AGGRO_TIME = 6
local PETRIFY_TIME = 3
local PETRIFY_TIME_VAR = 1

local MoonBeastBrain = Class(Brain, function(self, inst)
    Brain._ctor(self, inst)
    self._losttime = nil
    self._petrifytime = nil
end)

local function GetInvadeTarget(inst)
    return inst.components.entitytracker:GetEntity("invadeTarget")
end

local function LostInvadeTarget(self)
    local target = GetInvadeTarget(self.inst)
    if target ~= nil and self.inst:IsNear(target, LOST_DIST) then
        self._losttime = nil
        return false
    elseif self._losttime == nil then
        self._losttime = GetTime()
        return false
    end
    return GetTime() - self._losttime > LOST_TIME
end

local function LostMoonCharge(self)
    local target = GetInvadeTarget(self.inst)
    if target == nil or
        (   target.components.timer ~= nil and
            target.components.timer:TimerExists("InvadeTarget") ) then
        self._petrifytime = nil
        return false
    elseif self._petrifytime == nil then
        self._petrifytime = GetTime() + GetRandomWithVariance(PETRIFY_TIME, PETRIFY_TIME_VAR)
        return false
    end
    return GetTime() > self._petrifytime
end

local function ShouldTargetInvadeTarget(inst)
    local target = GetInvadeTarget(inst)
    return target ~= nil
        and target:HasTag("wagstaff_npc")
        --and target.components.timer ~= nil
        --and target.components.timer:TimerExists("InvadeTarget")
        and GetTime() - inst.components.combat:GetLastAttackedTime() > AGGRO_TIME
end

local function GetInvadeTargetPos(inst)
    local target = GetInvadeTarget(inst)
    return target ~= nil and target:GetPosition() or nil
end

local function AttackInvadeTarget(inst)
    --inst:PushEvent("workmoonbase", { invadetarget = GetInvadeTarget(inst) })
end

local BREAKSKELETONS_MUST_TAGS = { "playerskeleton", "HAMMER_workable" }
local function BreakSkeletons(inst)
    local skel = FindEntity(inst, 1.25, nil, BREAKSKELETONS_MUST_TAGS)
    if skel ~= nil then
        skel.components.workable:WorkedBy(inst, 1)
    end
end

local function shouldspit(inst)
    if inst:HasTag("gestalt_invader_spitter") then
        if inst.components.combat.target and not inst.components.timer:TimerExists("spit_cooldown") then
            return true
        end
    end
end

local function spit(inst)
    local act = BufferedAction(inst, inst.components.combat.target, ACTIONS.TOSS)
    return act
end

local function shouldwaittospit(inst)
    if inst:HasTag("gestalt_invader_spitter") then
        if inst.components.combat.target then
            if inst:GetDistanceSqToInst(inst.components.combat.target) <= 4*4 then
                return true
            end
        end
    end
end

function MoonBeastBrain:OnStart()
    local root = PriorityNode(
    {
        WhileNode(function() return self.inst.components.hauntable ~= nil and self.inst.components.hauntable.panic end, "PanicHaunted", Panic(self.inst)),
        WhileNode(function() return self.inst.components.health.takingfiredamage end, "OnFire", Panic(self.inst)),

        --Teleported away, or moonbase got removed
        WhileNode(function() return LostInvadeTarget(self) end, "Lost Target",
            ActionNode(function() self.inst.components.health:Kill() end)),

        WhileNode(function() return shouldspit(self.inst) end, "Spit",
            DoAction(self.inst, spit)),
        
        WhileNode(function() return shouldwaittospit(self.inst) end, "waittospit",
            StandStill(self.inst)),

        SequenceNode{
            ActionNode(function() BreakSkeletons(self.inst) end),
            AttackWall(self.inst),
            ActionNode(function() self.inst.components.combat:ResetCooldown() end),
        },

        WhileNode(function() return ShouldTargetInvadeTarget(self.inst) end, "InvadeTarget",
            PriorityNode({
                Leash(self.inst, function() return GetInvadeTarget(self.inst):GetPosition() end, WORK_DIST, WORK_DIST),
                ActionNode(function() AttackInvadeTarget(self.inst) end),
                StandStill(self.inst),
            })),

        ChaseAndAttack(self.inst, 100),
        Leash(self.inst, GetInvadeTargetPos, RETURN_DIST, BASE_DIST),
        Panic(self.inst),
    }, .25)

    self.bt = BT(self.inst, root)
end

return MoonBeastBrain
 

I'm not much of a coder myself, but it looks to me like a Moonbase/Wagstaff-Type event, except with Gestalts I reckon? Did Klei just plan on using Gestalts instead of mutated birds originally and scrapped the idea? What creature has the tag "gestalt_invader_spitter"?

Would really appreciate the help of someone who actually knows what's going on here haha

Thanks in advance!

34 minutes ago, Tim S. said:

And while I'm here, could anyone of you help me understand the brightmare_gestalt_invaderbrain.lua file found in scripts/brains?
 

  Reveal hidden contents

require "behaviours/chaseandattack"
require "behaviours/panic"
require "behaviours/attackwall"
require "behaviours/leash"
require "behaviours/standstill"

local WORK_DIST = 3 --must be greater than physics radii
local LOST_DIST = 60
local RETURN_DIST = 15
local BASE_DIST = 6

local LOST_TIME = 5
local AGGRO_TIME = 6
local PETRIFY_TIME = 3
local PETRIFY_TIME_VAR = 1

local MoonBeastBrain = Class(Brain, function(self, inst)
    Brain._ctor(self, inst)
    self._losttime = nil
    self._petrifytime = nil
end)

local function GetInvadeTarget(inst)
    return inst.components.entitytracker:GetEntity("invadeTarget")
end

local function LostInvadeTarget(self)
    local target = GetInvadeTarget(self.inst)
    if target ~= nil and self.inst:IsNear(target, LOST_DIST) then
        self._losttime = nil
        return false
    elseif self._losttime == nil then
        self._losttime = GetTime()
        return false
    end
    return GetTime() - self._losttime > LOST_TIME
end

local function LostMoonCharge(self)
    local target = GetInvadeTarget(self.inst)
    if target == nil or
        (   target.components.timer ~= nil and
            target.components.timer:TimerExists("InvadeTarget") ) then
        self._petrifytime = nil
        return false
    elseif self._petrifytime == nil then
        self._petrifytime = GetTime() + GetRandomWithVariance(PETRIFY_TIME, PETRIFY_TIME_VAR)
        return false
    end
    return GetTime() > self._petrifytime
end

local function ShouldTargetInvadeTarget(inst)
    local target = GetInvadeTarget(inst)
    return target ~= nil
        and target:HasTag("wagstaff_npc")
        --and target.components.timer ~= nil
        --and target.components.timer:TimerExists("InvadeTarget")
        and GetTime() - inst.components.combat:GetLastAttackedTime() > AGGRO_TIME
end

local function GetInvadeTargetPos(inst)
    local target = GetInvadeTarget(inst)
    return target ~= nil and target:GetPosition() or nil
end

local function AttackInvadeTarget(inst)
    --inst:PushEvent("workmoonbase", { invadetarget = GetInvadeTarget(inst) })
end

local BREAKSKELETONS_MUST_TAGS = { "playerskeleton", "HAMMER_workable" }
local function BreakSkeletons(inst)
    local skel = FindEntity(inst, 1.25, nil, BREAKSKELETONS_MUST_TAGS)
    if skel ~= nil then
        skel.components.workable:WorkedBy(inst, 1)
    end
end

local function shouldspit(inst)
    if inst:HasTag("gestalt_invader_spitter") then
        if inst.components.combat.target and not inst.components.timer:TimerExists("spit_cooldown") then
            return true
        end
    end
end

local function spit(inst)
    local act = BufferedAction(inst, inst.components.combat.target, ACTIONS.TOSS)
    return act
end

local function shouldwaittospit(inst)
    if inst:HasTag("gestalt_invader_spitter") then
        if inst.components.combat.target then
            if inst:GetDistanceSqToInst(inst.components.combat.target) <= 4*4 then
                return true
            end
        end
    end
end

function MoonBeastBrain:OnStart()
    local root = PriorityNode(
    {
        WhileNode(function() return self.inst.components.hauntable ~= nil and self.inst.components.hauntable.panic end, "PanicHaunted", Panic(self.inst)),
        WhileNode(function() return self.inst.components.health.takingfiredamage end, "OnFire", Panic(self.inst)),

        --Teleported away, or moonbase got removed
        WhileNode(function() return LostInvadeTarget(self) end, "Lost Target",
            ActionNode(function() self.inst.components.health:Kill() end)),

        WhileNode(function() return shouldspit(self.inst) end, "Spit",
            DoAction(self.inst, spit)),
        
        WhileNode(function() return shouldwaittospit(self.inst) end, "waittospit",
            StandStill(self.inst)),

        SequenceNode{
            ActionNode(function() BreakSkeletons(self.inst) end),
            AttackWall(self.inst),
            ActionNode(function() self.inst.components.combat:ResetCooldown() end),
        },

        WhileNode(function() return ShouldTargetInvadeTarget(self.inst) end, "InvadeTarget",
            PriorityNode({
                Leash(self.inst, function() return GetInvadeTarget(self.inst):GetPosition() end, WORK_DIST, WORK_DIST),
                ActionNode(function() AttackInvadeTarget(self.inst) end),
                StandStill(self.inst),
            })),

        ChaseAndAttack(self.inst, 100),
        Leash(self.inst, GetInvadeTargetPos, RETURN_DIST, BASE_DIST),
        Panic(self.inst),
    }, .25)

    self.bt = BT(self.inst, root)
end

return MoonBeastBrain
 

I'm not much of a coder myself, but it looks to me like a Moonbase/Wagstaff-Type event, except with Gestalts I reckon? Did Klei just plan on using Gestalts instead of mutated birds originally and scrapped the idea? What creature has the tag "gestalt_invader_spitter"?

Would really appreciate the help of someone who actually knows what's going on here haha

Thanks in advance!

Yup! It looks like it was originally gonna be gestalts, Heck the functions that spawn the birds in the event still have names like "SpawnGestalt", the brightmare_gestalt_invaderbrain is identical to the mutant bird brain too!

 

36 minutes ago, Tim S. said:

Does anyone know if and where the Archive Sigil is used?1890042795_ArchiveSigil.png.3f8f1f4727f3aebdca6b734f5eee7f2d.png
It's found under data/anim/archive_sigil.zip 

There's an animation included, but I couldn't get it to run..

This is interesting! I don't think it's used anywhere, so its probably unused. There's only two "animations" named "on" and "off", theyre just the still images you posted there. "Off" being the white sign, "On" being the yellow sign.

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...