Jump to content

Hired Ballphins care about their homes too much


piratekingflcl
  • Version: PC/MAC/Linux Pending

I've been surfing with Ballphins a lot recently, and I think maybe they're too attached to their homes.

Hiring Ballphins during the day causes them to function very similarly to Pigs. They mine coral (though they don't have any sound for their mining), wander near the player, eat food, and attack enemies when directed to. Homeless and Palaced(?) Ballphins both seem to behave the same way here.

Dusk causes hired Ballphins to stop mining coral, and wander much closer to the player. Night does not cause hired Ballphins to sleep or return to their Palaces if they have one. Lightning causes them to panic like Pigs do without light (which is super adorable).

However, moving too far away from their home causes their brains to seemingly abandon most of these functions.

When this happens, they appear to lose all normal behavior: they no longer work on Coral, no matter the time or weather; they won't play idle backflip animations; they won't stand still, instead choosing to constantly swim back and forth while playing their 'eee-ing' noises every time they do; they seem to be fixated on running back towards the area around their house, but leash to the player at max distance before coming back and starting the loop again.

If you let them return to their "home" location, they seem to resume normal function - but they will lose it once more if you wander too far away from their "home" again. This means that they can even be in the middle of their mining function before leashing to their home without reaching the Coral.

I'm also not certain about this, but I feel like their loyalty time is extended beyond the normal limits when this occurs. My (anecdotal) evidence for this is that I once had two Ballphins, who I had hired from my palaces near my base, staying near me at night, awake, but upon saving and reloading the game they immediately returned to their homes.

Combat functions do not appear to be affected by this bug, though, as they can still be directed to attack targets, and will retaliate to protect the player from enemies. Finding and eating food appears unaffected as well, and Ballphins will interrupt themselves to eat food before returning to their bugged behavior. Panic during lightning also seems to function, although it's a bit harder to tell (they behave kinda similarly, but don't seem leash to the player while panicking).

A different bug that I noticed while testing this is that creating Ballphin Palaces at Night causes their occupant to swim far away the next morning, which is sort of the opposite of this problem, but maybe related to their "homeseeking" behavior.


Steps to Reproduce
1. Hire a Ballphin during the Day. 2. Move away from their home (or teleport) and then observe their behavior. 3. Move closer to the area where you first hired them and observe their behavior again.



User Feedback


Could the "ballphin_spawner.lua" prefab be causing this behavior? It says something on line 39 like 'if spawned at least one, herd creates ballphinpod'.

This could also explain why I've been running into 5 or 6 homeless Ballphins around different Palaces when I visit them in my games. edit: Actually I figured out this particular case; this is caused by their lightseeking response when they panic during lightning. If I happen to pass by during Dusk or Night during a storm, they huddle around the Ballphin Palaces that have the lights on. And despite playing their 'panic' EEEEEK!-lines, they won't actually panic if near a light source, and will even do idle backflips. Maybe even resets their behavior after bugging out? I just saw a few go home mid-Hurricane after "panicking-but-not-really" near a light source, presumably because they could tell the lightning was ending.

I'm really fascinated by what seems to make them tick, I hope any of this helps.

Edited by piratekingflcl
i'm dumb

Share this comment


Link to comment
Share on other sites

The bugged loyalty time  thing  might be a separate issue entirely. A Wildbore I had hired on day 1 or 2 teleported with me multiple times, over 20 days later.

First on to the ocean after using an Isoscoles Triangle:

20180710021818_1.thumb.jpg.9fb183420fb4ee8e09599a0021af0095.jpg

Then into the Volcano upon my first visit, seven days after that:

20180710171521_1.thumb.jpg.a5d2894cb1c84d72651d17daa561136c.jpg

He was also able to chop Charcoal Trees and produce two Ash from every tree by chopping it twice, despite it dying on the first hit:

20180710172819_1.thumb.jpg.f4cbbf0cec6432d1d50a90e182f938a0.jpg20180710172820_1.thumb.jpg.9cd58f76d6ce3570a23bb02e1d26c36a.jpg

 

Ultimately he died to Dragoon punches, so I can't say if he would have teleported back outside with me. It still seemed pretty odd though.

Share this comment


Link to comment
Share on other sites

Sorry to continually post in my own thread, but I think I may have actually found something that affects the original problem I was having with the Ballphins.

From line 235 in ballphinbrain.lua:

	local root = PriorityNode(
	{
        WhileNode(function() return not self.inst.entity:IsVisible() end, "Hiding", StandStill(self.inst)),
        WhileNode(function() return not self.inst:HasTag("ballphinfriend") end, "Not a ballphinfriend", ChaseAndAttack(self.inst, MAX_CHASE_TIME, MAX_CHASE_DIST)),
		WhileNode(function() return self.inst:HasTag("ballphinfriend") end, "a ballphinfriend", ChaseAndAttack(self.inst, 100)),
        ChattyNode(self.inst, STRINGS.BALLPHIN_TALK_FIND_MEAT, DoAction(self.inst, FindFoodAction )),
		afraid,
		night,
        ChattyNode(self.inst, STRINGS.BALLPHIN_TALK_FOLLOWWILSON, Follow(self.inst, GetLeader, MIN_FOLLOW_DIST, TARGET_FOLLOW_DIST, MAX_FOLLOW_DIST)),
		Leash(self.inst, function() return self.inst.components.knownlocations:GetLocation("herd") end, 30, 20),
        day,
        Follow(self.inst, function() return GetFollowTargetFn(self.inst) end, MIN_FOLLOW_DIST, TARGET_FOLLOW_DIST, MAX_FOLLOW_DIST),
		FaceEntity(self.inst, GetFaceTargetFn, KeepFaceTargetFn),
		Wander(self.inst, function() return self.inst.components.knownlocations:GetLocation("herd") end, GetWanderDistFn)
	}, .25)
	self.bt = BT(self.inst, root)
end

On Line 244, the Leash to herd function, I tried to comment just that line out and run my test - the Ballphins seemed to function much more normally afterwards. Then I tried restoring it to the original version, and they again experienced their buggy leashing to and fro.

Share this comment


Link to comment
Share on other sites


×
  • Create New...