View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003704 | The Dark Mod | Coding | public | 30.03.2014 02:57 | 10.03.2019 20:27 |
Reporter | grayman | Assigned To | SteveL | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Product Version | TDM 2.02 | ||||
Target Version | TDM 2.04 | Fixed in Version | TDM 2.04 | ||
Summary | 0003704: Can pickpocket something when near origin, regardless of where the something is in the map | ||||
Description | I noticed this while testing the new pickpocket reaction in AI. If I give an AI a key on his belt, and go to the map's origin, somewhere around [50,-50,0] I can frob the key w/o being anywhere near it. Across the map, the key disappears from the AI's belt and he reacts to having it stolen. The key has a frob_distance of 50 on it, so that might be part of the problem. I've built a test map where I'm 300 from the key when I frob it. | ||||
Tags | No tags attached. | ||||
Attached Files | originfrob.map (9,368 bytes)
Version 2 // entity 0 { "classname" "worldspawn" "editor_drLastCameraPos" "32.1694 -17.1933 91.329" "editor_drLastCameraAngle" "-5.4 4.8 0" "editor_drMapPos1" "1738.55 1171.14 -520.531" "editor_drMapAngle1" "14.7001 87.8977 0" "editor_drMapPos2" "414.798 255.441 -264.933" "editor_drMapAngle2" "2.10002 84.5976 0" "editor_drMapPos3" "-749.97 -1606.21 -470.066" "editor_drMapAngle3" "-3.29998 6.59757 0" "editor_drMapPos4" "1014.05 -953.679 -556.857" "editor_drMapAngle4" "-10.2 355.498 0" "editor_drMapPos5" "987.599 3513.79 -319.877" "editor_drMapAngle5" "-61.1999 172.198 0" "editor_drMapPos6" "-1032.5 -2840 739.5" "editor_drMapAngle6" "-77.0999 175.798 0" "editor_drMapPos7" "952.822 285.005 1366.04" "editor_drMapAngle7" "-74.8 149.373 0" "editor_drMapPos8" "976 424 320" "editor_drMapAngle8" "-3 15.3467 0" "editor_drMapPos9" "409.146 547.464 392.83" "editor_drMapAngle9" "-16.8 284.947 0" // primitive 0 { brushDef3 { ( 0 0 1 -136 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 1 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0.0625 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 1 0 0 -448 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0.0625 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 -1 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0.0625 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( -1 0 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0.0625 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 0 -1 128 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 } } // primitive 1 { brushDef3 { ( 0 0 1 -128 ) ( ( 0.00390625 0 255.96875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 1 0 -72 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 1 0 0 -448 ) ( ( 0.00390625 0 255.96875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 0 -1 0 ) ( ( 0.00390625 0 255.96875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( -1 0 0 -64 ) ( ( 0.00390625 0 0.03125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 -1 0 64 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 } } // primitive 2 { brushDef3 { ( 0 0 1 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 127.9375 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 1 0 -64 ) ( ( 0.00390625 0 0.03125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 1 0 0 -456 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 0 -1 0 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0.0625 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 -1 0 -64 ) ( ( 0.00390625 0 255.96875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( -1 0 0 448 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 } } // primitive 3 { brushDef3 { ( 0 1 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 127.9375 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 0 -1 -8 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 -1 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 127.9375 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( -1 0 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 127.9375 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 0 1 0 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 1 0 0 8 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/common/caulk" 0 0 0 } } // primitive 4 { brushDef3 { ( 0 0 1 -128 ) ( ( 0.00390625 0 0.03125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 1 0 0 -448 ) ( ( 0.00390625 0 0.03125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 0 -1 0 ) ( ( 0.00390625 0 0.03125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 -1 0 -72 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( -1 0 0 -64 ) ( ( 0.00390625 0 255.96875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 1 0 64 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 } } // primitive 5 { brushDef3 { ( 0 0 1 -128 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0.5625 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 1 0 -64 ) ( ( 0.00390625 0 255.71875 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 0 -1 0 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 127.4375 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 -1 0 -64 ) ( ( 0.00390625 0 0.28125 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( -1 0 0 -72 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 1 0 0 64 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 } } // primitive 6 { brushDef3 { ( 0 0 -1 -8 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 -1 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 127.9375 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 0 1 0 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( -1 0 0 -8 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/common/caulk" 0 0 0 ( 1 0 0 -8 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/common/caulk" 0 0 0 ( 0 1 0 8 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/common/caulk" 0 0 0 } } // primitive 7 { brushDef3 { ( 0 1 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 127.9375 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 1 0 0 -448 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 127.9375 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 0 -1 -8 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 -1 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 127.9375 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 0 1 0 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( -1 0 0 8 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/common/caulk" 0 0 0 } } // primitive 8 { brushDef3 { ( 0 1 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 127.9375 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 0 -1 -8 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( 0 0 1 0 ) ( ( 0.00390625 0 0 ) ( 0 0.0078125 0 ) ) "textures/darkmod/carpet/runners/geometric01_red" 0 0 0 ( -1 0 0 -8 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/common/caulk" 0 0 0 ( 1 0 0 -8 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/common/caulk" 0 0 0 ( 0 -1 0 8 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/common/caulk" 0 0 0 } } // primitive 9 { brushDef3 { ( 0 0 -1 -8 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/metal/detailed/bars_rivets_steel" 0 0 0 ( 0 0 1 0 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/metal/detailed/bars_rivets_steel" 0 0 0 ( -1 0 0 -8 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/metal/detailed/bars_rivets_steel" 0 0 0 ( 1 0 0 -8 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/metal/detailed/bars_rivets_steel" 0 0 0 ( 0 1 0 -8 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/metal/detailed/bars_rivets_steel" 0 0 0 ( 0 -1 0 -8 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/darkmod/metal/detailed/bars_rivets_steel" 0 0 0 } } } // entity 1 { "classname" "atdm:ai_citywatch" "name" "Bob" "def_attach6" "atdm:prop_key_padlock" "def_vocal_set" "atdm:ai_vocal_set_simpleton_guard_01" "name_attach6" "KeyPadlock4" "origin" "321.44 32.62 0.055441" "pos_attach6" "belt_back_right" "set inv_name on KeyPadlock4" "Padlock Key" "set name on KeyPadlock4" "KeyPadlock4" "team" "0" } // entity 2 { "classname" "atdm:ambient_world" "name" "ambient_world" "_color" "0.08 0.08 0.08" "light_center" "0 0 0" "light_radius" "320 320 320" "origin" "192 0 64" } // entity 3 { "classname" "light" "name" "light_1" "light_center" "0 0 0" "light_radius" "320 320 320" "origin" "208 40 112" } // entity 4 { "classname" "info_player_start" "name" "info_player_start_1" "angle" "1" "origin" "-40 0 0" } // entity 5 { "classname" "atdm:ai_citywatch" "name" "Charlie" "def_attach6" "atdm:prop_lootbag" "def_vocal_set" "atdm:ai_vocal_set_simpleton_guard_01" "origin" "321.44 -39.38 0.055441" "pos_attach6" "belt_back_right" "team" "0" } // entity 6 { "classname" "atdm:ai_citywatch" "name" "Doug" "def_attach6" "atdm:prop_key_simple_brass" "def_vocal_set" "atdm:ai_vocal_set_simpleton_guard_01" "name_attach6" "Key1" "origin" "409.44 0.62 0.055441" "pos_attach6" "belt_back_right" "set inv_name on Key1" "Key" "set name on Key1" "Key1" "team" "0" } | ||||
Added a second guard with a key on his belt. I can stand at the origin, and with two frobs pluck both keys off the belts 300 units away. It's as if the keys are sitting at the origin, but when I check the origins of the keys, they're out on the guards' belts. Something odd is going on with the trace function. It thinks the keys are only 39 units away, w/in frob distance. |
|
At first, I corrected this by checking the abs bounds on the entity, instead of the abs bounds kept in the cliplink list (the following code from idClip::ClipModelsTouchingBounds_r). // if the bounds really do overlap if ( check->absBounds[0][0] > parms.bounds[1][0] || check->absBounds[1][0] < parms.bounds[0][0] || check->absBounds[0][1] > parms.bounds[1][1] || check->absBounds[1][1] < parms.bounds[0][1] || check->absBounds[0][2] > parms.bounds[1][2] || check->absBounds[1][2] < parms.bounds[0][2] ) { continue; } This corrected the key problem, but it caused a problem of not being able to hit an AI's head with a broadhead; the arrow sailed right through. Putting the code back to what it was corrected that problem. So--if there's a fix at all, and there might not be--it has to lie in the link/unlink code. |
|
Mysterious that frobbing works from two different places. There must be two checks happening, either explicitly or more likely as a side effect. How did you discover the nonsolid head effect? And I wonder if an arrow would be stopped a little way above the origin in that experiment? Just idle speculation atm but I find this really intriguing. Working out how the clip links work is on my to-do list too. I plan to have another go at those physics issues that were too hard for me in April once I get back to the uk next week. I might have more chance of success now I'm a bit more acclimatized to the game code. | |
I attached a test map that shows the problem. After starting, try frobbing in the air above or near the square patch in the floor. You should be able to frob the attachments off the guards. I noticed the nonsolid head when I was conducting tests on the pickpocket reaction. I think the problem comes from an attachment being spawned momentarily near the origin, then moved as an attachment to the AI. The cliplink list captures both clipmodel boundaries, then later uses the wrong one when testing what's in the path of the player's LOS during a frob. Correcting for an attachment clobbered collision detection on an AI's attached head. Perhaps some special-case detection also needs to be added. It's unclear to me why there would be more than one clipmodel for anything. |
|
Thanks. I'll be able to play with it Friday. I'm wondering whether g_showentityinfo will show them there too. Inventory items leave their world bounding boxes behind like that, but that's different because they've not been moved, they've just been hidden. But it makes me wonder whether it makes a difference whether the key is positioned in DR or def attached. A key positioned in DR has no business at the origin. | |
Yup, the keys are frobable from the origin but not, apparently, the coin purse. g_showentityinfo does *not* show bounding boxes at the origin. Keys positioned in DR don't have the problem, as suspected. Why keys and not a coin purse? Hmmm. I got a definite pickpocket reaction from one of my snatches-from-the-origin, delayed by a few seconds. |
|
Aha! It's not the key being hit by the trace at the origin, it's the key's frobbox. Keys do have two distinct collision models: their own, plus their frobbox. The key's own cm is correctly positioned when the map starts, but the frobbox cm is sitting at the origin. The reason you can't frob the loot purse from the origin is that it doesn't have a frobbox spawnarg. |
|
For the frobbox an additional clipmodel is used, but only if frobbox_size or frobbox_mins _maxs respectively are set. The member pointer is m_frobbox in idEntity. To me it seems that when the entities position get's updated, the frobbox doesn't get moved, too. Maybe this have been overlooked back when the frobbing was implemented. I'm currently trying to find the piece of code handling the movement. |
|
I think you're right. There might simply be no code at all that updates the frobbox tracemodel. But there must be some code somewhere that updates the other tracemodel, the one for the object's own clipmodel. If you can find that code, perhaps we can make it happen for the frobbox too. | |
I'm assigning this to myself because I diagnosed it last summer and will eventually get round to fixing it, but if anyone wants to fix it sooner please just assign the issue to yourself! | |
Here is a bit more info: For idMoveableItem, the frobbox is stored in trigger and this is updated on each Think: /* ================ idMoveableItem::Think ================ */ void idMoveableItem::Think( void ) { RunPhysics(); if ( thinkFlags & TH_PHYSICS ) { // update trigger position trigger->Link( gameLocal.clip, this, 0, GetPhysics()->GetOrigin(), mat3_identity ); } idEntity attempts the same. Both have the same subproblem, temporary hidden objects will use 0,0,0 as origin. In this case the update might be needed to be skipped: if ( (thinkFlags & TH_PHYSICS) && m_FrobBox ) { // update trigger position // TODO: Tels: What about hidden entities, these would use (0,0,0) as origin here? m_FrobBox->Link( gameLocal.clip, this, 0, GetPhysics()->GetOrigin(), GetPhysics()->GetAxis() ); } The frobbable keys should be idMoveableItem, however. The code for updating the frobbox might thus not be correct. One suspicious difference is that it doesn't use the "axis" to update trigger->Link() (either it must use the axis to construct the tracemodel, and update it, or the identity, but once so and once so?) The other problem might be that the key is attached, and thus the bindmaster's origin might need to be taken into account. Hope this helps to track this down. |
|
Ack, the error is obvious. I just spotted this again while looking for another issue in my list. The error is in the code you pasted above: GetPhysics()->GetOrigin(). GetOrigin() for bind objects returns the origin *relative to the bind point*, which is 0 0 0 unless the mapper does something special. The clip link code will need the *world* origin. | |
No, I'm wrong. That'll teach me to check the code before posting. GetPhysics()->GetOrigin() apparently returns world coordinates already. It's the *script event* getOrigin() that returns the local coordinate. | |
The keys aren't idMoveables after all, they are idSpawnableEntity. That's just an empty wrapper for idEntity. I added a walking guard with a bound key (placed in DR and bound, not def attached) to the test map, and he wanders around leaving the frob box midair where he started. I can grab the key using that frob box too. This matches a report I remember from RJFerret last year about scrolls bound to AI being frobable from where they spawned as well as from the scroll itself. It seems the frob boxes of bound items are not updated at all, so def_attached items leave their frob boxes at the map origin, and entities placed in DR leave them where they spawn. idEntity::Think for bound items doesn't call any physics code directly. Physics updates for bound items are handled by the bind master's idEntity::RunPhysics. It doesn't do frob boxes, but it needs to. |
|
Forum opinion broadly in favour of removing the frob boxes instead of making them move with their owner. Keys are easy enough to pickpocket already. idEntity::PostBind seems the right place for the fix. It gets called after both def_attachments and DR binds. An entity can destroy its frob box if it finds itself attached to an animated entity. Frob boxes will still be left behind when a frob-boxed entity is bound to something else that moves, e.g. an idMover. But broadening the fix to include those cases would risk losing frob boxes where they are needed in chests etc. |
|
at rev 6499 game/entity.cpp |
|
After blackjacking discussion in the forum today, reopened to check that the BJ mechanism isn't affected by this change in 2.04. | |
It's fine, the KO logic doesn't use a frob box or anything like it. Hits to standard body trace models are used. | |
Date Modified | Username | Field | Change |
---|---|---|---|
30.03.2014 02:57 | grayman | New Issue | |
30.03.2014 02:57 | grayman | Status | new => assigned |
30.03.2014 02:57 | grayman | Assigned To | => grayman |
30.03.2014 04:56 | grayman | Note Added: 0006484 | |
03.04.2014 16:26 | grayman | Note Added: 0006488 | |
03.04.2014 16:26 | grayman | Target Version | TDM 2.02 => |
03.04.2014 16:27 | grayman | Note Edited: 0006488 | |
28.06.2014 18:17 | grayman | Assigned To | grayman => |
28.06.2014 18:18 | grayman | Assigned To | => grayman |
28.06.2014 18:18 | grayman | Status | assigned => confirmed |
28.06.2014 18:18 | grayman | Assigned To | grayman => |
29.06.2014 09:43 | SteveL | Note Added: 0006688 | |
29.06.2014 13:54 | grayman | File Added: originfrob.map | |
29.06.2014 14:03 | grayman | Note Added: 0006689 | |
30.06.2014 07:47 | SteveL | Note Added: 0006691 | |
12.07.2014 22:29 | SteveL | Note Added: 0006714 | |
13.07.2014 11:42 | SteveL | Note Added: 0006715 | |
31.07.2014 20:07 | Obsttorte | Note Added: 0006818 | |
01.08.2014 07:09 | SteveL | Note Added: 0006819 | |
21.01.2015 20:19 | SteveL | Assigned To | => SteveL |
21.01.2015 20:19 | SteveL | Status | confirmed => assigned |
21.01.2015 20:20 | SteveL | Note Added: 0007366 | |
25.01.2015 13:10 | tels | Note Added: 0007390 | |
08.05.2015 17:25 | SteveL | Note Added: 0007507 | |
08.05.2015 17:31 | SteveL | Note Added: 0007508 | |
16.05.2015 00:57 | SteveL | Note Added: 0007512 | |
17.05.2015 20:01 | SteveL | Note Added: 0007516 | |
18.05.2015 17:50 | SteveL | Note Added: 0007517 | |
18.05.2015 17:51 | SteveL | Status | assigned => resolved |
18.05.2015 17:51 | SteveL | Resolution | open => fixed |
18.05.2015 17:51 | SteveL | Fixed in Version | => TDM 2.04 |
18.05.2015 17:51 | SteveL | Target Version | => TDM 2.04 |
07.09.2015 13:18 | SteveL | Note Added: 0007756 | |
07.09.2015 13:18 | SteveL | Status | resolved => assigned |
09.09.2015 20:19 | SteveL | Note Added: 0007766 | |
09.09.2015 20:19 | SteveL | Status | assigned => resolved |
10.03.2019 20:27 | VanishedOne | Relationship added | related to 0005009 |