//============================================================================= // RegionTerrain.js // ---------------------------------------------------------------------------- // Copyright (c) 2015 Triacontane // This software is released under the MIT License. // http://opensource.org/licenses/mit-license.php // ---------------------------------------------------------------------------- // Version // 2.0.1 2017/02/07 端末依存の記述を削除 // 2.0.0 2016/12/10 機能を大幅に追加し、有効/無効にするリージョンIDおよび地形タグを複数指定できるようになりました。 // 1.0.0 2016/01/12 初版 // ---------------------------------------------------------------------------- // [Blog] : http://triacontane.blogspot.jp/ // [Twitter]: https://twitter.com/triacontane/ // [GitHub] : https://github.com/triacontane/ //============================================================================= /*: @plugindesc Tile attribute plugin @author Triacontane @url https://triacontane.blogspot.com/ @license MIT License @help English Help Translator: munokura This is an unofficial English translation of the plugin help, created to support global RPG Maker users. Feedback is welcome to improve translation quality (see: https://github.com/munokura/triacontane-MV-plugins ). Original plugin by Triacontane. Please check the latest official version at: https://triacontane.blogspot.com ----- Adds or disables the following tile attributes. - Ladders - Bushes - Counters - Damage Floors Multiple values can be specified, separated by commas. If no attribute is specified, leave the parameter empty. If a disabled attribute and an enabled attribute overlap, the disabled attribute takes precedence. This plugin does not have any plugin commands. Terms of Use: You may modify and redistribute this plugin without permission from the author, and there are no restrictions on its use (commercial, 18+, etc.). This plugin is now yours. @param 梯子ID @text ladder id @desc Region ID to assign ladder attribute. Please specify numbers separated by commas. (Same below) Example: 1,2,3 @param 茂みID @text Bush ID @desc Region ID to add bush attribute to @param カウンターID @text Counter ID @desc Region ID to assign counter attribute to @param ダメージ床ID @text Damage Floor ID @desc Region ID to grant damage floor attribute @param 梯子無効ID @text Ladder Invalid ID @desc Region ID for which to disable ladder attributes @param 茂み無効ID @text Bushes Invalid ID @desc Region ID to disable bush attribute @param カウンター無効ID @text Counter Invalid ID @desc Region ID for which to disable counter attributes @param ダメージ床無効ID @text Damage Floor Invalid ID @desc Region ID to disable damage floor attribute @param 梯子地形 @text ladder terrain @desc Terrain tag that gives ladder attributes @param 茂み地形 @text Bushes @desc Terrain tag that gives bush attributes @param カウンター地形 @text Counter Terrain @desc Terrain tag that grants counter attributes @param ダメージ床地形 @text Damage Floor Terrain @desc Terrain tag that grants damage floor attribute @param 梯子無効地形 @text Ladder-invalid terrain @desc Terrain tag that disables ladder attributes @param 茂み無効地形 @text Brush-free terrain @desc Terrain tag that disables bush attributes @param カウンター無効地形 @text Counter-ineffective terrain @desc Terrain tag that disables counter attributes @param ダメージ床無効地形 @text Damage floor void terrain @desc Terrain tag that disables damage floor attributes */ /*:ja @plugindesc タイル属性付与プラグイン @author トリアコンタン @help 以下のタイル属性を付与もしくは無効化します。 ・梯子 ・茂み ・カウンター ・ダメージ床 値はカンマ区切りで複数指定が可能です。 指定しない場合はパラメータを空にしてください。 無効設定と有効設定が重複した場合、無効設定が優先されます。 このプラグインにはプラグインコマンドはありません。 利用規約: 作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等) についても制限はありません。 このプラグインはもうあなたのものです。 @param 梯子ID @text 梯子ID @desc 梯子属性を付与するリージョンID。カンマ区切りで数字を指定してください。(以下同様)例:1,2,3 @param 茂みID @text 茂みID @desc 茂み属性を付与するリージョンID @param カウンターID @text カウンターID @desc カウンター属性を付与するリージョンID @param ダメージ床ID @text ダメージ床ID @desc ダメージ床属性を付与するリージョンID @param 梯子無効ID @text 梯子無効ID @desc 梯子属性を無効化するリージョンID @param 茂み無効ID @text 茂み無効ID @desc 茂み属性を無効化するリージョンID @param カウンター無効ID @text カウンター無効ID @desc カウンター属性を無効化するリージョンID @param ダメージ床無効ID @text ダメージ床無効ID @desc ダメージ床属性を無効化するリージョンID @param 梯子地形 @text 梯子地形 @desc 梯子属性を付与する地形タグ @param 茂み地形 @text 茂み地形 @desc 茂み属性を付与する地形タグ @param カウンター地形 @text カウンター地形 @desc カウンター属性を付与する地形タグ @param ダメージ床地形 @text ダメージ床地形 @desc ダメージ床属性を付与する地形タグ @param 梯子無効地形 @text 梯子無効地形 @desc 梯子属性を無効化する地形タグ @param 茂み無効地形 @text 茂み無効地形 @desc 茂み属性を無効化する地形タグ @param カウンター無効地形 @text カウンター無効地形 @desc カウンター属性を無効化する地形タグ @param ダメージ床無効地形 @text ダメージ床無効地形 @desc ダメージ床属性を無効化する地形タグ */ (function () { 'use strict'; var pluginName = 'RegionTerrain'; var getParamString = function (paramNames) { var value = getParamOther(paramNames); return value === null ? '' : value; }; var getParamOther = function (paramNames) { if (!Array.isArray(paramNames)) paramNames = [paramNames]; for (var i = 0; i < paramNames.length; i++) { var name = PluginManager.parameters(pluginName)[paramNames[i]]; if (name) return name; } return null; }; var getParamArrayString = function (paramNames) { var values = getParamString(paramNames).split(','); for (var i = 0; i < values.length; i++) values[i] = values[i].trim(); return values; }; var getParamArrayNumber = function (paramNames, min, max) { var values = getParamArrayString(paramNames); if (arguments.length < 2) min = -Infinity; if (arguments.length < 3) max = Infinity; for (var i = 0; i < values.length; i++) { if (!isNaN(parseInt(values[i], 10))) { values[i] = (parseInt(values[i], 10) || 0).clamp(min, max); } else { values.splice(i--, 1); } } return values; }; //============================================================================= // パラメータの取得と整形 //============================================================================= var paramLadderRegionId = getParamArrayNumber(['梯子ID', 'LadderRegionId']); var paramBushRegionId = getParamArrayNumber(['茂みID', 'BushRegionId']); var paramCounterRegionId = getParamArrayNumber(['カウンターID', 'CounterRegionId']); var paramDamageFloorRegionId = getParamArrayNumber(['ダメージ床ID', 'DamageFloorRegionId']); var paramLadderTerrain = getParamArrayNumber(['梯子地形', 'LadderTerrain']); var paramBushTerrain = getParamArrayNumber(['茂み地形', 'BushTerrain']); var paramCounterTerrain = getParamArrayNumber(['カウンター地形', 'CounterTerrain']); var paramDamageFloorTerrain = getParamArrayNumber(['ダメージ床地形', 'DamageFloorTerrain']); var paramLadderDisRegionId = getParamArrayNumber(['梯子無効ID', 'LadderDisRegionId']); var paramBushDisRegionId = getParamArrayNumber(['茂み無効ID', 'BushDisRegionId']); var paramCounterDisRegionId = getParamArrayNumber(['カウンター無効ID', 'CounterDisRegionId']); var paramDamageFloorDisRegionId = getParamArrayNumber(['ダメージ床無効ID', 'DamageFloorDisRegionId']); var paramLadderDisTerrain = getParamArrayNumber(['梯子無効地形', 'LadderDisTerrain']); var paramBushDisTerrain = getParamArrayNumber(['茂み無効地形', 'BushDisTerrain']); var paramCounterDisTerrain = getParamArrayNumber(['カウンター無効地形', 'CounterDisTerrain']); var paramDamageFloorDisTerrain = getParamArrayNumber(['ダメージ床無効地形', 'DamageFloorDisTerrain']); var _Game_Map_isLadder = Game_Map.prototype.isLadder; Game_Map.prototype.isLadder = function (x, y) { if (this.isDisLadderOfRegion(x, y)) return false; if (this.isLadderOfRegion(x, y)) return true; return _Game_Map_isLadder.apply(this, arguments); }; Game_Map.prototype.isLadderOfRegion = function (x, y) { var regionId = this.regionId(x, y); var terrainTag = this.terrainTag(x, y); return paramLadderRegionId.contains(regionId) || paramLadderTerrain.contains(terrainTag); }; Game_Map.prototype.isDisLadderOfRegion = function (x, y) { var regionId = this.regionId(x, y); var terrainTag = this.terrainTag(x, y); return paramLadderDisRegionId.contains(regionId) || paramLadderDisTerrain.contains(terrainTag); }; var _Game_Map_isBush = Game_Map.prototype.isBush; Game_Map.prototype.isBush = function (x, y) { if (this.isDisBushOfRegion(x, y)) return false; if (this.isBushOfRegion(x, y)) return true; return _Game_Map_isBush.apply(this, arguments); }; Game_Map.prototype.isBushOfRegion = function (x, y) { var regionId = this.regionId(x, y); var terrainTag = this.terrainTag(x, y); return paramBushRegionId.contains(regionId) || paramBushTerrain.contains(terrainTag); }; Game_Map.prototype.isDisBushOfRegion = function (x, y) { var regionId = this.regionId(x, y); var terrainTag = this.terrainTag(x, y); return paramBushDisRegionId.contains(regionId) || paramBushDisTerrain.contains(terrainTag); }; var _Game_Map_isCounter = Game_Map.prototype.isCounter; Game_Map.prototype.isCounter = function (x, y) { if (this.isDisCounterOfRegion(x, y)) return false; if (this.isCounterOfRegion(x, y)) return true; return _Game_Map_isCounter.apply(this, arguments); }; Game_Map.prototype.isCounterOfRegion = function (x, y) { var regionId = this.regionId(x, y); var terrainTag = this.terrainTag(x, y); return paramCounterRegionId.contains(regionId) || paramCounterTerrain.contains(terrainTag); }; Game_Map.prototype.isDisCounterOfRegion = function (x, y) { var regionId = this.regionId(x, y); var terrainTag = this.terrainTag(x, y); return paramCounterDisRegionId.contains(regionId) || paramCounterDisTerrain.contains(terrainTag); }; var _Game_Map_isDamageFloor = Game_Map.prototype.isDamageFloor; Game_Map.prototype.isDamageFloor = function (x, y) { if (this.isDisDamageFloorOfRegion(x, y)) return false; if (this.isDamageFloorOfRegion(x, y)) return true; return _Game_Map_isDamageFloor.apply(this, arguments); }; Game_Map.prototype.isDamageFloorOfRegion = function (x, y) { var regionId = this.regionId(x, y); var terrainTag = this.terrainTag(x, y); return paramDamageFloorRegionId.contains(regionId) || paramDamageFloorTerrain.contains(terrainTag); }; Game_Map.prototype.isDisDamageFloorOfRegion = function (x, y) { var regionId = this.regionId(x, y); var terrainTag = this.terrainTag(x, y); return paramDamageFloorDisRegionId.contains(regionId) || paramDamageFloorDisTerrain.contains(terrainTag); }; })();