Theo.RTS.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded;
DataManager.isDatabaseLoaded = function () {
if (!Theo.RTS.DataManager_isDatabaseLoaded.call(this)) return false;
if (!Theo._loaded_RealTimeStates) {
this.processRTSNotetags1($dataStates);
Theo._loaded_RealTimeStates = true;
}
return true;
};
DataManager.processRTSNotetags1 = function (group) {
var note1 = /<(?:EXPIRED TIME):[ ]*(\d+)>/i;
for (var n = 1; n < group.length; n++) {
var obj = group[n];
var notedata = obj.note.split(/[\r\n]+/);
obj.stateRealTime = 0;
for (var i = 0; i < notedata.length; i++) {
var line = notedata;
if (line.match(note1)) {
obj.stateRealTime = parseInt(RegExp.$1) * 60;
}
}
}
};
Game_Battler.prototype.initRealTimeStates = function () {
this._rtStates = {};
};
Theo.RTS.Game_Battler_resetStateCounts = Game_Battler.prototype.resetStateCounts;
Game_Battler.prototype.resetStateCounts = function (stateId) {
Theo.RTS.Game_Battler_resetStateCounts.call(this, stateId);
var time = $dataStates[stateId].stateRealTime;
if (time <= 0) return;
this._rtStates[stateId] = $gameSystem.stateRealTime() + time;
};
Game_Battler.prototype.checkRealTimeStates = function () {
for (var i = 0; i < this._states.length; i++) {
var stateId = this._states;
if ($dataStates[stateId].stateRealTime <= 0) continue;
if (this.isRealTimeStateTimeUp(stateId)) {
this.removeState(stateId);
if ($gameParty.inBattle()) {
BattleManager.refreshStatus();
}
}
}
};
Game_Battler.prototype.isRealTimeStateTimeUp = function (stateId) {
if (!!this._rtStates[stateId]) {
return $gameSystem.stateRealTime() >= this._rtStates[stateId];
} else {
return false;
}
};
Theo.RTS.Scene_Base_update = Scene_Base.prototype.update;
Scene_Base.prototype.update = function () {
Theo.RTS.Scene_Base_update.call(this);
if (this instanceof Scene_Map || this instanceof Scene_Battle) {
if ($gameSwitches.value(Theo.Param.RTSPauseSID)) return;
if (!this.isMessagePause()) {
this.updateStateRealTime();
this.checkRealTimeStates();
}
}
};
Scene_Base.prototype.updateStateRealTime = function () {
$gameSystem.updateStateRealTime();
};
Scene_Base.prototype.checkRealTimeStates = function () {
for (var i = 0; i < $gameParty.members().length; i++) {
$gameParty.members().checkRealTimeStates();
}
if ($gameParty.inBattle()) {
for (var i = 0; i < $gameTroop.members().length; i++) {
$gameTroop.members().checkRealTimeStates();
}
}
};
Scene_Base.prototype.isMessagePause = function () {
var isSceneChangeOk = this.isActive() && !$gameMessage.isBusy();
return Theo.Param.RTSMsgPause && !isSceneChangeOk;
};
//=============================================================================
// End of File
//=============================================================================
[/pre]