Собственно maddox.game.campaign.Mission наследует maddox.game.AMission. Отличается от maddox.game.AMission только дополнительно перегруженным методом OnSingleBattleSuccess (имхо, его трогать не надо) и публичным полем Campaign - интерфейсом типа ICampaign, предоставляющим одно nullable булево свойство battleSuccess. Походу именно на него кампания ориентируется - провалена миссия или нет.
Хм-м... А если это так, то чёта я не пойму: как выходит так, что события, по сути одного, некого базового класса отрабатывают не у всех наследников?.. Чего-то в шаблонах видать напутано. Делегат не делегатистый вышел видать)