View Issue Details

IDProjectCategoryView StatusLast Update
0005157The Dark ModPhysicspublic17.02.2020 05:09
Reporterstgatilov Assigned Tostgatilov  
PrioritynormalSeveritynormalReproducibilitysometimes
Status resolvedResolutionfixed 
Product VersionTDM 2.07 
Target VersionTDM 2.08Fixed in VersionTDM 2.08 
Summary0005157: Random collisions force player to drop held item
DescriptionReported on forums here:
  https://forums.thedarkmod.com/index.php?/topic/20254-object-manipulation-issue-in-crucible-of-omens/&tab=comments#comment-443685

Basically, after some gameplay on Behind Closed Doors FM the player cannot hold/manipulate any item. It gets auto-dropped half-a-second after player takes it. The issue persists in a save file, but disappears after mission restart.
Initially I thought that the objects somehow got into the floor under them, but it is not the problem.
Steps To ReproduceBoot TDM 2.07 hotfix, and load the attached save on Behind Closed Doors FM.
Try to lift chair or candle: they are dropped very fast, you cannot move them normally.
TagsNo tags attached.

Relationships

related to 0003516 resolvedgrayman AI can be blocked by simple movable 

Activities

stgatilov

stgatilov

17.02.2020 04:47

developer  

quicksave.7z (3,961,131 bytes)
stgatilov

stgatilov

17.02.2020 04:50

developer   ~0012216

Here is stack trace which forces the drops:
> TheDarkModx64.exe!idEntity::CheckCollision(idEntity * collidedWith) Line 13680 C++
     TheDarkModx64.exe!idAI::CheckTactile() Line 11730 C++
     TheDarkModx64.exe!idAI::Think() Line 2528 C++
     TheDarkModx64.exe!idGameLocal::RunFrame(const usercmd_t * clientCmds) Line 3424 C++
     TheDarkModx64.exe!idSessionLocal::RunGameTic() Line 2954 C++
     [Inline Frame] TheDarkModx64.exe!idSessionLocal::RunGameTics() Line 3022 C++
     TheDarkModx64.exe!idSessionLocal::ActivateFrontend() Line 3118 C++
     TheDarkModx64.exe!idRenderSystemLocal::EndFrame(int * frontEndMsec, int * backEndMsec) Line 613 C++
     TheDarkModx64.exe!idSessionLocal::UpdateScreen(bool outOfSequence) Line 2654 C++
     TheDarkModx64.exe!idCommonLocal::Frame() Line 2478 C++

Looking into idEntity::CheckCollision, I see:
+ this 0x00000290d84de964 Entity "func_static_1872": num=2131 def=45 idEntity * {idStaticEntity}
+ collidedWith 0x00000290d847e014 Entity "mill_cityguard_1": num=1929 def=173 idEntity * {idAI}
+ parent 0x00000290d822d7a4 Entity "atdm_door_104x56_2hinge_1": num=2144 def=1714 idEntity * {CFrobDoor}
- children [2] { 0x00000290d84de964 Entity "func_static_1872": num=2131 def=45, 0x00000290d82ec354 Entity "atdm_handle_curved_rotate_double_right_1": num=2145 def=1747 } idList<idEntity *>
+ [0] 0x00000290d84de964 Entity "func_static_1872": num=2131 def=45 idEntity * {idStaticEntity}
+ [1] 0x00000290d82ec354 Entity "atdm_handle_curved_rotate_double_right_1": num=2145 def=1747 idEntity * {CFrobDoorHandle}
The drop happens on the last StopDrag call.

Apparently, the code here is wrong, since it does not take entHeld into account at all.
stgatilov

stgatilov

17.02.2020 05:09

developer   ~0012218

Fixed in svn rev 8592.

Issue History

Date Modified Username Field Change
17.02.2020 04:47 stgatilov New Issue
17.02.2020 04:47 stgatilov Status new => assigned
17.02.2020 04:47 stgatilov Assigned To => stgatilov
17.02.2020 04:47 stgatilov File Added: quicksave.7z
17.02.2020 04:50 stgatilov Note Added: 0012216
17.02.2020 05:03 stgatilov Relationship added related to 0003516
17.02.2020 05:09 stgatilov Note Added: 0012218
17.02.2020 05:09 stgatilov Status assigned => resolved
17.02.2020 05:09 stgatilov Resolution open => fixed
17.02.2020 05:09 stgatilov Fixed in Version => TDM 2.08