SubmergedAmongUs/Submerged

If Oxygen sabo kill and Meeting starts occur at the same time, they are wiped out

yukieiji opened this issue · 6 comments

Describe the bug
If Oxygen sabo kill and Meeting starts occur at the same time, they are wiped out.

To Reproduce
Steps to reproduce the behavior:

  1. Starts to 'Oxygen sabo'
  2. Take 'Oxygen mask'
  3. Stats meeting
  4. wiped out

Expected behavior
It resets correctly at the start of the meeting and no one dies.

Screenshots

Version (please complete the following information):

  • Among Us: [e.g. 2022.3.29s] 2023.7.12s
  • Submerged: [e.g. 2022.4.9s] 2023.7.24

Log file
Please attach the log file located in BepInEx/LogOutput.log
If you have restarted your game since you last encountered the issue, please try to reproduce the issue again and then upload the log.
ExtremeRolesDumpedLog 2023-07-29T22-52-51.log

Additional context
I think that this issues occurs when the following processes are performed.

  1. 'doKillCheck' is set to 'true'
  2. reset process of meeting start
  3. processing of the order of kill processing

So, if setting 'doKillCheck' to false in the meeting reset process, this problem will be cured.

I cannot reproduce this issue - When a meeting is called the sabotage is ended correctly

By calling a meeting, ShipStatus.RepairGameOverSystems is invoked which calls SubmarineOxygenSystem.RepairDamage with an amount of 16, causing it to end correctly by setting the countdown to 10000.

This might be a compatibility issue between Submerged and the other mods you have installed

Sure, there is another mod installed, but I haven't applied any patches to this part of the system...

This is the streaming when this bug occurred.
https://www.youtube.com/watch?v=4X7iO7ksh5Y&t=8280

Just after the meeting occurs, the game is over and the result screen is shown.
Result screen shows total wipeout due to Oxygen sabo(Even though some players had acquired masks).

By calling a meeting, ShipStatus.RepairGameOverSystems is invoked which calls SubmarineOxygenSystem.RepairDamage with an amount of 16, causing it to end correctly by setting the countdown to 100000.

I think that if a meeting occurs while doKillCheck is true, the meeting will occur without resetting it and the state where the mask was acquired will also disappear, so it will be wiped out.

Damn that was a nice issue to spot. I'm pretty sure I've fixed it. Thanks for reporting it, the fix will be included in the next update.