My goal was to build the new combat code completely separate from the rest of project. Unfortunately this was not possible because of Forge’s architecture. The more that I tried to update the combat code, the more messy things became. Forge does not allow you to easily update one part of the AI without updating the whole thing. In my mind Forge has grown from a collection of objects to sub-systems, which is the difference between a 3 story house and a skyscraper.
Giant Growth’s AI code checks to see if a creature is attacking and then targets that creature. There is no “wait time” for the computer and the new code definitely will need a few seconds in order to generate future combat situations. I thought that I knew what I was getting into but I didn't.
Programmer note: The reason that it is good to create and use interfaces (or abstract classes) is because you have the opportunity to update them later. Of course you can be too abstract and become lightheaded but in general, some interfaces are better than no interfaces.