Надеюсь, вопрос правильно понял.

Например, я хотел бы этих сеттлеров ограничить Питоном, но не знаю, где искать место вставки кода. Я бы начал с того, что просмотрел код СДК, где определяется, можно ли строить юнит. Нахожу CvCity::canTrain(), там два раза происходит вызов питоновских функций в блоках:

if(GC.getUSE_CAN_TRAIN_CALLBACK())

и

if(GC.getUSE_CANNOT_TRAIN_CALLBACK())

Вижы, что код в этих блоках вызывает питон, например:

gDLL->getPythonIFace()->callFunction(PYGameModule, "cannotTrain", argsList2.makeFunctionArgs(), &lResult);

Где PYGameModule равно CvGameInterface. В файле CvGameInterface.py вижу, что cannotTrain - функция модуля gameUtils. Соотвественно, понимаю, что код надо вставлять в функцию cannotTrain файла gameUtils.py.