Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Controls & Respawn UI Disabled When Dead Body is Damaged #8772

Closed
Punchington opened this issue Jan 13, 2022 · 10 comments · Fixed by #8788
Closed

Controls & Respawn UI Disabled When Dead Body is Damaged #8772

Punchington opened this issue Jan 13, 2022 · 10 comments · Fixed by #8788
Labels
Milestone

Comments

@Punchington
Copy link

Punchington commented Jan 13, 2022

Mods:

  • Arma 3: 2.06 stable
  • CBA: 3.15.6 stable
  • ACE3: 3.14.1 stable

Description:
What I call "the overkill bug": when a player is killed and if their body takes further damage before they can respawn, their whole respawn UI will be closed, and all controls (with the exceptions noted below) are disabled. This can affect both the host and any clients / other players on the server. Server can be either a listen server hosted from the main menu of Arma, or a dedicated server.

The only controls that do not seem to be disabled are:
"/" for text chat
"," and "." to change channel
"y" to open the Zeus interface*

*note that, since the player is dead, the Zeus interface will immediately close; this does not fix the bug.

The only known solution is ALT+F4 and restart the game, which is not ideal when hosting a listen server.

Steps to reproduce:

  1. Open the Eden editor and create a MP scenario featuring at least one playable unit and some way to deal damage after force-respawn or death (i.e. another player's gun [a] or fall damage from ejecting from a helicopter [b]).
  2. Make sure to enable respawns on custom positions, selectable spawn position & inventory, but disable respawn counter.
  3. Set the respawn time to something reasonable (eg. 5 seconds) and place a respawn point for the side of the playable units.
  4. Host the scenario, either as a listen server or as a dedicated server.
  5. Select a playable unit in the role assignment screen.
  6. Start the scenario.

   7a. In the case of using another player to cause damage, force-respawn.
   8a. While dead and in the respawn menu, have the other player shoot at your corpse (ideally the torso or head).

   7b. In the case of using fall damage to cause damage, board the helicopter and get some altitude and momentum.
   8b. Once you're high enough and moving fast enough to be sure you will take a fatal amount of fall damage, eject from the aircraft.
   9b. Immediately force-respawn before you hit the ground (while still high enough to inflict fall damage).
   10b. Wait in the respawn menu until your body smacks the ground.
   
   Result: you will be "overkilled". Might not happen every single time, but very frequently - you're lucky if it doesn't happen.

Expected behavior:
Taking damage while dead should have no effect; you should remain in the respawn menu, all controls still unlocked, and be able to return to the main menu or respawn, oblivious to your body taking further damage.

Where did the issue occur?

  • Dedicated
  • Self-Hosted Multiplayer

Log Files:

Additional context:
I've been using TADST to launch dedicated servers.

While my addon options / ACE settings are not their default values, I know this bug isn't very old; months ago I took a long break from Arma, and in that time I believe there may have been an update for ACE. Upon returning to the game, with the same settings as before, this bug started occurring. It's gone on long enough and no one else seems to have reported it.

Upon request I can provide my addon settings, especially if no one else is experiencing this bug and it's somehow my combo of settings causing this. This bug has caused many sessions to come to a halt; I've made this GitHub account for this reason.

Videos:
https://youtu.be/cbRnzB44naw

@LinkIsGrim
Copy link
Contributor

LinkIsGrim commented Jan 13, 2022

Does this only happen with damage after a forced respawn?

Also, you have CBA and ACE version numbers mixed up.

@LinkIsGrim
Copy link
Contributor

Congrats, you found a big one.

@Punchington
Copy link
Author

No, it doesn't need you to force-respawn, that's just an easier way to cause it as it skips unconsciousness. For example, whenever one of my friends tries to "put me out" and accidentally shoots a couple rounds extra into me, they "overkill" me.

And sorry, I wasn't really sure where to find the versions, just used what I could find in the main menu.

@Punchington
Copy link
Author

Fixed the version mix-up.

I also tried resetting my addon options to their default values last night, and found that the bug still persisted, so I don't think it's my custom combo of ACE settings..

@LinkIsGrim
Copy link
Contributor

It's definitely in the project's end. A band-aid fix is easy enough, but I'm looking into the root of the issue to make sure nothing else like this pops up.

@LinkIsGrim
Copy link
Contributor

LinkIsGrim commented Jan 18, 2022

Can you post an export of just your ACE Medical settings? Want to confirm a theory. Even if it's defaults.

@Punchington
Copy link
Author

Punchington commented Jan 18, 2022

Including default values:

// ACE Medical
force ace_medical_ai_enabledFor = 2;
force ace_medical_AIDamageThreshold = 1;
force ace_medical_bleedingCoefficient = 0.6;
force ace_medical_blood_bloodLifetime = 600;
force ace_medical_blood_enabledFor = 2;
force ace_medical_blood_maxBloodObjects = 100;
force ace_medical_deathChance = 0.9;
force ace_medical_enableVehicleCrashes = true;
force ace_medical_fatalDamageSource = 0;
ace_medical_feedback_bloodVolumeEffectType = 2;
ace_medical_feedback_enableHUDIndicators = true;
ace_medical_feedback_painEffectType = 2;
force ace_medical_fractureChance = 0.7;
force ace_medical_fractures = 1;
ace_medical_gui_bloodLossColor_0 = [1,1,1,1];
ace_medical_gui_bloodLossColor_1 = [1,0.95,0.64,1];
ace_medical_gui_bloodLossColor_2 = [1,0.87,0.46,1];
ace_medical_gui_bloodLossColor_3 = [1,0.8,0.33,1];
ace_medical_gui_bloodLossColor_4 = [1,0.72,0.24,1];
ace_medical_gui_bloodLossColor_5 = [1,0.63,0.15,1];
ace_medical_gui_bloodLossColor_6 = [1,0.54,0.08,1];
ace_medical_gui_bloodLossColor_7 = [1,0.43,0.02,1];
ace_medical_gui_bloodLossColor_8 = [1,0.3,0,1];
ace_medical_gui_bloodLossColor_9 = [1,0,0,1];
ace_medical_gui_damageColor_0 = [1,1,1,1];
ace_medical_gui_damageColor_1 = [0.75,0.95,1,1];
ace_medical_gui_damageColor_2 = [0.62,0.86,1,1];
ace_medical_gui_damageColor_3 = [0.54,0.77,1,1];
ace_medical_gui_damageColor_4 = [0.48,0.67,1,1];
ace_medical_gui_damageColor_5 = [0.42,0.57,1,1];
ace_medical_gui_damageColor_6 = [0.37,0.47,1,1];
ace_medical_gui_damageColor_7 = [0.31,0.36,1,1];
ace_medical_gui_damageColor_8 = [0.22,0.23,1,1];
ace_medical_gui_damageColor_9 = [0,0,1,1];
ace_medical_gui_enableActions = 0;
ace_medical_gui_enableMedicalMenu = 1;
ace_medical_gui_enableSelfActions = false;
ace_medical_gui_interactionMenuShowTriage = 1;
force ace_medical_gui_maxDistance = 5;
ace_medical_gui_openAfterTreatment = true;
force ace_medical_ivFlowRate = 1.8;
force ace_medical_limping = 1;
force ace_medical_painCoefficient = 0.9;
force ace_medical_painUnconsciousChance = 0.08;
force ace_medical_playerDamageThreshold = 3;
force ace_medical_spontaneousWakeUpChance = 0.7;
force ace_medical_spontaneousWakeUpEpinephrineBoost = 30;
force ace_medical_statemachine_AIUnconsciousness = true;
force ace_medical_statemachine_cardiacArrestBleedoutEnabled = true;
force ace_medical_statemachine_cardiacArrestTime = 150;
force ace_medical_statemachine_fatalInjuriesAI = 0;
force ace_medical_statemachine_fatalInjuriesPlayer = 0;
force ace_medical_treatment_advancedBandages = 1;
force ace_medical_treatment_advancedDiagnose = 1;
force ace_medical_treatment_advancedMedication = true;
force ace_medical_treatment_allowBodyBagUnconscious = false;
force ace_medical_treatment_allowLitterCreation = true;
force ace_medical_treatment_allowSelfIV = 1;
force ace_medical_treatment_allowSelfPAK = 1;
force ace_medical_treatment_allowSelfStitch = 0;
force ace_medical_treatment_allowSharedEquipment = 0;
force ace_medical_treatment_clearTrauma = 1;
force ace_medical_treatment_consumePAK = 1;
force ace_medical_treatment_consumeSurgicalKit = 0;
force ace_medical_treatment_convertItems = 0;
force ace_medical_treatment_cprSuccessChanceMax = 0.8;
force ace_medical_treatment_cprSuccessChanceMin = 0.4;
force ace_medical_treatment_holsterRequired = 0;
force ace_medical_treatment_litterCleanupDelay = 600;
force ace_medical_treatment_locationEpinephrine = 0;
force ace_medical_treatment_locationIV = 0;
force ace_medical_treatment_locationPAK = 0;
force ace_medical_treatment_locationsBoostTraining = true;
force ace_medical_treatment_locationSurgicalKit = 2;
force ace_medical_treatment_maxLitterObjects = 100;
force ace_medical_treatment_medicEpinephrine = 0;
force ace_medical_treatment_medicIV = 0;
force ace_medical_treatment_medicPAK = 0;
force ace_medical_treatment_medicSurgicalKit = 2;
force ace_medical_treatment_timeCoefficientPAK = 0.15;
force ace_medical_treatment_treatmentTimeAutoinjector = 5;
force ace_medical_treatment_treatmentTimeBodyBag = 15;
force ace_medical_treatment_treatmentTimeCPR = 10;
force ace_medical_treatment_treatmentTimeIV = 10;
force ace_medical_treatment_treatmentTimeSplint = 6;
force ace_medical_treatment_treatmentTimeTourniquet = 6;
force ace_medical_treatment_woundReopenChance = 1;
force ace_medical_treatment_woundStitchTime = 5;

Just the edited values:

// ACE Medical
force ace_medical_bleedingCoefficient = 0.6;
force ace_medical_blood_bloodLifetime = 600;
force ace_medical_blood_maxBloodObjects = 100;
force ace_medical_deathChance = 0.9;
ace_medical_feedback_bloodVolumeEffectType = 2;
ace_medical_feedback_painEffectType = 2;
force ace_medical_fractureChance = 0.7;
ace_medical_gui_enableSelfActions = false;
force ace_medical_gui_maxDistance = 5;
force ace_medical_ivFlowRate = 1.8;
force ace_medical_painCoefficient = 0.9;
force ace_medical_painUnconsciousChance = 0.08;
force ace_medical_playerDamageThreshold = 3;
force ace_medical_spontaneousWakeUpChance = 0.7;
force ace_medical_spontaneousWakeUpEpinephrineBoost = 30;
force ace_medical_statemachine_cardiacArrestTime = 150;
force ace_medical_treatment_allowSelfPAK = 1;
force ace_medical_treatment_consumePAK = 1;
force ace_medical_treatment_cprSuccessChanceMax = 0.8;
force ace_medical_treatment_locationPAK = 0;
force ace_medical_treatment_locationsBoostTraining = true;
force ace_medical_treatment_maxLitterObjects = 100;
force ace_medical_treatment_medicIV = 0;
force ace_medical_treatment_medicPAK = 0;
force ace_medical_treatment_medicSurgicalKit = 2;
force ace_medical_treatment_timeCoefficientPAK = 0.15;
force ace_medical_treatment_treatmentTimeCPR = 10;
force ace_medical_treatment_treatmentTimeIV = 10;
force ace_medical_treatment_treatmentTimeSplint = 6;
force ace_medical_treatment_treatmentTimeTourniquet = 6;

@LinkIsGrim
Copy link
Contributor

LinkIsGrim commented Jan 18, 2022

Good news and bad news.

Good news: this bug only happens in regular gameplay when ace_medical_statemachine_fatalInjuriesPlayer is set to 0. Further damage after forced respawns when not unconscious causes it regardless.

Bad news: above means fixing it will take a bit.

@Punchington
Copy link
Author

Alright, I'll change that to 1 for the time being and will test it with a trigger-happy friend sometime soon to confirm if that works.

Do you want me to edit the post and add a "Workaround" section at the top for anyone else experiencing this?

@LinkIsGrim
Copy link
Contributor

No need, as it doesn't cover all the possible cases of the bug happening. I'll make some time on the weekend to address this.

LinkIsGrim added a commit to LinkIsGrim/ACE3 that referenced this issue Jan 24, 2022
PabstMirror added a commit that referenced this issue Mar 7, 2022
* fix #8772

* add WARNING for dead/null units

* fix macro

* improve warnings

* handle scripted death without warnings

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
@jonpas jonpas added this to the 3.14.2 milestone Mar 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants