Petz Pony death issues #5388

Open
opened 2023-10-16 12:07:20 +00:00 by daydream · 11 comments
Member

15 HP doesn't offer much of a ride (less than 5 min) before the pony maybe runs over a field filled with flowers and suddenly goes down a couple nodes and BAM! DEAD! Sometimes dreamcatcher, saddle and horseshoes are returned and sometimes you don't get the dreamcatcher back even - but meanwhile you're out a 10/10/10 horse for really no good reason.

Also, if the horse is slowly losing HP there's no way to see that while riding or do anything about it either because if you right-click with wheat, you'll dismount, not feed it. I don't think ponies should lose hunger or HP while being ridden because there's no way for the rider to know about it or do anything about it - and all this happens in just a few minutes, so the whole function of riding is USELESS in it's current state.

And this isn't even bringing up the whole GIANT player model - that you can sometimes correct by dismount and re-mount but I've seen a player mount and be fine and then suddenly a minute later their player model blows up into the giant. This would be very bad during any sort of mounted offence in battle as the giant player model would obscure everyone else's vision to the action and cause complete chaos.

I suggest Pony HP be configurable by server admins, that way whatever a particular server is trying to do with the pony can be customized how they need/want it. Also give admins the ability to turn off damage while under rider so that players can dismount and THEN see the pony could use some wheat to heal it up - so maybe, okay, they lose HP but it doesn't go to zero while under mount at all.

Basically give server admins some controls so these ponies can be used in more interesting and fun ways that just standing around looking nice.

15 HP doesn't offer much of a ride (less than 5 min) before the pony maybe runs over a field filled with flowers and suddenly goes down a couple nodes and BAM! DEAD! Sometimes dreamcatcher, saddle and horseshoes are returned and sometimes you don't get the dreamcatcher back even - but meanwhile you're out a 10/10/10 horse for really no good reason. Also, if the horse is slowly losing HP there's no way to see that while riding or do anything about it either because if you right-click with wheat, you'll dismount, not feed it. I don't think ponies should lose hunger or HP while being ridden because there's no way for the rider to know about it or do anything about it - and all this happens in just a few minutes, so the whole function of riding is USELESS in it's current state. And this isn't even bringing up the whole GIANT player model - that you can sometimes correct by dismount and re-mount but I've seen a player mount and be fine and then suddenly a minute later their player model blows up into the giant. This would be very bad during any sort of mounted offence in battle as the giant player model would obscure everyone else's vision to the action and cause complete chaos. I suggest Pony HP be configurable by server admins, that way whatever a particular server is trying to do with the pony can be customized how they need/want it. Also give admins the ability to turn off damage while under rider so that players can dismount and THEN see the pony could use some wheat to heal it up - so maybe, okay, they lose HP but it doesn't go to zero while under mount at all. Basically give server admins some controls so these ponies can be used in more interesting and fun ways that just standing around looking nice.
daydream added the
ugh/petz
label 2023-10-16 12:07:20 +00:00
AliasAlreadyTaken added the
1. kind/enhancement
3. source/mod upstream
labels 2023-10-16 12:28:53 +00:00
Member

We also have very few roads that are suitable for riding. Haven north road definitely isn't.

We also have very few roads that are suitable for riding. Haven north road definitely isn't.

We also have very few roads that are suitable for riding. Haven north road definitely isn't.

Haven South Road between Rheinprovinz and Puerto del Sol should be suitable for riding (... or racing).

> We also have very few roads that are suitable for riding. Haven north road definitely isn't. Haven South Road between Rheinprovinz and Puerto del Sol should be suitable for riding (... or racing).
Member

Soko and Chache, I guess this issue is not about roads.

Soko and Chache, I guess this issue is not about roads.

I tested riding a 10/10/10 a pony and killed it in that short test same way dd describes.
But that pony was not very fast. So I think Pony base speed also shoud be adjustable by admin and then be modified by pony stats.

I tested riding a 10/10/10 a pony and killed it in that short test same way dd describes. But that pony was not very fast. So I think Pony base speed also shoud be adjustable by admin and then be modified by pony stats.
Member

as far as i know, petz doesn't implement "fall damage". petz has a "terminal velocity" - if your y-axis velocity exceeds a certain value, the petz dies, no matter how much HP it has. lots of small falls shouldn't cause problems. i'll take a look though.

as far as i know, petz doesn't implement "fall damage". petz has a "terminal velocity" - if your y-axis velocity exceeds a certain value, the petz dies, no matter how much HP it has. lots of small falls shouldn't cause problems. i'll take a look though.
Member

as far as i know, petz doesn't implement "fall damage". petz has a "terminal velocity" - if your y-axis velocity exceeds a certain value, the petz dies, no matter how much HP it has. lots of small falls shouldn't cause problems. i'll take a look though.

well, that was wrong.

the relevant code:
c8eac176bc/kitz/engine.lua (L762-L766)

kitz.gravity = -9.8
...
kitz.terminal_velocity = sqrt(2*-kitz.gravity*20) -- 20 meter fall = dead -- 19.8
kitz.safe_velocity = sqrt(2*-kitz.gravity*5) -- 5 m safe fall  -- 9.9
...
	local vel = self.object:get_velocity()
	local velocity_delta = abs(self.lastvelocity.y - vel.y)
	if velocity_delta > kitz.safe_velocity then
		kitz.hurt(self, floor(self.max_hp * min(1, velocity_delta/kitz.terminal_velocity)), "terminal velocity")
	end

