Это точно на наследование задача?
Раз у вас одинаковые конструкторы для людей в чёрном и там и там, и менять ничего нельзя, предлагаю в методе Attack
получить номер строки, из которой был вызов (с помощью атрибута [CallerLineNumber] ), у вас будет два варианта, откуда был вызван метод Attack, дальше по номеру строк уже определитесь кто чем стреляет.