function Follower:SetLeader(new_leader) local prev_leader = self.leader local changed_leader = prev_leader ~= new_leader if prev_leader and changed_leader then local leader = self.leader.components.leader if leader then --- I THINK HERE'S THE REASON --- -- notice RemoveFollower will call follower:SetLeader, so it's a recursion -- and the leader has not change yet so it will call OnChangedLeader for twice leader:RemoveFollower(self.inst) end self:StopLeashing() self.inst:RemoveEventCallback("onremove", self.OnLeaderRemoved, prev_leader) self:CancelLoyaltyTask() self.leader = nil end if new_leader and self.leader ~= new_leader then self:ClearCachedPlayerLeader() self.leader = new_leader local leader = new_leader.components.leader if leader then leader:AddFollower(self.inst) end self.inst:ListenForEvent("onremove", self.OnLeaderRemoved, new_leader) if new_leader:HasTag("player") or new_leader.components.inventoryitem ~= nil then --Special case for pets leashed to players or inventory items self:StartLeashing() end end if changed_leader and self.OnChangedLeader ~= nil then self.OnChangedLeader(self.inst, new_leader, prev_leader) end end function Leader:RemoveFollower(follower, invalid) if follower ~= nil and self.followers[follower] then self.followers[follower] = nil self.numfollowers = self.numfollowers - 1 self.inst:RemoveEventCallback("death", self._onfollowerdied, follower) self.inst:RemoveEventCallback("onremove", self._onfollowerremoved, follower) if self.onremovefollower ~= nil then self.onremovefollower(self.inst, follower) end if not invalid then follower:PushEvent("stopfollowing", { leader = self.inst }) follower.components.follower:SetLeader(nil) end end end
Steps to Reproduce
Follow the video
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