by FDARI » Sat Dec 10, 2011 9:57 am
It seems that the existing code tries to enforce NOFREEZECONVERSATION in the menu-drawing routine. The algorith there takes into account -- ConversationPauseTic versus gametic -- multiplayer -- (level.flags2 & LEVEL2_CONV_SINGLE_UNFREEZE). Under specific circumstances (ConversationPauseTic < gametic && !multiplayer && !(level.flags2 & LEVEL2_CONV_SINGLE_UNFREEZE)) it would force the menu state to MENU_On, which causes pause to a single player game. However, it would do nothing in the opposite case.
If this has ever worked, MENU_OnNoPause might have been the default; if that was later changed, the above would no longer be right or required.
My fix was to add an action for the situations where the condition above is not true, and force MENU_OnNoPause there. The Drawer() only executes for the player in conversation, but changing menu-states like that, and especially to a state that has no impact on netplay, is probably harmless.
I don't think multiplayer does really need to be checked in the drawer; I think it must be handled fully well elsewhere without regard to menu state, and that MENU_OnNoPause is only relevant to single player games.
The fix works, I think it is safe, but there is probably room for improvement in menu state control for strife dialogues.
- Attachments
-
bugfix.nofreezeconversation.txt
- (582 Bytes) Downloaded 10 times