diwako_dui icon indicating copy to clipboard operation
diwako_dui copied to clipboard

Feature - Don't remove fallen comrades

Open BrettMayson opened this issue 4 years ago • 8 comments

The biggest grip I have with DUI is that you can tell instantly if someone in your group has died. It would be nice to come up with some solution to this, but I am not yet sure how.

One solution would be to remove the alive _x check. Then add an interaction on dead players to remove them from the radar. This way they remain on the radar until interacted with. A setting could be used to toggle this, and a setting could be used to decide if removing is global or local.

BrettMayson avatar Jan 04 '20 18:01 BrettMayson

Absolutely agree, but that would require changing of the group sync if death/spectator/respawn scripts remove the player from the group right? https://github.com/diwako/diwako_dui/blob/8565d6eb8ea0a62b01cf02a275785948e450a769/addons/radar/functions/fnc_syncGroups.sqf#L32

Perhaps in conjunction with an option to disable the group sync if it != units _group and just handle everything via the variable

PiZZAD0X avatar Jan 04 '20 18:01 PiZZAD0X

Just for clarification, how do you handle death and respawn in your missions? The way my unit handles death an respawn is "2s respawn timer, but then you are in Spectator on respawn, waiting for 'respawn' ". With that you get the behavior you are describing, so I wonder if you do respawn the same way.

Right now, DUI just uses what Arma provides in this regard. If the group does not contain the unit anymore, for any reason, then that unit is not shown anymore.

Changing the group sync will also not help in that regard. It does not matter if you use the servers sync or use client side sorting, the effect will be the same. The alive check in the Sync itself is only used to get groups players are in, after that it iterates over found groups. The second alive check in DUI is only used to update the cache for color, name, rank, etc of a unit.

I get why you want to hold dead people in the squad, so it is not easy to see who just died, yet it brings a bit of a challenge with it. How do you determine when to remove the dead unit. One is as mentioned an ace interaction, but what if that unit is in a river, or simply cannot be found or reached?

diwako avatar Jan 04 '20 21:01 diwako

We do death in a similar way. When you die you respawn instantly, but a script moves you to ace spectator and puts the camera at your corpse. The only way we do respawn is via a Zeus module.

BrettMayson avatar Jan 05 '20 23:01 BrettMayson

In this case, the corpse gets removed by the player respawning and then the player gets removed from group due to ace spectator (I assume that one is being used and not EGSpectator)

https://github.com/acemod/ACE3/blob/master/addons/spectator/functions/fnc_setSpectator.sqf#L110

It would be possible to readd the player to the group. So far in my tests players/corpses only get removed from hud if they respawned or confirmed as dead.

diwako avatar Jan 06 '20 00:01 diwako

The corpse does not get removed for us

BrettMayson avatar Jan 06 '20 03:01 BrettMayson

One way to logically implement this is if the unit remains !alive and no one in the groups is less than 0.5m away then they remain on the radar even if no longer in the group. If anyone gets close enough then they are removed from the radar. If they come alive again for whatever reason then you can modify their placement or readd them to the radar. It is dead and stays dead that needs special handling.

Ideally what we would want is if ACE is available then we wait until a unit has checked the blood pressure and determined the unit is dead. That perhaps is not possible depending on what events ACE can expose but is the best possible way to look at it.

BrightCandle avatar Jan 16 '20 00:01 BrightCandle

The main issue is, DUI checks the group members by doing units _group. Arma just removes a unit if they died and respawned. So the issue begins that the unit you want to keep in is already gone without any reference to it anymore. You need to cache all units in a group then, so you can compare it after each caching loop.

Me or someone else needs to work first on a concept to retain the dead units inside the "group" before we can start thinking how to remove them. It also highly depends on how you handle death and respawn in missions. So all of this needs to be configurable so it can fit to every units playstyle.

diwako avatar Jan 16 '20 10:01 diwako

Honestly I feel like ACE's choice to remove people from the group if they are being forced into the spectator while being alive or any other custom respawn's system choice to remove people from the group is an issue on their end and should be requested to be optional on their end. DUI tracks the members of your group and managing who and what is in your group doesn't really feel like it's within the scope of what it should be responsible for (at least in my opinion).

G3rrus avatar May 10 '20 14:05 G3rrus