Всё равно тебе придётся узнать в каком режиме находится стейт.
Можно сделать и так:

Код AS3:
class State{
public static const NORMAL:String = "normal";
public static const BATTLE:String = "battle";
function getStateType():String {
return NORMAL;
}
}
И переопределять этот метод в детях:

Код AS3:
class BattleState{
override function getStateType():String {
return State.BATTLE;
}
}
И проверять в коде:

Код AS3:
override function doSomething():void{
if (_state.getStateType() == State.NORMAL) doSomethingNormal();
else doSomethingBattle();
}
Но я не вижу принципиально разницы, если все твои последующие стейты ты будешь наследовать от ChStateNormal или ChStateBattle