Jump to content

Thermbell doesn't provide any heat/cold when held in hand


hoxi
  • Fixed

This has been an issue for a while, but I'm giving it some attention now again due to the fumarole's thermic tools not suffering this issue, as they properly set an equippedheatfn function.

 

That's not the case for Thermbells (dumbbell_heat):

inst:AddComponent("heater")
inst.components.heater.heatfn = HeatFn
inst.components.heater.carriedheatfn = HeatFn
inst.components.heater.equippedheatfn = HeatFn -- this one's missing
inst.components.heater.carriedheatmultiplier = TUNING.HEAT_ROCK_CARRIED_BONUS_HEAT_FACTOR
inst.components.heater:SetThermics(false, false)

 

There's also three other things worth pointing out related to this:

  • carriedheatmultiplier isn't used for equipped items, despite them being basically carried. This would affect Thermbells when held in hand (if that's addressed but this isn't), causing them to weirdly be less effective when held in hand.
  • The fumarole's thermic tools don't have a carriedheatmultiplier, which may be intended but I'm just pointing it out just in case.
  • Active items (held in the cursor) aren't accounted for by the temperature component for adding heat/cold.

 

 

Regarding the last point, this results in them doing nothing for the player, either positively, or negatively, but unintuitive either way. Players may not realize that holding a thermal stone there won't do anything (meanwhile, the stone will still lose heat/cold), and on other hand, it allows you to hold a very hot thermic tool to remove its downside of giving you too much heat.

Spoiler
if self.inst.components.inventory ~= nil then
	for k, v in pairs(self.inst.components.inventory.equipslots) do
		if v.components.heater ~= nil then
			local heat = v.components.heater:GetEquippedHeat() -- should support carriedmult too
			if heat ~= nil and
				((heat > self.current and v.components.heater:IsExothermic()) or
				(heat < self.current and v.components.heater:IsEndothermic())) then
				self.delta = self.delta + heat - self.current
			end
		end
	end
	for k, v in pairs(self.inst.components.inventory.itemslots) do
		if v.components.heater ~= nil then
			local heat, carriedmult = v.components.heater:GetCarriedHeat()
			if heat ~= nil and
				((heat > self.current and v.components.heater:IsExothermic()) or
				(heat < self.current and v.components.heater:IsEndothermic())) then
				self.delta = self.delta + (heat - self.current) * carriedmult
			end
		end
	end
	local overflow = self.inst.components.inventory:GetOverflowContainer()
	if overflow ~= nil then
		for k, v in pairs(overflow.slots) do
			if v.components.heater ~= nil then
				local heat, carriedmult = v.components.heater:GetCarriedHeat()
				if heat ~= nil and
					((heat > self.current and v.components.heater:IsExothermic()) or
					(heat < self.current and v.components.heater:IsEndothermic())) then
					self.delta = self.delta + (heat - self.current) * carriedmult
				end
			end
		end
	end

	-- this is normally missing
	local active_item = self.inst.components.inventory:GetActiveItem() or nil
	if active_item ~= nil and active_item.components.heater ~= nil then
		local heat, carriedmult = active_item.components.heater:GetCarriedHeat()
		if heat ~= nil and
			((heat > self.current and active_item.components.heater:IsExothermic()) or
			(heat < self.current and active_item.components.heater:IsEndothermic())) then
			self.delta = self.delta + (heat - self.current) * carriedmult
		end
	end
end

 


Steps to Reproduce

Regarding Thermbells:

  • Equip a Thermbell in your hand.
  • Notice how it won't give any heat or cold.

 

Regarding the active items not providing heat/cold issue:

  • Fully heat up a thermic tool.
  • Keep it in your inventory or hand.
  • Check temperature through debugging, or if applicable, notice how you'll overheat.
  • Hold it in your cursor.
  • Notice how it won't heat you up anymore, effectively removing the downside of having to deal with the extra heat.
  • Big Ups 1



User Feedback


A developer has marked this issue as fixed. This means that the issue has been addressed in the current development build and will likely be in the next update.

can this please be fixed for EQUIPSLOTS.BEARD too? Temperature items don't do anything in there, despite being on the player's very face.

Edited by Well-met
  • Sad Dupe 1

Share this comment


Link to comment
Share on other sites

7 hours ago, Well-met said:

can this please be fixed for EQUIPSLOTS.BEARD too? Temperature items don't do anything in there, despite being on the player's very face.

Oh true, good reminder! That's also definitely a similar oversight due to how the beard container works, but there's really no reason for that to not be a thing, it's just as unintuitive.

  • Like 1

Share this comment


Link to comment
Share on other sites

16 hours ago, hoxi said:

Oh true, good reminder! That's also definitely a similar oversight due to how the beard container works, but there's really no reason for that to not be a thing, it's just as unintuitive.

I assume klei no longer reads this ticket so this would need a new report?

  • Sad Dupe 1

Share this comment


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

×
  • Create New...