Closed 3aTmE closed 7 months ago
From time to time I have a similar issue. I can collect the Killerduck but it is treated like a holdable. I am not getting the killderuck carrier status and I am not able to collect points.
just a shot in the blue: this sounds like a timing issue - maybe we are reading the state from different playerstates here (snapshots) and are basing our decisions on e.g. old data in one function and the new - not yet updated data - in some other function.
I've verified my shot into the blue - but I'm 99% sure that this isn't the cause. We are always using the correct playerstate_t
.
The funny thing is, that now I had the opposite case. I dropped the killerduck but still kept the killerduck status, golden aura, collecting points, holding the killerduck in my hands, but I dropped it in front of me. I was able to recollect it.
I've seen that the eflags
value is transmitted as 16 bits only - but the killerduck flags are higher than 16 bits (and a few others - reward related, too)
I'm talking about the playerStateFields
value for eflags
- which is 16 for the bits - it should maybe be 32
#define EF_TEAMVOTED 0x00020000 // already cast a team vote
#define EF_FLOATER 0x00040000 // player uses floater
#define EF_AWARD_SPRAYGOD 0x00080000
#define EF_AWARD_SPRAYKILLER 0x00100000
#define EF_NOLIFESLEFT 0x00200000
#define EF_KILLERDUCK 0x00400000
EF_TEAMVOTED
: only used in game code - not a problemI wonder how the others ever worked - or I still might miss a thing here.
MSG_WriteBits()
is called here with bits being 16 - resulting in a memcpy for 2 bytes.
The EF_FLOATER
flag might come by the use event and the execution of Pmove()
in cgame. But it could also explain some bugs we had with the floater and out of sync sounds - the truth should come from the game code - which might not be the case here. But I'm still on the track to validate this theory.
entityStateFields
should get 23 bits for eFlags
because EF_KILLERDUCK
is 0x00400000
which is 01000000'00000000'00000000
I tried to replicate this multiple times but was unable to.
The issue seems to be fixed now! 👍
The Issue :
When collecting the Killerduck while carrying a different Holdable in CATCH breaks the Item. The Player is unable to score, keeps their weapons, can still collect weapons and ammunition but is unable to collect different holdables while being this state. Bots wont also attack the player.
The Only way to get rid of the Killlerduck is either by gettting fragged or killing themselves via the
/kill
command.A note: This issue occurred so far only once for me. I am not able to reproduce it.
How to reproduce it (if you are lucky) :
/kill
console commandTested on :
WOP-Version: The most recent code base from 18.11.2023 at the time of writing this. OS: Manjaro Linux / Kernel : 6.5.11-1-MANJARO CPU: Ryzen 5 3600x GPU: AMD Radeon RX 580 RAM: 16gb DDR4 Window manager: X11