Jump to content

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


Recommended Posts

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)

  • Like 2
Link to comment
Share on other sites

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!

Edited by HeatAndRun
  • Like 2
  • Thanks 1
Link to comment
Share on other sites

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.

  • Sad 1
Link to comment
Share on other sites

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

  • Like 8
  • Thanks 1
Link to comment
Share on other sites

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!Ā  : )

  • Like 3
  • Thanks 2
Link to comment
Share on other sites

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!

  • Like 2
Link to comment
Share on other sites

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.

  • Like 3
  • Thanks 1
Link to comment
Share on other sites

1 hour ago, HeatAndRun said:

I wonder what changes and fixes are made in the final update...

Pretty much no changes...

I guess the Celestial Champion now targets maxwells minions, and birds can't spawn near magma pools, I think the spawning of the mysterious energy is made better so you're able to place the Incomplete Experiment no matter how you place the altars.

That's... kind of it sadly...

  • Thanks 2
  • Sad Dupe 3
Link to comment
Share on other sites

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
 Share

×
  • Create New...