My packets do have a transmission power high enough to reach distant nodes, but they don't. Why?

NS-2 by default creates a box around each node, which size is based on the initial transmission power (or something like that, I am not sure). Only messages sent inside this area are going to be computed by the nodes. However, you can dynamically change your transmission powers and they can come to cover further this box. Therefore, when you send a message, some nodes that should receive it won't at all, because of the initially calculated area.

This is a measure that considerably decreases computation complexity, the cost for all nodes to proccess all packets would be too large. A way to solute this 'problem' is simply increasing this box's area. The file ns-2.30/mac/channel.cc should be edited. The variable responsible for determining this area is distCST_. Try replacing wifp->getPt() on the formula below by the highest transmission power used.

distCST_ = wifp->getDist(wifp->getCSThresh(), wifp->getPt(), 1.0, 1.0,
highestZ , highestZ, wifp->getL(),
wifp->getLambda());