This way, the static costs would reflect the state of the world in the case when all doors are open, all bridges are working, etc. The dynamic costs would be set above the A* threshold, so that the a* would treat links near an obstacle as impassible.
Anyway, the static A* has been working well for months, but now that we are experimenting with adding player-generated force fields, the A* got confused, and worse, the player could stare through his partly transparent force field and watch the AI suffer...
So, what I do now is to keep a bounding box of the current A* path for each entity. Every time a non-sentient object moves, I subtract its old cost from the dynamic grid, and then move it, and add it's new cost to the grid via a bounding box. I pass this same box to the factory, which iterates through the entities and tests their paths vs the box. If any of their paths touch or cross the box, it conservatively assumes that the new path is impassible, so it ends the current path at the obstacle, where it can create a new plan.
I also had to distinguish between line of sight and line of fire. The force field doesn't prevent the AI from seeing you and coming after you, but they do know they can't shoot through it - currently, anyway. The plan is to have a variety of shields, some can be shot down, others reflect bolts, etc.
Here is a shot of the debug output from a recent test. The red is the static nav cost. The green is the dynamic cost, in this case, of the force field. The white boxes indicate the enemy's start and shooting position. The enemy will actually stop moving to the shooting spot early if he gets a good shot before then. The white line is the current path, which was shortened when I added the force field across it.