During one of the updates the fueled component was changed from immediately removing a bit of its fuel source when turning on to being delayed by one logical tick in the timer scheduler (1/30th of a second).
The issue happens if someone equips and unequips a torch faster than 30 times a second, the timer that handles draining the fuel is created and then cancelled before the next scheduler tick happens and the function callback is never called.
From components/fueled.lua:240-247::
function Fueled:StartConsuming() self.consuming = true if self.task == nil then self.task = self.firstperiod ~= nil and self.inst:DoTaskInTime(0, OnDoFirstUpdate, self, self.currentfuel >= self.maxfuel and self.firstperiodfull or self.firstperiod) or self.inst:DoPeriodicTask(self.period, OnDoUpdate, nil, self, self.period) end end
The OnDoFirstUpdate doesn't get called if the client sends in the unequip (or equip another torch in cursor inventory for easier management) quicker than 1/30th of a second.
Old bug for reference:
Steps to Reproduce
Equip a torch, then hold another in the cursor inventory, and then run "TheNet:SendRPCToServer(RPC.SwapEquipWithActiveItem)" more than 30 times a second. The two torches will not drain in durability but provide light.
Equip a torch, then hold another in the cursor inventory, and then run "TheNet:SendRPCToServer(RPC.SwapEquipWithActiveItem)" more than 30 times a second. The two torches will not drain in durability but provide light.
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.
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 accountSign in
Already have an account? Sign in here.
Sign In Now