View Issue Details

IDProjectCategoryView StatusLast Update
0006658The Dark ModCodingpublic07.03.2026 13:58
ReporterSTiFU Assigned ToSTiFU  
PrioritynormalSeveritynormalReproducibilityN/A
Status suspendedResolutionopen 
Product VersionTDM 2.13 
Target VersionTDM 2.15 
Summary0006658: Refactor frob handling to better support different frob control styles
DescriptionThe 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.
TagsNo tags attached.

Relationships

related to 0006316 resolvedDaft Mugi Add Hold Frob for Alternate Interaction 
related to 0006668 suspendedSTiFU Add hold-frob mechanic to doors to open them slowly 

Activities

STiFU

STiFU

18.01.2026 10:18

developer   ~0017133

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)
STiFU

STiFU

24.01.2026 23:12

developer   ~0017151

Implemented in /branches/STiFU_FrobRefactor, Rev. 11119
stgatilov

stgatilov

07.03.2026 13:52

administrator   ~0017229

Last edited: 07.03.2026 13:58

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)
---------------------

Issue History

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