for one, it's not all-or-nothing. for another, it's not a terminal velocity, it's a terminal acceleration, sort-of. it noticably does not take lag (length of a server step) into account. for another, the way this is written, if the petz falls just more than 5 nodes, it'll lose 1/2 of it's max HP, which is obviously wrong. 2 falls, and your pony is dead.

while the petz is falling, the velocity_delta value should remain constant - as long as the length of a server step is constant. if there's lag, the petz keeps falling, which will create a larger velocity delta, possibly causing it damage or death.

usually, though, large values of velocity_delta will occur when the petz hits the ground. so far as i can tell, the logic there is sound enough.

> as far as i know, petz doesn't implement "fall damage". petz has a "terminal velocity" - if your y-axis velocity exceeds a certain value, the petz dies, no matter how much HP it has. lots of small falls shouldn't cause problems. i'll take a look though. well, that was wrong. the relevant code: https://github.com/runsy/petz/blob/c8eac176bc672a10bcac0b9d830203bc1943bff5/kitz/engine.lua#L762-L766 ```lua kitz.gravity = -9.8 ... kitz.terminal_velocity = sqrt(2*-kitz.gravity*20) -- 20 meter fall = dead -- 19.8 kitz.safe_velocity = sqrt(2*-kitz.gravity*5) -- 5 m safe fall -- 9.9 ... local vel = self.object:get_velocity() local velocity_delta = abs(self.lastvelocity.y - vel.y) if velocity_delta > kitz.safe_velocity then kitz.hurt(self, floor(self.max_hp * min(1, velocity_delta/kitz.terminal_velocity)), "terminal velocity") end ``` for one, it's not all-or-nothing. for another, it's not a terminal velocity, it's a *terminal acceleration*, sort-of. it noticably does *not* take lag (length of a server step) into account. for another, the way this is written, if the petz falls just more than 5 nodes, it'll lose 1/2 of it's max HP, which is obviously wrong. 2 falls, and your pony is dead. while the petz is falling, the `velocity_delta` value should remain constant - *as long as the length of a server step is constant*. if there's lag, the petz keeps falling, which will create a larger velocity delta, possibly causing it damage or death. usually, though, large values of velocity_delta will occur when the petz hits the ground. so far as i can tell, the logic there is sound enough.
Member

there's no way for the rider to know about it

it's possible to see the a petz HP in its nametag if you've got the nametag showing. however, i've discovered that the nametag doesn't update after it takes fall damage, so that's not very useful currently. also you have to look down to see the HP while riding a pony. probably some sort of HUD would be more helpful.

because if you right-click with wheat, you'll dismount, not feed it

i was able to feed a pony i was riding it using sneak-place

GIANT player model

that issue is #276. runs is aware, but fixing it isn't trivial because it involves weird interactions with 3d_armor.

> there's no way for the rider to know about it it's possible to see the a petz HP in its nametag if you've got the nametag showing. however, i've discovered that the nametag doesn't update after it takes fall damage, so that's not very useful currently. also you have to look down to see the HP while riding a pony. probably some sort of HUD would be more helpful. > because if you right-click with wheat, you'll dismount, not feed it i was able to feed a pony i was riding it using sneak-place > GIANT player model that issue is #276. runs is aware, but fixing it isn't trivial because it involves weird interactions with 3d_armor.
flux added the
4. step/blocked
label 2023-11-07 23:54:02 +00:00
Member

created a PR to fix the fall damage: https://github.com/runsy/petz/pull/197, however, there's still a lot of other things to address in this issue.

created a PR to fix the fall damage: https://github.com/runsy/petz/pull/197, however, there's still a lot of other things to address in this issue.
flux added the
1. kind/balancing
label 2023-11-08 00:04:13 +00:00
Member

created a PR to fix the fall damage: https://github.com/runsy/petz/pull/197, however, there's still a lot of other things to address in this issue.

this got merged

> created a PR to fix the fall damage: https://github.com/runsy/petz/pull/197, however, there's still a lot of other things to address in this issue. this got merged
AliasAlreadyTaken added this to the 1.1.122 milestone 2023-11-17 19:36:07 +00:00

QA

We now survive falls of even 12 nodes with reproducable damage.

I'd still prefer if we could configure HP of all petz and other, similar values

Still, I'll remove this issue from the mielstone, since it is not fully fixed. Maybe we should pull this issue apart into smaller ones?

QA We now survive falls of even 12 nodes with reproducable damage. I'd still prefer if we could configure HP of all petz and other, similar values Still, I'll remove this issue from the mielstone, since it is not fully fixed. Maybe we should pull this issue apart into smaller ones?
AliasAlreadyTaken removed this from the 1.1.122 milestone 2023-11-30 17:24:22 +00:00
Member

I'd still prefer if we could configure HP of all petz and other, similar values

i created a separate issue for that: #5586

> I'd still prefer if we could configure HP of all petz and other, similar values i created a separate issue for that: #5586
Sign in to join this conversation.
No Milestone
No project
No Assignees
7 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: your-land/bugtracker#5388
No description provided.