SIT_FLAGS_NO_DAMAGE still attempts to process LLCS damage on sitting avatars
tracked
Tactical UwU
Regions attempt to process LLCS damage against objects with this flag enabled, leading to unexpected interactions.
Log In
Maestro Linden
tracked
Maestro Linden
Thanks for linking to the scripts. I found that 'LBHD-Component, v1.5.lsl' was not usable in practice, as running the script in a fresh prim will cause the object to immediately de-rez. I was surprised that despite some mention of damage-handling in the script, it is
not
in fact damageable via linden combat, it has no on_damage() or final_damage() event. Is this your intended setup, or is some other script in the seat/vehicle enabling damage on it?I ended up making my own non-damageable seat test script, which I have uploaded here: https://pastebin.com/M4iz6L6S . I also have a 'Combat Log Relay' object in the parcel, which listens to COMBAT_CHANNEL chat and shouts the output on channel 0. Results are in the child comment, since I'm hitting a character limit in Canny.
Maestro Linden
Here's the output when rezzing bullet when SIT_FLAGS_NO_DAMAGE is
not
set. The bullet hits the seat and immediately derezzes due to the damage event. All 10 damage from the bullet goes to the avatar. seat: Sit flags set to 1. My key is 079f7140-122e-4224-01ac-bacc75569678. Touch to rez a bullet.
seat: Rezzing 'damage bullet'
seat: Rezzed 676983f2-108c-c666-5b22-4c77aabfebd1
seat: collision_start# 0: hit 'damage bullet' 676983f2-108c-c666-5b22-4c77aabfebd1
of type 10
owned by e1a51880-d7b5-4c00-800d-91664f5b84c0
at our link #1
with pos and vel <67.37038, 94.59560, 26.32529> <0.00000, 0.00000, -5.44405>
and rotation <0.00000, 0.00000, 0.00000, 1.00000>
seat: collision# 0: hit 'damage bullet' 676983f2-108c-c666-5b22-4c77aabfebd1
of type 10
owned by e1a51880-d7b5-4c00-800d-91664f5b84c0
at our link #1
with pos and vel <67.37038, 94.59560, 26.32529> <0.00000, 0.00000, -5.44405>
and rotation <0.00000, 0.00000, 0.00000, 1.00000>
seat: collision_end# 0: hit 'damage bullet' 676983f2-108c-c666-5b22-4c77aabfebd1
of type 10
owned by e1a51880-d7b5-4c00-800d-91664f5b84c0
at our link #1
with pos and vel <67.37038, 94.59560, 26.32529> <0.00000, 0.00000, -5.44405>
and rotation <0.00000, 0.00000, 0.00000, 1.00000>
Combat Log Relay shouts: [{"damage":10,"event":"DAMAGE","initial":10,"owner":"e1a51880-d7b5-4c00-800d-91664f5b84c0","rezzer":"079f7140-122e-4224-01ac-bacc75569678","source":"676983f2-108c-c666-5b22-4c77aabfebd1","target":"e1a51880-d7b5-4c00-800d-91664f5b84c0","type":0},{"damage":10,"event":"DAMAGE","initial":10,"owner":"e1a51880-d7b5-4c00-800d-91664f5b84c0","rezzer":"079f7140-122e-4224-01ac-bacc75569678","source":"676983f2-108c-c666-5b22-4c77aabfebd1","target":"079f7140-122e-4224-01ac-bacc75569678","type":0}]
The 2 events in the combat log array indicate that the seat got hit with the 10-damage bullet, and then that the agent got 10 damage. Because the bullet is dealing 10 damage on collision, it de-rezzes before the bullet's script has time to trigger the collision_start() event - just as it does when hitting an avatar directly.
Maestro Linden
Trying again with SIT_FLAGS_NO_DAMAGE enabled, the output looks like this:
seat: Sit flags set to 33. My key is 079f7140-122e-4224-01ac-bacc75569678. Touch to rez a bullet.
seat: Rezzing 'damage bullet'
seat: Rezzed c80a2542-9df0-5c79-b90f-14f889ce4778
seat: collision_start# 0: hit 'damage bullet' c80a2542-9df0-5c79-b90f-14f889ce4778
of type 10
owned by e1a51880-d7b5-4c00-800d-91664f5b84c0
at our link #1
with pos and vel <67.37038, 94.59560, 26.32529> <0.00000, 0.00000, -5.44405>
and rotation <0.00000, 0.00000, 0.00000, 1.00000>
seat: collision# 0: hit 'damage bullet' c80a2542-9df0-5c79-b90f-14f889ce4778
of type 10
owned by e1a51880-d7b5-4c00-800d-91664f5b84c0
at our link #1
with pos and vel <67.37038, 94.59560, 26.32529> <0.00000, 0.00000, -5.44405>
and rotation <0.00000, 0.00000, 0.00000, 1.00000>
seat: collision_end# 0: hit 'damage bullet' c80a2542-9df0-5c79-b90f-14f889ce4778
of type 10
owned by e1a51880-d7b5-4c00-800d-91664f5b84c0
at our link #1
with pos and vel <67.37038, 94.59560, 26.32529> <0.00000, 0.00000, -5.44405>
and rotation <0.00000, 0.00000, 0.00000, 1.00000>
Combat Log Relay shouts: [{"damage":10,"event":"DAMAGE","initial":10,"owner":"e1a51880-d7b5-4c00-800d-91664f5b84c0","rezzer":"079f7140-122e-4224-01ac-bacc75569678","source":"c80a2542-9df0-5c79-b90f-14f889ce4778","target":"079f7140-122e-4224-01ac-bacc75569678","type":0}]
So, there's a damage event indicating that the bullet dealt 10 damage to the seat. This is despite the seat being non-damageable and the passenger being invulnerable due to SIT_FLAGS_NO_DAMAGE. As you say, the bullet derezzes due to the damage event before its script can trigger any collision events. My initial impression is that there should be no damage event, and that the bullet should behave the same as when hitting a regular non-damageable object.
Tactical UwU
Maestro Linden My apologies. The community I work with has long used a listen-based format for handling object damage. However, your results are consistent with what I have tested. Our impression was that SIT_FLAG_NO_DAMAGE disables LLCS handling unless there is a damage or final_damage event present in the object. However, that is not the case which caused issues with specific projectiles that used both LLCS and the listen-based damage format.
Prior to this, vehicles had 2 components: A seated, invincible component; and a physical, moving component that handled all incoming damage. With Combat 2.0's introduction allowing us to make it so seated objects do not transfer damage to avatars, we had hoped to simplify them by removing the first component. Doing so has lead to this issue rendering such vehicles invincible to the affected projectiles.
While we have come up with a workaround, this does break a lot of equipment made prior to Combat 2.0's rollout so we were wanting to confirm whether or not this was a bug or something that could be fixed before proceeding with how the community wanted to go about handling it.
Maestro Linden
Tactical UwU: Discussing this bug with the server team, there's consensus that this is a bug as described. We agree that there should be no damage event (triggering the combat log message and causing the bullet to derez) when hitting an invulnerable object if all seated avatars have the SIT_FLAG_NO_DAMAGE flag enabled. I'm importing it.
Maestro Linden
needs info
Ellie Linden
Hey Tactical UWU,
With the SIT_FLAG_NO_DAMAGE, the flag's purpose is only to not pass damage to the avatar sitting on the object. If any agent is sitting on the object or "OBJ1" in this repro step and is hit by the "OBJ2" with llSetDamage and/or llDamage with a collision event, the combat log generated will show that the damage event is taking place as obj1 and not the agent sitting being the target hit by OBJ2, and the avatar remains not taking damage as expected.
For example in my repro the sit object (obj1)'s uuid is c5a60b51-5865-0975-f08a-21f28c6c3727
When I shot with OBJ2 at obj1 and the agent sitting on obj1 it produced the combat relay log showing the target processing the collision/damage event was obj1 getting hit with obj2, and the obj2 damage source collision event finishes and dies:
shouts:
[{"damage":15,"event":"DAMAGE","initial":15,"owner":"4ed761e1-5ddf-4cac-b22c-33ff629f7175","rezzer":"dc2b0a67-3b80-3d5b-abd9-ed7ca92d5d1f","source":"fa2146b0-2667-61e5-9ee6-e79f8a09acdf","target":"c5a60b51-5865-0975-f08a-21f28c6c3727","type":0}]
Could you provide more information on how it is being determined that the collision event for both OBJ1 and OBJ2 are not being relayed and processed on your side to make sure I am understanding the situation fully? Thank you!
Tactical UwU
Ellie Linden
I used a health script in OBJ1 and a corresponding damaging script in OBJ2.
Video: https://youtu.be/pTdiv1g3yuE
As shown in the video, while unseated, the scripts function as intended. Once I sit on OBJ1, OBJ2 no longer generates any collision event with OBJ1. OBJ1 does register a collision event, but takes no damage since no API message is received.
Maestro Linden
under review