Carmack hates C++ and DirectX, or at least that''s what I gather from what I''ve read.
hmm. You are pretty late for the news. Carmack said in a voodooextreme interview that Directx 8 was now good, but he would still use opengl because portability matters a lot.
And he also said that Doom 3 would be written in C++. He mentionned that he might keep the renderer in C if he can easily include all the new features in it because he liked the architecture.
so a weapon is constructed using a constructor from CWeapon, but it is registered in a list as a CObject. This way it can be in one list and when we want to see the attributes having just a CObject, we look at the type to see what to expect in the AttributeList...