sol-rui-after-mini/www/js/plugins/JsScript54Set.js
2024-01-30 18:01:34 -06:00

333 lines
13 KiB
JavaScript

var Imported = Imported || {};
Imported.YEP_RegionRestrictions = true;
var Yanfly = Yanfly || {};
Yanfly.RR = Yanfly.RR || {};
Yanfly.RR.version = 1.04
/*:
* @plugindesc
* being able to venture into those spots.
* @author Yanfly Engine Plugins
*
* @param Player Restrict
* @desc This region ID will restrict the player from entering.
* To use multiple regions, separate them by spaces.
* @default 0
*
* @param Event Restrict
* @desc This region ID will restrict all events from entering.
* To use multiple regions, separate them by spaces.
* @default 0
*
* @param All Restrict
* @desc This region ID will restrict players and events.
* To use multiple regions, separate them by spaces.
* @default 0
*
* @param Player Allow
* @desc This region ID will always allow player passability.
* To use multiple regions, separate them by spaces.
* @default 0
*
* @param Event Allow
* @desc This region ID will always allow events passability.
* To use multiple regions, separate them by spaces.
* @default 0
*
* @param All Allow
* @desc This region ID will always allow both passability.
* To use multiple regions, separate them by spaces.
* @default 0
*
* @help
*/
/*:ja
* @plugindesc
* @author Yanfly Engine Plugins
*
* @param Player Restrict
* @desc ここで指定したリージョンIDは、プレイヤーの進入を制限します。不要な場合は0を入力
* @default 0
*
* @param Event Restrict
* @desc ここで指定したリージョンIDは、全てのイベントの進入を制限します。不要な場合は0を入力
* @default 0
*
* @param All Restrict
* @desc ここで指定したリージョンIDは、プレイヤーとイベント両方の進入を制限します。不要な場合は0を入力
* @default 0
*
* @param Player Allow
* @desc ここで指定したリージョンIDは、プレイヤーの進入を許可します。不要な場合は0を入力
* @default 0
*
* @param Event Allow
* @desc ここで指定したリージョンIDは、常にイベントの進入を許可します。不要な場合は0を入力
* @default 0
*
* @param All Allow
* @desc ここで指定したリージョンIDは、常にプレイヤーとイベント両方の進入を許可します。不要な場合は0を入力
* @default 0
*
* @help
*/
Yanfly.Param = Yanfly.Param || {};
Yanfly.SetupParameters = function() {
var parameters = PluginManager.parameters('JsScript54Set');
Yanfly.Param.RRAllAllow = String(parameters['All Allow']);
Yanfly.Param.RRAllAllow = Yanfly.Param.RRAllAllow.split(' ');
for (var i = 0; i < Yanfly.Param.RRAllAllow.length; ++i) {
Yanfly.Param.RRAllAllow[i] = Number(Yanfly.Param.RRAllAllow[i]);
}
Yanfly.Param.RRAllRestrict = String(parameters['All Restrict']);
Yanfly.Param.RRAllRestrict = Yanfly.Param.RRAllRestrict.split(' ');
for (var i = 0; i < Yanfly.Param.RRAllRestrict.length; ++i) {
Yanfly.Param.RRAllRestrict[i] = Number(Yanfly.Param.RRAllRestrict[i]);
}
Yanfly.Param.RREventAllow = String(parameters['Event Allow']);
Yanfly.Param.RREventAllow = Yanfly.Param.RREventAllow.split(' ');
for (var i = 0; i < Yanfly.Param.RREventAllow.length; ++i) {
Yanfly.Param.RREventAllow[i] = Number(Yanfly.Param.RREventAllow[i]);
}
Yanfly.Param.RREventRestrict = String(parameters['Event Restrict']);
Yanfly.Param.RREventRestrict = Yanfly.Param.RREventRestrict.split(' ');
for (var i = 0; i < Yanfly.Param.RREventRestrict.length; ++i) {
Yanfly.Param.RREventRestrict[i] = Number(Yanfly.Param.RREventRestrict[i]);
}
Yanfly.Param.RRPlayerAllow = String(parameters['Player Allow']);
Yanfly.Param.RRPlayerAllow = Yanfly.Param.RRPlayerAllow.split(' ');
for (var i = 0; i < Yanfly.Param.RRPlayerAllow.length; ++i) {
Yanfly.Param.RRPlayerAllow[i] = Number(Yanfly.Param.RRPlayerAllow[i]);
}
Yanfly.Param.RRPlayerRestrict = String(parameters['Player Restrict']);
Yanfly.Param.RRPlayerRestrict = Yanfly.Param.RRPlayerRestrict.split(' ');
for (var i = 0; i < Yanfly.Param.RRPlayerRestrict.length; ++i) {
Yanfly.Param.RRPlayerRestrict[i] = Number(Yanfly.Param.RRPlayerRestrict[i]);
}
};
Yanfly.SetupParameters();
DataManager.processRRNotetags = function() {
if (!$dataMap) return;
$dataMap.restrictPlayerRegions = Yanfly.Param.RRAllRestrict.concat(
Yanfly.Param.RRPlayerRestrict);
$dataMap.restrictEventRegions = Yanfly.Param.RRAllRestrict.concat(
Yanfly.Param.RREventRestrict);
$dataMap.allowPlayerRegions = Yanfly.Param.RRAllAllow.concat(
Yanfly.Param.RRPlayerAllow);
$dataMap.allowEventRegions = Yanfly.Param.RRAllAllow.concat(
Yanfly.Param.RREventAllow);
if (!$dataMap.note) return;
var note1a = /<(?:PLAYER RESTRICT REGION):[ ]*(\d+(?:\s*,\s*\d+)*)>/i;
var note1b = /<(?:PLAYER RESTRICT REGION):[ ](\d+)[ ](?:TO)[ ](\d+)>/i;
var note2a = /<(?:EVENT RESTRICT REGION):[ ]*(\d+(?:\s*,\s*\d+)*)>/i;
var note2b = /<(?:EVENT RESTRICT REGION):[ ](\d+)[ ](?:TO)[ ](\d+)>/i;
var note3a = /<(?:ALL RESTRICT REGION):[ ]*(\d+(?:\s*,\s*\d+)*)>/i;
var note3b = /<(?:ALL RESTRICT REGION):[ ](\d+)[ ](?:TO)[ ](\d+)>/i;
var note4a = /<(?:PLAYER ALLOW REGION):[ ]*(\d+(?:\s*,\s*\d+)*)>/i;
var note4b = /<(?:PLAYER ALLOW REGION):[ ](\d+)[ ](?:TO)[ ](\d+)>/i;
var note5a = /<(?:EVENT ALLOW REGION):[ ]*(\d+(?:\s*,\s*\d+)*)>/i;
var note5b = /<(?:EVENT ALLOW REGION):[ ](\d+)[ ](?:TO)[ ](\d+)>/i;
var note6a = /<(?:ALL ALLOW REGION):[ ]*(\d+(?:\s*,\s*\d+)*)>/i;
var note6b = /<(?:ALL ALLOW REGION):[ ](\d+)[ ](?:TO)[ ](\d+)>/i;
var notedata = $dataMap.note.split(/[\r\n]+/);
for (var i = 0; i < notedata.length; i++) {
var line = notedata[i];
if (line.match(note1a)) {
array = JSON.parse('[' + RegExp.$1.match(/\d+/g) + ']');
$dataMap.restrictPlayerRegions =
$dataMap.restrictPlayerRegions.concat(array);
} else if (line.match(note1b)) {
var mainArray = $dataMap.restrictPlayerRegions;
var range = Yanfly.Util.getRange(Number(RegExp.$1),
Number(RegExp.$2));
$dataMap.restrictPlayerRegions =
$dataMap.restrictPlayerRegions.concat(range);
} else if (line.match(note2a)) {
array = JSON.parse('[' + RegExp.$1.match(/\d+/g) + ']');
$dataMap.restrictEventRegions =
$dataMap.restrictEventRegions.concat(array);
} else if (line.match(note2b)) {
var range = Yanfly.Util.getRange(Number(RegExp.$1),
Number(RegExp.$2));
$dataMap.restrictEventRegions =
$dataMap.restrictEventRegions.concat(range);
} else if (line.match(note3a)) {
array = JSON.parse('[' + RegExp.$1.match(/\d+/g) + ']');
$dataMap.restrictPlayerRegions =
$dataMap.restrictPlayerRegions.concat(array);
$dataMap.restrictEventRegions =
$dataMap.restrictEventRegions.concat(array);
} else if (line.match(note3b)) {
var range = Yanfly.Util.getRange(Number(RegExp.$1),
Number(RegExp.$2));
$dataMap.restrictPlayerRegions =
$dataMap.restrictPlayerRegions.concat(array);
$dataMap.restrictEventRegions =
$dataMap.restrictEventRegions.concat(array);
} else if (line.match(note4a)) {
array = JSON.parse('[' + RegExp.$1.match(/\d+/g) + ']');
$dataMap.allowPlayerRegions =
$dataMap.allowPlayerRegions.concat(array);
} else if (line.match(note4b)) {
var range = Yanfly.Util.getRange(Number(RegExp.$1),
Number(RegExp.$2));
$dataMap.allowPlayerRegions =$dataMap.allowPlayerRegions.concat(range);
} else if (line.match(note5a)) {
array = JSON.parse('[' + RegExp.$1.match(/\d+/g) + ']');
$dataMap.allowEventRegions = $dataMap.allowEventRegions.concat(array);
} else if (line.match(note5b)) {
var range = Yanfly.Util.getRange(Number(RegExp.$1),
Number(RegExp.$2));
$dataMap.allowEventRegions = $dataMap.allowEventRegions.concat(range);
} else if (line.match(note6a)) {
array = JSON.parse('[' + RegExp.$1.match(/\d+/g) + ']');
$dataMap.allowPlayerRegions = $dataMap.allowPlayerRegions.concat(array);
$dataMap.allowEventRegions = $dataMap.allowEventRegions.concat(array);
} else if (line.match(note6b)) {
var range = Yanfly.Util.getRange(Number(RegExp.$1),
Number(RegExp.$2));
$dataMap.allowPlayerRegions = $dataMap.allowPlayerRegions.concat(array);
$dataMap.allowEventRegions = $dataMap.allowEventRegions.concat(array);
}
}
};
Yanfly.RR.Game_Map_setup = Game_Map.prototype.setup;
Game_Map.prototype.setup = function(mapId) {
Yanfly.RR.Game_Map_setup.call(this, mapId);
if ($dataMap) DataManager.processRRNotetags();
};
Game_Map.prototype.restrictEventRegions = function() {
if ($dataMap.restrictEventRegions === undefined) {
DataManager.processRRNotetags();
}
return $dataMap.restrictEventRegions || [];
};
Game_Map.prototype.restrictPlayerRegions = function() {
if ($dataMap.restrictPlayerRegions === undefined) {
DataManager.processRRNotetags();
}
return $dataMap.restrictPlayerRegions || [];
};
Game_Map.prototype.allowEventRegions = function() {
if ($dataMap.allowEventRegions === undefined) {
DataManager.processRRNotetags();
}
return $dataMap.allowEventRegions || [];
};
Game_Map.prototype.allowPlayerRegions = function() {
if ($dataMap.allowPlayerRegions === undefined) {
DataManager.processRRNotetags();
}
return $dataMap.allowPlayerRegions || [];
};
Yanfly.RR.Game_CharacterBase_isMapPassable =
Game_CharacterBase.prototype.isMapPassable;
Game_CharacterBase.prototype.isMapPassable = function(x, y, d) {
if (this.isEventRegionForbid(x, y, d)) return false;
if (this.isPlayerRegionForbid(x, y, d)) return false;
if (this.isEventRegionAllow(x, y, d)) return true;
if (this.isPlayerRegionAllow(x, y, d)) return true;
return Yanfly.RR.Game_CharacterBase_isMapPassable.call(this, x, y, d);
};
Game_CharacterBase.prototype.isEvent = function() {
return false;
};
Game_CharacterBase.prototype.isPlayer = function() {
return false;
};
Game_CharacterBase.prototype.processRRNotetags = function() {
DataManager.processRRNotetags();
};
Game_CharacterBase.prototype.isEventRegionForbid = function(x, y, d) {
if (this.isPlayer()) return false;
if (this.isThrough()) return false;
var regionId = this.getRegionId(x, y, d);
if (regionId === 0) return false;
if ($gameMap.restrictEventRegions().contains(regionId)) return true;
return false;
};
Game_CharacterBase.prototype.isPlayerRegionForbid = function(x, y, d) {
if (this.isEvent()) return false;
if (this.isThrough()) return false;
var regionId = this.getRegionId(x, y, d);
if (regionId === 0) return false;
if ($gameMap.restrictPlayerRegions().contains(regionId)) return true;
return false;
};
Game_CharacterBase.prototype.isEventRegionAllow = function(x, y, d) {
if (this.isPlayer()) return false;
var regionId = this.getRegionId(x, y, d);
if (regionId === 0) return false;
if ($gameMap.allowEventRegions().contains(regionId)) return true;
return false;
};
Game_CharacterBase.prototype.isPlayerRegionAllow = function(x, y, d) {
if (this.isEvent()) return false;
var regionId = this.getRegionId(x, y, d);
if (regionId === 0) return false;
if ($gameMap.allowPlayerRegions().contains(regionId)) return true;
return false
};
Game_CharacterBase.prototype.getRegionId = function(x, y, d) {
switch (d) {
case 1:
return $gameMap.regionId(x - 1, y + 1);
break;
case 2:
return $gameMap.regionId(x + 0, y + 1);
break;
case 3:
return $gameMap.regionId(x + 1, y + 1);
break;
case 4:
return $gameMap.regionId(x - 1, y + 0);
break;
case 5:
return $gameMap.regionId(x + 0, y + 0);
break;
case 6:
return $gameMap.regionId(x + 1, y + 0);
break;
case 7:
return $gameMap.regionId(x - 1, y - 1);
break;
case 8:
return $gameMap.regionId(x + 0, y - 1);
break;
case 9:
return $gameMap.regionId(x + 1, y - 1);
break;
default:
return $gameMap.regionId(x, y);
break;
}
};
Game_Event.prototype.isEvent = function() {
return true;
};
Game_Player.prototype.isPlayer = function() {
return true;
};
Yanfly.RR.Game_Vehicle_isLandOk = Game_Vehicle.prototype.isLandOk;
Game_Vehicle.prototype.isLandOk = function(x, y, d) {
var value = Yanfly.RR.Game_Vehicle_isLandOk.call(this, x, y, d);
if (!value) return false;
if (this.isAirship()) {
d = 5;
$gamePlayer._through = false;
}
if ($gamePlayer.isPlayerRegionForbid(x, y, d)) {
if (this.isAirship()) $gamePlayer._through = true;
return false;
}
if ($gamePlayer.isPlayerRegionAllow(x, y, d)) {
if (this.isAirship()) $gamePlayer._through = true;
return true;
}
return true;
};
Yanfly.Util = Yanfly.Util || {};
Yanfly.Util.getRange = function(n, m) {
var result = [];
for (var i = n; i <= m; ++i) result.push(i);
return result;
};