View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0006658 | The Dark Mod | Coding | public | 18.01.2026 10:09 | 07.03.2026 13:58 |
| Reporter | STiFU | Assigned To | STiFU | ||
| Priority | normal | Severity | normal | Reproducibility | N/A |
| Status | suspended | Resolution | open | ||
| Product Version | TDM 2.13 | ||||
| Target Version | TDM 2.15 | ||||
| Summary | 0006658: Refactor frob handling to better support different frob control styles | ||||
| Description | The PerformFrob*() methods accumulated some technical debt over time. A refactor is long overdue, especially considering there was a lot of debate on how frob actions should be controlled and the current implementation does not easily allow switch different control styles. | ||||
| Tags | No tags attached. | ||||
|
I have refactored the frob handling code in my /branches/STiFU_FrobRefactor. The main changes are: - Short or long press frob is determined first and independently of entity type - Each frob action is handled in its own function to make state a bit more clear. - The input triggers and additional conditions needed for a certain action to occur are checked in a single function, allowing for easy switching of controls styles. - An inheritence based code path has been removed because that was only used by one entity type for an experimental feature. There is now a new cvar for setting the control style, called tdm_frob_control_style. The original TDM control style has been extended with long frob functionality that can optionally be disabled. There is also a new control style TDM_inverted, which I had proposed back in 2.12. - 0 -- TDM-style - short frob = grabber, - long frob = Directly use world item (shortcut for grabber and then "use", long frob can optionally be disabled by setting tdm_holdfrob_delay = 0 ) - 1 -- Thief-style (Daft Mugis 2.12) - Like TDM-style, with the exception that the behaviour for shoulderable bodies is flipped - 2 -- TDM_inverted-style - short frob = Directly use world item - long frob = grabber (Depending on cv_holdfrob_drag_entity_behavior the grabber is released upon keyup or next frob keydown) |
|
| Implemented in /branches/STiFU_FrobRefactor, Rev. 11119 | |
|
We decided that the new frob controls are not good enough yet to be release as 2.14: https://forums.thedarkmod.com/index.php?/topic/23082-devs-214-is-branched-out/page/3/#findComment-506788 For this reason, I reverted them from trunk in svn rev 11204 and 17499 (and from 2.14 branch too of course). More specifically, I reverted the following commits: r11194 Fixed crash on frobbing empty air. --------------------- r11189 0006658::FrobRefactor: Do not shoulder live conscious frobable AI Testcase: Noble Affairs, Quest NPC near the Gate --------------------- r11186 FIX player not able to frob doors/levers/buttons while shouldering a body in 2.14b4. When shouldering a body, the last frob action state was initialized to an incorrect value that prevented state transitions to relevant frob actions. --------------------- r11175 Fix initial event not triggering on FM Airpocket: Added FrobAction to all Try*() frobhandlers; Fallback case now only enetered on key release and if no other action was executed before that --------------------- r11171 Tweaked slow door opening to be a littled slower even --------------------- r11169 Partial revert of Rev. 11135 -> It broke stim reponse if holdfrob is disabled --------------------- r11135 Fix: Frobaction not executed or inventory item not picked up for entities attached to BinaryFrobMovers because door handling is active there --> Moved door handling after inventory handling; Had to move FrobAction() and Trigger ST_FROB arou... --------------------- r11134 Picking up all attachments should trigger ST_FROB in the same way as if we frob them one-by-one --------------------- r11133 Fix: Weapon immobilization set even though SlowDoorControl could not be engaged (e.g. on locked/fully-opened door); If a door is locked, directly execute frob action instead of trying SlowDoorControl (to make the "locked"-sound); Make sure ... --------------------- r11131 Fixed Linux build. --------------------- r11130 0006668: Prevent door slow move after failed use on frob (missing frob state transition); Added same checks as in door fine control regarding door locked-state and interrutable-state just to be sure --------------------- r11129 0006658 + 0006668: Frob refactor, configurable frob control schemes, hold-frob door control --------------------- r17453 0006658: New frob control styles added to settings menu (replaced hold frob delay) --------------------- |
|
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 18.01.2026 10:09 | STiFU | New Issue | |
| 18.01.2026 10:09 | STiFU | Status | new => assigned |
| 18.01.2026 10:09 | STiFU | Assigned To | => STiFU |
| 18.01.2026 10:10 | STiFU | Relationship added | related to 0006316 |
| 18.01.2026 10:18 | STiFU | Note Added: 0017133 | |
| 18.01.2026 10:20 | STiFU | Status | assigned => feedback |
| 24.01.2026 23:09 | STiFU | Relationship added | related to 0006668 |
| 24.01.2026 23:12 | STiFU | Note Added: 0017151 | |
| 12.02.2026 20:33 | STiFU | Status | feedback => resolved |
| 12.02.2026 20:33 | STiFU | Fixed in Version | => TDM 2.14 |
| 07.03.2026 13:52 | stgatilov | Note Added: 0017229 | |
| 07.03.2026 13:52 | stgatilov | Status | resolved => suspended |
| 07.03.2026 13:52 | stgatilov | Fixed in Version | TDM 2.14 => |
| 07.03.2026 13:52 | stgatilov | Target Version | TDM 2.14 => TDM 2.15 |
| 07.03.2026 13:58 | stgatilov | Note Edited: 0017229 |