code:
//=============================================================================
// TRP_ParticleExOption.js
//=============================================================================
/*:
 * @plugindesc TRP_Particle負荷オプション追加
 * @author Thirop
 *
 * @param name
 * @text オプション名
 * @desc オプションに表示する名称
 * @type string
 * @default パーティクル演出量
 *
 * @param index
 * @text 表示順
 * @desc オプションの上から何番目に表示するか。(正しく反映するにはプラグインをなるべく下に配置）
 * @type number
 * @default 999
 *
 * @param levels
 * @text 負荷設定リスト
 * @desc 各段階の負荷設定
 * @type struct<OptionLevel>[]
 * @default ["{\"name\":\"最高\",\"value\":\"0\"}","{\"name\":\"高\",\"value\":\"2000\"}","{\"name\":\"中\",\"value\":\"1000\"}","{\"name\":\"低\",\"value\":\"300\"}","{\"name\":\"最低\",\"value\":\"100\"}"]
 *
 */
//=============================================================================

/*~struct~OptionLevel:
 * @param name
 * @text 負荷表示名
 * @desc 選択時のオプション表示名
 * @default 最高
 *
 * @param value
 * @text 発生キャパシティ
 * @desc パーティクル発生能力の値。(maxコマンドと同じ仕様。0で制限無し)
 * @default 0
 * @type number
 * @min 0
 */

(function () {
	var parameters = PluginManager.parameters('TRP_ParticleExOption');
	parameters = JSON.parse(JSON.stringify(parameters, function (key, value) {
		try {
			return JSON.parse(value);
		} catch (e) {
			try {
				return eval(value);
			} catch (e) {
				return value;
			}
		}
	}));

	var commandIndex = Number(parameters.index);
	var commandName = parameters.name;
	var commandLevels = parameters.levels;

	var DEFAULT_LEVEL = { name: '無制限', value: 0 };
	var TARGET_SYMBOL = 'trpParticleNumLevel';

	//=============================================================================
	// ConfigManager
	//=============================================================================
	ConfigManager.trpParticleNumLevel = 0;

	var _ConfigManager_load = ConfigManager.load;
	ConfigManager.load = function () {
		_ConfigManager_load.call(this);
		this.applyTrpParticleNum();
	};

	var _ConfigManager_save = ConfigManager.save;
	ConfigManager.save = function () {
		_ConfigManager_save.call(this);
		this.applyTrpParticleNum();
	};

	var _ConfigManager_makeData = ConfigManager.makeData;
	ConfigManager.makeData = function () {
		var config = _ConfigManager_makeData.call(this);
		config.trpParticleNumLevel = this.trpParticleNumLevel || 0;
		return config;
	};

	var _ConfigManager_applyData = ConfigManager.applyData;
	ConfigManager.applyData = function (config) {
		_ConfigManager_applyData.call(this, config);

		this.trpParticleNumLevel = Number(config.trpParticleNumLevel) || 0;
	};

	ConfigManager.applyTrpParticleNum = function () {
		if ($gameScreen && $gameScreen._particle) {
			$gameScreen._particle.resetMaxParticlesIfNotCustomValueSet();
		}
	};

	ConfigManager.trpParticleNum = function () {
		var level = commandLevels[this.trpParticleNumLevel] || commandLevels[0] || DEFAULT_LEVEL;
		return level.value;
	};

	//=============================================================================
	// Game_Particle
	//=============================================================================
	Game_Particle.prototype.resetMaxParticlesIfNotCustomValueSet = function () {
		if (this._customMaxValueSet) return;
		this._maxParticles = ConfigManager.trpParticleNum();
	};

	Game_Particle.prototype.resetMaxParticles = function () {
		this._maxParticles = ConfigManager.trpParticleNum();
		this._customMaxValueSet = false;
	};

	Object.defineProperty(Game_Particle.prototype, 'maxParticles', {
		get: function () {
			return this._maxParticles || 0;
		}, set: function (value) {
			this._maxParticles = value || 0;
			this._customMaxValueSet = true;
		},
		configurable: true
	});

	//=============================================================================
	// Window_Options
	//=============================================================================
	var _Window_Options_makeCommandList = Window_Options.prototype.makeCommandList;
	Window_Options.prototype.makeCommandList = function () {
		_Window_Options_makeCommandList.call(this);

		this.addCommand(commandName, TARGET_SYMBOL);
		var command = this._list.pop();
		var index = commandIndex.clamp(0, this._list.length);
		this._list.splice(index, 0, command);
	};

	var _Window_Options_statusText = Window_Options.prototype.statusText;
	Window_Options.prototype.statusText = function (index) {
		var symbol = this.commandSymbol(index);
		if (symbol === TARGET_SYMBOL) {
			var value = this.getConfigValue(symbol);
			return this.trpParticleNumText(value);
		} else {
			return _Window_Options_statusText.call(this, index);
		}
	};

	Window_Options.prototype.trpParticleNumText = function (value) {
		var level = commandLevels[value];
		if (!level) level = commandLevels[0] || DEFAULT_LEVEL;
		return level.name;
	};

	var _Window_Options_processOk = Window_Options.prototype.processOk;
	Window_Options.prototype.processOk = function () {
		var index = this.index();
		var symbol = this.commandSymbol(index);
		if (symbol === TARGET_SYMBOL) {
			this.changeTrpParticleNumValue(symbol, -1);
		} else {
			_Window_Options_processOk.call(this);
		}
	};

	Window_Options.prototype.changeTrpParticleNumValue = function (symbol, delta) {
		var value = this.getConfigValue(symbol);
		value += delta;
		value = value.clamp(0, commandLevels.length - 1);

		this.setConfigValue(symbol, value);
		this.redrawItem(this.findSymbol(symbol));
		SoundManager.playCursor();
	};

	var _Window_Options_cursorRight = Window_Options.prototype.cursorRight;
	Window_Options.prototype.cursorRight = function (wrap) {
		var index = this.index();
		var symbol = this.commandSymbol(index);
		if (symbol === TARGET_SYMBOL) {
			this.changeTrpParticleNumValue(symbol, -1);
		} else {
			_Window_Options_cursorRight.call(this, wrap);
		}
	};

	var _Window_Options_cursorLeft = Window_Options.prototype.cursorLeft;
	Window_Options.prototype.cursorLeft = function (wrap) {
		var index = this.index();
		var symbol = this.commandSymbol(index);
		if (symbol === TARGET_SYMBOL) {
			this.changeTrpParticleNumValue(symbol, 1);
		} else {
			_Window_Options_cursorLeft.call(this);
		}
	};

})();

repo_name: dazed/translations

license: unknown


code:
/*:
 * @help
 * aura_b <対象:---> ＠2020/5/5
 * aura_b2 <対象:---> ＠2020/5/5
 *
 * @requiredAssets img/particles/snow_particle2g
 * @requiredAssets img/particles/line_oval3
 * @requiredAssets img/particles/circle3g
 */


code:
//=============================================================================
// TRP_ParticlePreset.js
//=============================================================================
/*:
 * @help
 * aura_bp <対象:character> ＠キャラ_play:青白い粒子と集中線拡散
 * aura_bp2 <対象:character> ＠キャラ_play:青白いサークル拡大
 * aura_static_b <対象:character> ＠キャラ:もやもやのオーラ(アニメ画像使用)
 * black_particle_w <対象:weather> ＠天候:黒いパーティクル
 * blizard_w <対象:weather> ＠天候:吹雪
 * bubble_c <対象:---> ＠キャラ:キャラを包む泡。attach推奨
 * bubble_cp <対象:character> ＠キャラ_play:穴から吹き出す泡
 * bubble_w <対象:weather> ＠天候:水中の泡
 * charm_bw <対象:weather> ＠天候:画面全体ハート
 * click <対象:click> ＠click:マウスクリック/タップ用1
 * click2 <対象:click> ＠click:マウスクリック/タップ用2
 * cloud_shadow_w <対象:screen> ＠天候:雲の影
 * cloud_w <対象:screen> ＠天候:雲
 * dark_hole_r <対象:region> ＠リージョン:穴からキラキラ吹き上げる光
 * dark_hole_r_2 <対象:region> ＠リージョン:穴から吹き上げる線形の光
 * dark_hole_r_3 <対象:region> ＠リージョン:穴の中のもやもや
 * darkness_s <対象:screen> ＠スクリーン:暗闇の視界制限
 * diamonddust_w <対象:weather> ＠天候:キラキラ漂うダイヤモンドダスト
 * diamonddust_w2 <対象:weather> ＠天候:キラキラ漂うダイヤモンドダスト2
 * drag <対象:character> ＠drag:マウスドラッグ用
 * dust_walk <対象:walk> ＠歩行:土煙
 * explode_cp_1 <対象:character> ＠キャラ:爆発前のサークル収束
 * explode_cp_2 <対象:character> ＠キャラ:爆発の炎
 * explode_cp_3 <対象:character> ＠キャラ:爆発時のサークル発散
 * explode_cp_4 <対象:character> ＠キャラ:爆発後のチカチカする円
 * fire_c <対象:character> ＠キャラ:大きな炎
 * fireworks_c <対象:character> ＠キャラ:打ち上げ花火
 * fireworks_dragon_c <対象:character> ＠キャラ:噴出タイプの花火
 * fish_w <対象:weather> ＠天候:水中の影
 * flare_s <対象:screen> ＠スクリーン:太陽光のフレア
 * flash_s <対象:screen> ＠スクリーン:太陽光のフラッシュ
 * flower_walk <対象:walk> ＠歩行:歩いた跡に花(タイル使用)
 * fog_shadow_w <対象:screen> ＠天候:モヤの影
 * fog_w <対象:weather> ＠天候:薄いフォグ
 * fog_w2 <対象:screen> ＠天候:濃いめのモヤ
 * fuss_c <対象:character> ＠キャラ:乱闘中っぽいアニメ調の煙
 * fuss_startdash <対象:startdash> ＠スタートダッシュ:アニメ調の煙
 * fuss_walk <対象:walk> ＠歩行:アニメ調の煙
 * grass_walk <対象:walk> ＠歩行:飛び散る草
 * illumination_w <対象:weather> ＠天候:カラフルなイルミネーション
 * kira_blue_c <対象:character> ＠キャラ:青いキラキラエフェクト
 * light_float_cp <対象:character> ＠キャラ_play:光柱が頭上に向かって消える
 * light_floor_r <対象:region> ＠リージョン:キラキラ点滅する小さな光粒
 * light_leak_s <対象:screen> ＠スクリーン:淡いライトリーク
 * light_leak_s2 <対象:screen> ＠スクリーン:青&緑のライトリーク
 * light_pillar_r <対象:region> ＠リージョン:空エリアの光の柱
 * light_pillar_w <対象:weather> ＠天候:上部からの光柱。横スク用マップ用
 * light_r <対象:region> ＠region:テスト用1
 * magic_circle_c <対象:character> ＠キャラ:魔法陣の幾何学エフェクト
 * magma_r <対象:region> ＠リージョン:マグマの床
 * mahoujin_c <対象:character> ＠キャラ:魔法陣上のキラキラ光粒
 * mahoujin_c2 <対象:character> ＠キャラ:魔法陣上の光線演出
 * monster_c <対象:character> ＠キャラ:中央から光球が発生して上に
 * monster_cp <対象:character> ＠キャラ:パーティクルが収束
 * monster_cp2 <対象:character> ＠キャラ:集中線が発散。
 * orb_c <対象:character> ＠キャラ:オーブの波動
 * orb_cp <対象:character> ＠キャラ_play:青白いキラキラ光粒が発散
 * particle <対象:character> ＠テスト用
 * particle_w <対象:weather> ＠天候:ゆらゆら上昇する光粒
 * petal_w <対象:weather> ＠天候:桜の花びら
 * poison_r <対象:region> ＠リージョン:毒の沼
 * rain_fog_w <対象:weather> ＠天候:雨天時のモヤ
 * rain_w <対象:weather> ＠天候:しとしと雨
 * rain_w2 <対象:weather> ＠天候:強めの雨
 * rain_w3 <対象:weather> ＠天候:本降りの雨
 * ripple_r <対象:region> ＠リージョン:水たまりの波紋
 * ripple_walk <対象:walk> ＠歩行:水の波紋
 * smoke_c <対象:character> ＠キャラ:焚き火の煙
 * smoke_c2 <対象:character> ＠キャラ:fire用の大きな煙
 * snow_w <対象:weather> ＠天候:うっすらと降る雪
 * snow_w2 <対象:weather> ＠天候:雪の結晶
 * sparks_c <対象:character> ＠キャラ:焚き火の火の粉
 * sparks_w <対象:weather> ＠天候:薄っすらと舞い上がる火の粉
 * splash_walk <対象:walk> ＠歩行:水しぶき
 * statue_orb_c <対象:character> ＠キャラ:石像のオーブから出る光粒
 * thunder_w <対象:weather> ＠天候:ピカッと一瞬光る稲妻
 * thunder_w2 <対象:weather> ＠天候:黄色の稲妻
 * warp_red_c <対象:character> ＠キャラ:赤魔法陣ワープの集中線
 * warp_red_cp <対象:character> ＠キャラ:ワープ直後の幾何学エフェクト
 *
 * @requiredAssets img/particles/snow_particle2g
 * @requiredAssets img/particles/line_oval3
 * @requiredAssets img/particles/circle3g
 * @requiredAssets img/particles/ANIM:Darkness2:12:M
 * @requiredAssets img/particles/particle8
 * @requiredAssets img/particles/particle5
 * @requiredAssets img/particles/snow_particle2
 * @requiredAssets img/particles/snow_particle1
 * @requiredAssets img/particles/bubble1
 * @requiredAssets img/particles/heart4g
 * @requiredAssets img/particles/particle1
 * @requiredAssets img/particles/circle
 * @requiredAssets img/particles/cloud3
 * @requiredAssets img/particles/cloud2
 * @requiredAssets img/particles/cloud1
 * @requiredAssets img/particles/shine2
 * @requiredAssets img/particles/smoke2
 * @requiredAssets img/particles/cloud2s
 * @requiredAssets img/particles/shine_thin3
 * @requiredAssets img/particles/particle2
 * @requiredAssets img/particles/smog1
 * @requiredAssets img/particles/circle2
 * @requiredAssets img/particles/smog2
 * @requiredAssets img/particles/smoke1
 * @requiredAssets img/particles/flare
 * @requiredAssets img/particles/fish1
 * @requiredAssets img/particles/flare2
 * @requiredAssets img/particles/cartoon_fuss2
 * @requiredAssets img/particles/cartoon_fuss1
 * @requiredAssets img/particles/flame1
 * @requiredAssets img/particles/particle4
 * @requiredAssets img/particles/shine3
 * @requiredAssets img/particles/line_oval1
 * @requiredAssets img/particles/hexagon_line3
 * @requiredAssets img/particles/hexagon1
 * @requiredAssets img/particles/line2
 * @requiredAssets img/particles/line_oval2
 * @requiredAssets img/particles/ripple1g
 * @requiredAssets img/particles/petal1
 * @requiredAssets img/particles/line_rain2
 * @requiredAssets img/particles/line_rain1
 * @requiredAssets img/particles/ripple2
 * @requiredAssets img/particles/snow2
 * @requiredAssets img/particles/snow5g
 * @requiredAssets img/particles/thunder1
 * @requiredAssets img/particles/thunder2
 * @requiredAssets img/particles/square_line1
 */
var $dataTrpParticlePreset = {
	//システム用
	click: [[[0, 1, 0.85, 0.5, 1, 0], 0, 0], [[0, 1.5, 0.5, 1, 1, 0], 0.5, 0, 0], [[0, 200, 1, 200], 0.5, 0, 0], [[0, "#0031ff", 0.25, "#eaff00", 0.5, "#00ff04", 0.75, "#7b00ff", 1, "#ff0000"], 0, 0], 1, [0, 300], 0, [0, 360], [0, 0], 0, 0, [0.4, 0.6], 1, 0.001, 1, 1, 0.01, 1000, [0, 0], 0, [0, 0], null, null, 0, 0, "particle1", 12, "click:マウスクリック/タップ用1"],
	click2: [[[0, 0.2, 1, 0], 0, 0], [[0, 0, 0.25, 0.75, 1, 1.5], 1, 0, 0], [[0, 0, 1, 0], 1, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [0, 360], [0, 0], 0, 0, [0.35, 0.35], null, 0.001, 1, 1, 0.0011, 10000, [0, 0], 0, [0, 0], null, null, 0, 0, "circle", 12, "click:マウスクリック/タップ用2"],
	drag: [[[0, 1, 1, 1], 0, 0], [[0, 1, 0.85, 0.5, 1, 0], 0.999, 0, 0], [[0, 0, 1, 0], 1, 0, 0], [[0, "#96abff", 1, "#172eff"], 0, 0], 0, [0, 0], 0, [0, 360], [0, 0], 0, 0, [0.3, 0.3], 1, 0.0005, 1, 0, 0.0011, 10000, [0, 0], 0, [0, 0], null, null, 0, 0, "particle2", 0, "drag:マウスドラッグ用"],

	//水中マップ
	bubble_w: [[[0, 0, 0.2, 0.6, 0.95, 0.6, 1, 0], 0, 0], [[0, 0, 0.2, 0.3, 0.95, 0.7, 1, 0.8], 0.4, 0, 0], [[0, 1, 0.2, 50, 1, 50], 0.5, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [-90, -90], [0, 0], 0, 0, [1, 3], null, 0.2, 1, 0, -1, 10000, [0, 0], 1, [0, 0], [-408, -312, 816, 624], null, 0, 0, "bubble1", 6,
		"天候:水中の泡"],
	bubble_cp: [[[0, 0, 0.2, 0.6, 0.9, 0.6, 1, 0], 0, 0], [[0, 0, 0.2, 0.2, 0.9, 0.2, 1, 0.3], 0.1, 0, 0], [[0, 1, 0.2, 100, 1, 100], 0.5, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [-90, -90], [0, 0], 0, 0, [1, 3], null, 0.05, 1, 0, 1, 10000, [0, 0], 1, [0, 0], [-24, 0, 48, 0], null, 0, 0, "bubble1", 0,
		"キャラ_play:穴から吹き出す泡"],
	bubble_c: [[[0, 0, 0.5, 0.7, 1, 0], 0, 0], [[0, 1, 1, 1.3], 1, 0, 0], [[0, 1, 1, 1], 1, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [-90, -90], [0, 0], 0, 0, [1, 1], null, 0.5, 1, 0, -1, 10000, [0, 0], 2, [0, 0], null, [0, -26, 3, 0], 0, 0, "bubble1", 3,
		"キャラ:キャラを包む泡。attach推奨"],
	light_pillar_w: [[[0, 0.5, 1, 0.51], 0, 0], [[0, 4, 1, 4.01], 2, 0, 0], [[0, 1, 1, 1], 1, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [90, 90], [0, 0], 0, 0, [99999, 99999], 1, 0.001, 1, 1, -1, 12, [0, 0], 1, [0, 0], [-616, -500, 1232, 300], null, 0, 0, "line_oval1", 6,
		"天候:上部からの光柱。横スク用マップ用"],
	fog_w: [[[0, 0, 0.05, 0.05, 0.9, 0.05, 1, 0], 0, 0], [[0, 4, 0.5, 4, 1, 4], 0.3, 0, 0], [[0, 70, 1, 70], 0.3, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 1, [0, 0], 0, [0, 0], [0, 0], 0, 0, [30, 30], 1, 0.3, 1, 0, -1, 10000, [0, 0], 1, [0, 0], [-508, -312, 0, 624], null, 0, 0, "cloud3,cloud2,cloud1", 6,
		"天候:薄いフォグ"],
	fish_w: [[[0, 0, 0.1, 0.4, 0.9, 0.4, 1, 0], 0, 0], [[0, 1.01, 1, 1], 0.3, 0, 0], [[0, 130, 0.2, 180, 0.4, 60, 0.6, 120, 0.8, 180, 1, 60], 0.5, 0, 0], [[0, "#000000", 1, "#000000"], 0, 0], 0, [0, 0], 0, [0, 0], [0, 0], 0, 0, [10, 10], 2, 1, 1, 0, -1, 10000, [1, 0.01], 1, [0, 0], [-500, -312, 50, 624], null, 0, 0, "fish1", 6,
		"天候:水中の影"],
	mahoujin_c: [[[0, 0, 0.1, 1, 0.2, 0, 0.3, 1, 0.4, 0, 0.5, 1, 0.6, 0, 0.7, 0, 0.8, 1, 0.9, 0, 1, 0], 0, 0], [[0, 0, 0.2, 0.2, 0.5, 0.2, 1, 0], 0.5, 0, 0], [[0, 1, 1, 1], 1, 0, 0], [[0, "#56ff89", 0.5, "#52fffc", 1, "#b3ff25"], 0, 0], 1, [0, -100], 0, [0, 0], [0, 0], 0, 0, [1, 1], 1, 0.03, 1, 0, -1, 10000, [0, 0], 3, [0, 0], null, [0, -18, 40, 0], 0, 0, "particle2", 0,
		"キャラ:魔法陣上のキラキラ光粒"],
	mahoujin_c2: [[[0, 0, 0.5, 1, 1, 0], 0, 0], [[0, 0, 0.2, 1, 0.5, 1, 1, 0], 0.8, 0, 0], [[0, 1, 1, 1], 1, 0, 0], [[0, "#ff3287", 1, "#566dff"], 0, 0], 0, [0, -150], 0, [0, 0], [0, 0], 0, 0, [1, 1], 1, 0.04, 1, 0, -1, 10000, [0, 0], 3, [0, 0], null, [0, -60, 64, 0], 0, 0, "line2,line_oval2", 0,
		"キャラ:魔法陣上の光線演出"],

	//火山マップ
	magma_r: [[[0, 1, 1, 0], 0, 0], [[0, 0, 0.2, 1.5, 0.8, 1.5, 1, 0], 0.5, 0, 0], [[0, 0, 1, 0], 1, 0, 0], [[0, "#ff3007", 0.5, "#ff5959", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [0, 360], [0, 0], 0, 0, [1, 1], 1, 0.1, 1, 0, -1, 1000, [0, 0], 0, [0, 0], null, null, 0, 0, "particle4", 7,
		"リージョン:マグマの床"],
	sparks_w: [[[0, 1, 0.5, 1, 1, 0], 0, 0], [[0, 0, 0.1, 0.15, 0.5, 0.15, 1, 0], 0.5, 0, 0], [[0, 120, 1, 50], 0.3, 0, 0], [[0, "#ff2c00", 1, "#ffbfb1"], 0, 0], 0, [0, 0], 0, [-90, -90], [0, 0], 0, 2, [0.8, 1.5], 1, 0.1, 1, 0, -1, 10000, [3, 0.1], 1, [0, 0], [-408, -224, 816, 524], null, 0, 0, "flame1", 6,
		"天候:薄っすらと舞い上がる火の粉"],
	sparks_c: [[[0, 1, 0.5, 1, 1, 0], 0, 0], [[0, 0, 0.5, 0.3, 1, 0], 0.5, 0, 0], [[0, 1, 1, 1], 0.5, 0, 0], [[0, "#ff5500", 1, "#ff8d54"], 0, 0], 0, [0, -100], 0, [-90, -90], [0, 0], 0, 2, [1, 1], 1, 0.1, 1, 0, -1, 10000, [0, 0], 1, [0, 0], [-18, -36, 36, 24], null, 0, 0, "flame1", 0,
		"キャラ:焚き火の火の粉"],
	smoke_c: [[[0, 0, 0.5, 0.8, 1, 0], 0, 0], [[0, 1, 1, 0.8], 1, 0, 0], [[0, 1, 1, 100], 0.5, 0, 0], [[0, "#7b7b7b", 0.5, "#525252", 1, "#525252"], 0, 0], 0, [0, 0], 0, [-90, -90], [0, 0], 0, 0, [1.5, 2], 0, 0.3, 1, 0, -1, 10000, [0, 0], 0, [0, -64], null, null, 0, 0, "smoke1,smoke2", 0,
		"キャラ:焚き火の煙"],
	fire_c: [[[0, 0, 0.2, 1, 0.5, 1, 1, 0], 0, 0], [[0, 0, 0.2, 1, 0.5, 1, 1, 0], 0, 0, 0], [[0, 1, 0.2, 250, 1, 150], 0.5, 0, 0], [[0, "#ff2e2e", 1, "#ffb92e"], 0, 0], 0, [0, 0], 0, [-90, -90], [0, 0], 0, 0, [1, 1], 1, 0.005, 0.5, 1, -1, 10000, [0, 0], 1, [0, 0], [-48, 12, 96, 0], null, 0, 0, "smog2,smoke2,smoke1", 0,
		"キャラ:大きな炎"],
	smoke_c2: [[[0, 0, 0.5, 0.5, 1, 0], 0, 0], [[0, 0, 0.5, 3, 1, 1], 0.5, 0, 0], [[0, 1, 0.2, 250, 1, 150], 0.5, 0, 0], [[0, "#ffffff", 1, "#7b7b7b"], 0, 0], 1, [0, 0], 0, [-90, -90], [0, 0], 0, 0, [1, 1], 4, 0.01, 0.5, 1, -1, 10000, [0, 0], 2, [0, 0], null, [0, -36, 80, 0], 0, 0, "smoke2,smoke1,smog1", 0,
		"キャラ:fire用の大きな煙"],
	explode_cp_1: [[[0, 0, 0.2, 0.5, 1, 0.5], 0, 0], [[0, 5, 0.4, 1, 1, 0], 1, 0, 0], [[0, 1, 0.3, 1, 1, 1], 1, 0, 0], [[0, "#ffffff", 1, "#ff7749"], 0, 0], 0, [0, 0], 0, [0, 0], [0, 0], 0, 0, [0.24, 0.24], null, 0.01, 1, 1, 0.011, 1, [0, 0], 0, [0, -24], null, null, 0, 0, "circle2", 0,
		"キャラ:爆発前のサークル収束"],
	explode_cp_2: [[[0, 1, 0.2, 1, 0.7, 1, 1, 0], 0, 0], [[0, 1, 0.15, 6, 0.3, 1, 0.45, 8, 0.6, 1, 0.8, 10, 1, 12], 0.1, 0, 0], [[0, 500, 0.3, 100, 1, 0], 0.3, 0, 0], [[0, "#ff7f7f", 1, "#ff7f30"], 0, 0], 0, [0, 0], 0, [0, 360], [0, 0], 0, 0, [0.3, 1], 1, 0.001, 1, 1, 0.03, 10000, [0, 0], 0, [0, -24], null, null, 0, 0, "smog1", 0,
		"キャラ:爆発の炎"],

	explode_cp_3: [[[0, 0.6, 0.2, 0.4, 1, 0], 0, 0], [[0, 0, 0.18, 4, 1, 4.5], 1, 0, 0], [[0, 1, 0.3, 1, 1, 1], 1, 0, 0], [[0, "#ffffff", 1, "#ff7749"], 0, 0], 0, [0, 0], 0, [0, 0], [0, 0], 0, 0, [1, 1], null, 0.04, 1, 0.05, 1, 1, [0, 0], 0, [0, -24], null, null, 0, 0, "circle2", 0,
		"キャラ:爆発時のサークル発散"],
	explode_cp_4: [[[0, 0, 0.1, 0.8, 0.3, 0.8, 0.4, 0, 0.5, 0.8, 0.7, 0.8, 0.8, 0, 0.9, 0.8, 1, 0], 0, 0], [[0, 0.6, 1, 0.3], 0.3, 0, 0], [[0, 1, 1, 1], 1, 0, 0], [[0, "#ff7824", 0.5, "#ffffff", 1, "#ff1515"], 0, 0], 1, [0, 0], 0, [0, 360], [0, 0], 0, 0, [0.3, 0.7], 1, 0.005, 0.8, 1, 0.25, 100, [0, 0], 3, [0, 0], null, [0, -24, 130, 0], 0, 0, "circle2", 0,
		"キャラ:爆発後のチカチカする円"],

	//花火マップ
	fireworks_c: [[[0, 0, 0.11, 1, 0.5, 1, 1, 0], 0, 0], [[0, 0.1, 0.15, 0.1, 0.8, 0.05, 1, 0], 0.8, 0, 0], [[0, 1200, 0.1, 200, 0.2, 50, 1, 1], 0.1, 0, 0], [[0, "#ff8d8d", 0.4, "#ffffff", 1, "#ffa83e"], 0, 0], 1, [0, 0], 0, [0, 360], [50, -50], 0, 0, [2, 2], 1, 0.1, 1, 200, 0.11, 10000, [0, 0], 0, [0, 0], null, null, 0, 0, "flare", 0,
		"キャラ:打ち上げ花火"],
	fireworks_dragon_c: [[[0, 1, 0.8, 1, 1, 0], 0, 0], [[0, 0.2, 1, 0], 0.8, 0, 0], [[0, 800, 0.3, 200, 1, 0], 0.5, 0, 0], [[0, "#ff8d8d", 0.4, "#ffffff", 1, "#ffa83e"], 0, 0], 1, [0, 100], 0, [-75, -105], [50, -50], 0, 0, [0.7, 1], 1, 0.01, 1, 1, -1, 10000, [0, 0], 0, [0, 0], null, null, 0, 0, "smog2", 0,
		"キャラ:噴出タイプの花火"],
	// fireworks_niagala_c:[[[0,1,0.8,1,1,0],0,0],[[0,0.3,0.8,0.15,1,0],0.8,0,0],[[0,10,1,350],1,0,0],[[0,"#ff8d8d",0.4,"#ffffff",1,"#ffa83e"],0,0],1,[0,0],0,[90,90],[50,-50],0,0,[0.7,1],1,0.003,1,1,-1,10000,[0,0],1,[0,0],[-120,-45,230,0],null,0,0,"smog2",0,
	// 	"キャラ:滝タイプの花火"],
	light_leak_s: [[[0, 0, 0.5, 0.1, 1, 0], 0, 0], [[0, 20, 1, 20], 0.2, 0, 0], [[0, 15, 1, 14], 0.5, 0, 0], [[0, "#00ff0c", 0.5, "#fff500", 1, "#ff5f5f"], 0, 0], 1, [0, 0], 0, [0, 0], [0, 0], 0, 0, [3, 5], 1, 0.15, 0.5, 0, -1, 10000, [2, 0.02], 1, [0, 0], [-408, -312, 816, 624], null, 0, 0, "particle4", 5,
		"スクリーン:淡いライトリーク"],

	//雪マップ
	blizard_w: [[[0, 1, 0.8, 1, 1, 0], 0, 0], [[0, 0.41, 1, 0.4], 0.3, 0, 0], [[0, 2000, 1, 2000], 0.5, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [15, 30], [0, 0], 0, 0, [0.13, 0.13], 1, 0.001, 1, 5, -1, 10000, [0, 0], 1, [0, 0], [-408, -412, 916, 624], null, 0, 0, "snow_particle2,snow_particle1", 6,
		"天候:吹雪"],
	snow_w: [[[0, 0, 0.2, 1, 1, 0], 0, 0], [[0, 0.2, 1, 0.2], 0.5, 0, 0], [[0, 100, 1, 100], 1, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [90, 90], [-100, 100], 0, 0, [20, 30], 1, 0.1, 1, 0, -1, 10000, [1, 0.01], 1, [0, 0], [-408, -440, 916, 40], null, 0, 0, "snow_particle1", 6,
		"天候:うっすらと降る雪"],
	snow_w2: [[[0, 0, 0.3, 0.6, 1, 0], 0, 0], [[0, 0.31, 1, 0.3], 0.1, 0, 0], [[0, 50, 1, 50], 0.75, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [90, 90], [-50, 50], 0, 0, [5, 10], 1, 0.1, 1, 0, -1, 10000, [2, 0.01], 1, [0, 0], [-408, -412, 916, 624], null, 0, 0, "snow2,snow5g", 6,
		"天候:雪の結晶"],
	diamonddust_w: [[[0, 0, 0.5, 1, 1, 0], 0, 0], [[0, 0.8, 1, 0.81], 0.2, 0, 0], [[0, 15, 1, 14], 0.5, 0, 0], [[0, "#b2f7ff", 1, "#d6ffe1"], 0, 0], 1, [0, 0], 0, [0, 360], [-120, 120], 0, 0, [1.2, 1.8], 1, 0.1, 1, 0, -1, 10000, [2, 0.02], 1, [0, 0], [-408, -312, 816, 624], null, 0, 0, "shine_thin3", 6,
		"天候:キラキラ漂うダイヤモンドダスト"],
	diamonddust_w2: [[[0, 0, 0.5, 1, 1, 0], 0, 0], [[0, 0.6, 1, 0.61], 0.3, 0, 0], [[0, 15, 1, 14], 0.5, 0, 0], [[0, "#92ff7b", 1, "#89d7ff"], 0, 0], 1, [0, 0], 0, [0, 360], [-120, 120], 0, 0, [1, 1.5], 1, 0.03, 1, 0, -1, 10000, [2, 0.02], 1, [0, 0], [-408, -312, 816, 624], null, 0, 0, "shine_thin3", 6,
		"天候:キラキラ漂うダイヤモンドダスト2"],
	illumination_w: [[[0, 0, 0.5, 1, 1, 0], 0, 0], [[0, 0.8, 1, 0.81], 0.2, 0, 0], [[0, 15, 1, 14], 0.5, 0, 0], [[0, "#e0ff14", 0.25, "#3c00ff", 0.5, "#ff4d00", 0.75, "#00bbff", 1, "#00ff45"], 0, 0], 1, [0, 0], 0, [0, 360], [-120, 120], 0, 0, [1.2, 1.8], 1, 0.03, 1, 0, -1, 10000, [2, 0.02], 1, [0, 0], [-408, -312, 816, 624], null, 0, 0, "shine_thin3,particle4,flare2", 6,
		"天候:カラフルなイルミネーション"],
	light_leak_s2: [[[0, 0, 0.5, 0.3, 1, 0], 0, 0], [[0, 1, 1, 1], 0.3, 0, 0], [[0, 15, 1, 14], 0.5, 0, 0], [[0, "#92ff7b", 1, "#89d7ff"], 0, 0], 1, [0, 0], 0, [0, 360], [-120, 120], 0, 0, [2, 4], 1, 0.4, 1, 0, -1, 10000, [2, 0.02], 1, [0, 0], [-408, -312, 816, 624], null, 0, 0, "flare", 5,
		"スクリーン:青&緑のライトリーク"],
	kira_blue_c: [[[0, 1, 0.5, 1, 1, 0], 0, 0], [[0, 1, 0.5, 1, 1, 0], 0.2, 0, 0], [[0, 60, 1, 0], 0.2, 0, 0], [[0, "#e0e6ff", 1, "#a3ffc8"], 0, 0], 0, [0, 0], 0, [-90, -90], [-90, 90], 0, 0, [0.5, 1], 1, 0.5, 1, 3, -1, 10000, [0, 0], 1, [0, 0], [-24, 0, 48, -48], null, 0, 0, "shine_thin3", 0,
		"キャラ:青いキラキラエフェクト"],

	//闇マップ
	dark_hole_r: [[[0, 1, 0.1, 1, 0.15, 0, 0.2, 1, 0.4, 1, 0.45, 0, 0.5, 1, 0.8, 1, 0.84, 0, 0.88, 1, 0.92, 0, 0.96, 1, 1, 0], 0, 0], [[0, 0.35, 0.5, 0.25, 1, 0], 0.2, 0, 0], [[0, 200, 1, 100], 0.3, 0, 0], [[0, "#1a6dad", 1, "#a3ffc8"], 0, 0], 0, [0, 0], 0, [-90, -90], [0, 0], 0, 0, [0.5, 1.5], 0, 0.3, 1, 0, -1, 10000, [3, 0.01], 0, [0, 0], null, null, 0, 0, "shine2", 7,
		"リージョン:穴からキラキラ吹き上げる光"],
	dark_hole_r_2: [[[0, 1, 0.5, 1, 1, 0], 0, 0], [[0, 1, 0.5, 1, 1, 0], 0.3, 0, 0], [[0, 200, 1, 100], 1, 0, 0], [[0, "#073f74", 1, "#78f4e1"], 0, 0], 0, [0, 0], 0, [-90, -90], [0, 0], 0, 0, [0.8, 0.8], 1, 0.1, 1, 0, -1, 10000, [0, 0], 0, [0, 0], null, null, 0, 0, "line_oval3", 7,
		"リージョン:穴から吹き上げる線形の光"],
	dark_hole_r_3: [[[0, 0, 0.5, 0.3, 1, 0], 0, 0], [[0, 0, 0.5, 2, 1, 3], 0.5, 0, 0], [[0, 1, 1, 1], 1, 0, 0], [[0, "#00acff", 1, "#b70eff"], 0, 0], 0, [0, 0], 0, [0, 0], [0, 0], 0, 2, [0.5, 1.5], 3, 0.5, 1, 1, -1, 10000, [0, 0], 0, [0, 0], null, null, 0, 0, "smoke2", 7,
		"リージョン:穴の中のもやもや"],
	poison_r: [3, [[0, 0, 0.5, 0.5, 1, 0]], [[0, 0, 0.8, 0.4, 1, 0.5], 0.25], [[0, 1, 1, 1], 1], [[0, "#57005f", 1, "#69005d"]], 0, [0, 0], null, [-90, -90], [0, 0], 0, 0, [0.6, 1.2], 2, 0.5, 0.5, 1, -1, 10000, [0, 0], 0, [0, 0], null, 0, 0, "circle2", 7,
		"リージョン:毒の沼"],
	darkness_s: [3, [[0, 0, 0.5, 0.8, 1, 0]], [[0, 8, 0.5, 8, 1, 8], 0.5], [[0, 1, 1, 1], 1], [[0, "#000000", 1, "#000000"]], 0, [0, 0], null, [0, 360], [0, 0], 0, 0, [2, 2], 2, 0.04, 1, 1, -1, 10000, [0, 0], 3, [0, 0], [0, 0, 450, 400], 0, 0, "smoke2,cloud2s", 5,
		"スクリーン:暗闇の視界制限"],
	monster_cp: [3, [[0, 0, 0.1, 1, 0.9, 1, 1, 0]], [[0, 5, 1, 0.3], 0.3], [[0, -220, 1, -220], 1], [[0, "#3714ff", 1, "#0022ff"]], 0, [0, 0], null, [0, 0], [0, 0], 0, 0, [0.3, 0.8], 1, 0.01, 1, 2, 0.4, 10000, [0, 0], 3, [0, 0], [0, -24, 100, 80], 0, 0, "particle4", 0,
		"キャラ:パーティクルが収束"],
	monster_cp2: [3, [[0, 0, 0.3, 1, 1, 0]], [[0, 2.5, 0.3, 1, 1, 0.5], 0.8], [[0, 1200, 0.2, 200, 1, 0], 0.8], [[0, "#7b00ff", 1, "#c99bff"]], 1, [0, 0], null, [0, 360], [0, 0], 0, 0, [0.4, 0.8], 1, 0.01, 1, 3, 0.1, 10000, [0, 0], 0, [0, -24], null, 0, 0, "line_oval2", 0,
		"キャラ:集中線が発散。"],
	monster_c: [3, [[0, 0, 0.2, 1, 0.8, 1, 1, 0]], [[0, 0.75, 1, 0], 0.5], [[0, 120, 1, 121], 0.5], [[0, "#da9fff", 1, "#ec6dff"]], 0, [0, -30], null, [30, -210], [0, 0], 0, 0, [1, 1.5], 1, 0.1, 1, 1, -1, 10000, [0, 0], 0, [0, -12], null, 0, 0, "particle2", 0,
		"キャラ:中央から光球が発生して上に"],
	aura_bp: [3, [[0, 1, 0.7, 1, 1, 0]], [[0, 2, 0.15, 0.8, 0.7, 0.8, 1, 0], 0.5], [[0, 1500, 0.15, 50, 0.7, 50, 1, 100], 0.2], [[0, "#8dfffd", 1, "#ffffff"]], 0, [0, 0], null, [0, 360], [0, 0], 0, 0, [1, 1], 1, 0.0015, 1, 1, 0.1, 10000, [0, 0], 0, [0, 0], null, 0, 0, "snow_particle2g,line_oval3", 8,
		"戦闘キャラ:青白い光の粒＆集中線発散"],
	aura_bp2: [3, [[0, 1, 0.2, 1, 1, 0]], [[0, 0, 0.18, 4, 1, 4.5], 1], [[0, 1, 0.3, 1, 1, 1], 1], [[0, "#ffffff", 1, "#49d5ff"]], 0, [0, 0], null, [0, 0], [0, 0], 0, 0, [1, 1], 1, 0.04, 1, 0.05, 1, 1, [0, 0], 0, [0, 0], null, 0, 0, "circle3g", 8,
		"戦闘キャラ:青白いサークル拡大"],

	//天界,
	light_pillar_r: [3, [[0, 0, 0.3, 0.5, 0.7, 0.5, 1, 0]], [[0, 3, 1, 3], 0.4], [[0, 1, 1, 0], 1], [[0, "#ffffff", 1, "#ffffff"]], 0, [0, 0], null, [90, 90], [0, 0], 0, 0, [5, 5], 1, 1, 0.02, 1, -1, 10000, [0, 0], 0, [0, 0], null, 0, 0, "line_oval3", 7,
		"リージョン:空エリアの光の柱"],
	light_floor_r: [3, [[0, 0, 0.5, 1, 0.55, 0, 0.6, 1, 0.65, 0, 0.7, 1, 0.75, 0, 0.8, 1, 0.85, 0, 0.9, 1, 0.95, 0, 1, 0]], [[0, 0, 0.5, 0.2, 1, 0], 0.5], [[0, 20, 1, 20], 0.5], [[0, "#ffea00", 1, "#ffea00"]], 0, [0, -50], null, [-90, -90], [-120, 120], 0, 0, [1, 2], 1, 1, 1, 1, -1, 10000, [0, 0], 2, [0, 0], [0, -12, 32, 0], 0, 0, "shine3", 7,
		"リージョン:キラキラ点滅する小さな光粒"],
	particle_w: [3, [[0, 0, 0.5, 1, 1, 0]], [[0, 0.6, 1, 0.6], 0.2], [[0, 40, 1, 40], 0.2], [[0, "#ffc2c2", 1, "#fffdb9"]], 1, [0, -10], null, [-90, -90], [0, 0], 0, 0, [1.5, 4], 1, 0.1, 1, 1, -1, 10000, [5, 0.2], 1, [0, 0], [-408, -312, 816, 624], 0, 0, "particle8,particle5", 6,
		"天候:ゆらゆら上昇する光粒"],
	orb_c: [3, [[0, 0.5, 1, 0]], [[0, 0, 0.1, 2, 1, 3.5], 0.8], [[0, 1, 1, 1], 1], [[0, "#00d0ff", 1, "#a6eeff"]], 0, [0, 0], null, [0, 360], [0, 0], 0, 0, [0.6, 0.6], 1, 0.1, 1, 1, -1, 10000, [0, 0], 0, [0, -24], null, 0, 0, "ripple1g", 0,
		"キャラ:オーブの波動"],
	orb_cp: [3, [[0, 1, 1, 0]], [[0, 0, 0.1, 1, 1, 0], 0.8], [[0, 800, 0.1, 200, 1, 1], 0.5], [[0, "#ffffff", 1, "#ffffff"]], 0, [0, 0], null, [0, 360], [0, 0], 0, 0, [0.5, 0.7], 1, 0.005, 1, 1, 0.1, 10000, [0, 0], 0, [0, -26], null, 0, 0, "shine3", 0,
		"キャラ_play:青白いキラキラ光粒が発散"],
	light_float_cp: [3, [[0, 1, 1, 0]], [[0, 3, 1, 0], 0.2], [[0, 500, 1, 1], 0.5], [[0, "#ffffff", 1, "#ffffff"]], 0, [0, 0], null, [-90, -90], [0, 0], 0, 0, [0.4, 0.8], 1, 0.003, 1, 1, 0.15, 10000, [0, 0], 1, [0, 0], [-18, -150, 36, 0], 0, 0, "line_oval3", 0,
		"キャラ_play:光柱が頭上に向かって消える"],
	statue_orb_c: [3, [[0, 0, 0.5, 1, 1, 0]], [[0, 0.5, 1, 0], 0.5], [[0, 1, 1, 80], 0.5], [[0, "#ffff00", 1, "#460000"]], 0, [0, 0], null, [-180, 0], [0, 0], 0, 0, [1, 1], 1, 0.1, 1, 1, -1, 10000, [0, 0], 0, [0, -22], null, 0, 0, "cloud2", 0,
		"キャラ:石像のオーブから出る光粒"],
	magic_circle_c: [3, [[0, 0, 0.5, 1, 1, 0]], [[0, 0.25, 1, 0], 0.5], [[0, 50, 1, 50], 0.5], [[0, "#ff0707", 1, "#ffcdcd"]], 0, [0, -30], null, [-90, -90], [-120, 120], 0, 0, [0.5, 1.5], 2, 0.05, 1, 1, -1, 10000, [0, 0], 2, [0, 0], [0, -24, 24, 0], 0, 0, "hexagon_line3,hexagon1", 0,
		"キャラ:魔法陣の幾何学エフェクト"],
	warp_red_c: [3, [[0, 0, 0.5, 1, 1, 0]], [[0, 0, 0.5, 1.5, 1, 0], 0.5], [[0, 10, 1, 150], 1], [[0, "#ff3030", 1, "#ff1d1d"]], 0, [0, 0], null, [0, 360], [0, 0], 0, 0, [0.5, 1], 2, 0.03, 1, 1, -1, 10000, [0, 0], 0, [0, -24], null, 0, 0, "line_oval3,line_oval2", 0,
		"キャラ:赤魔法陣ワープの集中線"],
	warp_red_cp: [3, [[0, 0, 0.5, 1, 1, 0]], [[0, 0.5, 0.5, 0.2, 1, 0], 0.5], [[0, 1000, 0.2, 200, 1, 0], 0.5], [[0, "#9100ff", 1, "#ff0000"]], 1, [0, 0], null, [-90, -90], [-360, 360], 0, 0, [0.5, 1], 2, 0.01, 1, 1, 0.3, 10000, [0, 0], 2, [0, -24], [0, 12, 36, 0], 0, 0, "square_line1", 0,
		"キャラ:ワープ直後の幾何学エフェクト"],

	//歩行
	fuss_startdash: [[[0, 0, 0.1, 0.8, 0.5, 0.5, 1, 0], 0, 0], [[0, 0, 0.2, 0.5, 0.9, 0.5, 1, 0.12], 0.5, 0, 0], [[0, 500, 0.2, 50, 1, 0], 0.5, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [-60, -120], [-100, 100], 0, 0, [0.6, 1.2], 4, 0.01, 1, 3, 0.05, 60, [0, 0], 0, [0, 0], null, null, 0, 0, "cartoon_fuss1", 2,
		"スタートダッシュ:アニメ調の煙"],
	fuss_walk: [[[0, 0, 0.1, 0.8, 0.5, 0.5, 1, 0], 0, 0], [[0, 0, 0.3, 0.5, 0.9, 0.5, 1, 0.12], 0.5, 0, 0], [[0, 150, 1, 0], 0.5, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [-60, -120], [0, 0], 0, 0, [0.5, 1], 4, 0.1, 1, 3, -1, 60, [0, 0], 0, [0, 0], null, null, 0, 0, "cartoon_fuss2", 1,
		"歩行:アニメ調の煙"],
	dust_walk: [[[0, 0, 0.1, 0.3, 1, 0], 0, 0], [[0, 0, 0.05, 1.5, 1, 2], 0.5, 0, 0], [[0, 100, 1, 0], 0.5, 0, 0], [[0, "#a4724c", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [-150, -30], [0, 0], 0, 0, [0.7, 1.2], 0, 0.08, 0.7, 1, -1, 60, [0, 0], 2, [0, 0], null, [0, -6, 12, 0], 0, 0, "smog1", 1,
		"歩行:土煙"],
	grass_walk: [[[0, 0, 0.1, 0.8, 0.5, 0.5, 1, 0], 0, 0], [[0, 0, 0.3, 0.2, 0.9, 0.2, 1, 0.12], 0.5, 0, 0], [[0, 200, 1, 200], 0.8, 0, 0], [[0, "#005b11", 1, "#005b11"], 0, 0], 0, [0, 300], 0, [-30, -150], [-100, 200], 1, 2, [0.4, 0.6], 0, 0.25, 1, 4, -1, 60, [0, 0], 0, [0, 0], null, null, 0, 0, "flame1", 1,
		"歩行:飛び散る草"],
	flower_walk: [[[0, 0, 0.005, 1, 0.5, 1, 1, 0], 0, 0], [[0, 0, 0.005, 1, 0.5, 1, 1, 1], 0.5, 0, 0], [[0, 0, 1, 0], 0, 0, 0], [[0, "#ffffff", 0.5, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [0, 0], [0, 0], 0, 0, [0.5, 1.5], 0, 0.025, 1, 1, -1, 1000, [0, 0], 2, [0, 0], null, [0, 0, 24, 0], 0, 0, "tile:Outside_B:192,tile:Outside_B:193,tile:Outside_B:194", 1,
		"歩行:歩いた跡に花(タイル使用)"],
	splash_walk: [[[0, 0, 0.1, 0.8, 0.7, 0.5, 1, 0], 0, 0], [[0, 0, 0.3, 0.25, 0.9, 0.25, 1, 0], 0.3, 0, 0], [[0, 350, 1, 0], 0.5, 0, 0], [[0, "#0047ff", 1, "#ffffff"], 0, 0], 0, [0, 100], 0, [-30, -150], [0, 0], 0, 0, [0.4, 0.5], 1, 0.25, 1, 4, -1, 60, [0, 0], 0, [0, 0], null, null, 0, 0, "snow_particle2", 1,
		"歩行:水しぶき"],
	ripple_walk: [[[0, 0, 0.1, 0.5, 1, 0], 0, 0], [[0, 0, 0.1, 1, 1, 2], 0.4, 0, 0], [[0, 0, 1, 0], 0.5, 0, 0], [[0, "#c2cdff", 1, "#d4e6ff"], 0, 0], 0, [0, 0], 0, [0, 0], [0, 0], 0, 0, [0.5, 1], 1, 0.08, 0.7, 1, -1, 60, [0, 0], 2, [0, 0], null, [0, -4, 6, 0], 0, 0, "ripple2", 1,
		"歩行:水の波紋"],
	fuss_c: [[[0, 0, 0.1, 0.8, 0.5, 0.5, 1, 0], 0, 0], [[0, 0, 0.3, 1, 1, 2], 0.1, 0, 0], [[0, 150, 1, 0], 0.5, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [-60, -120], [0, 0], 0, 0, [0.5, 1], 4, 0.03, 1, 3, 0.5, 30, [0, 0], 1, [0, 0], [-36, 0, 72, 0], null, 0, 0, "cartoon_fuss2", 0,
		"キャラ:乱闘中っぽいアニメ調の煙"],

	//天候
	flash_s: [[[0, 0, 0.2, 0.25, 1, 0], 0, 0], [[0, 6, 1, 6], 0.9, 0, 0], [[0, 1, 1, 1], 1, 0, 0], [[0, "#ffe8ad", 1, "#ffe8ad"], 0, 0], 1, [0, 0], 0, [0, 360], [0, 0], 0, 0, [1, 1], 1, 0.2, 0.25, 0, -1, 10000, [0, 0], 0, [-500, -550], null, null, 0, 0, "flare", 5,
		"スクリーン:太陽光のフラッシュ"],
	flare_s: [[[0, 0, 0.2, 1, 0.8, 1, 1, 0], 0, 0], [[0, 6, 1, 6], 0.9, 0, 0], [[0, 1, 1, 1], 1, 0, 0], [[0, "#ffb050", 1, "#ffffff"], 0, 0], 1, [0, 0], 0, [0, 360], [0, 0], 0, 0, [1, 1], 1, 0.2, 1, 0, -1, 10000, [0, 0], 0, [-500, -550], null, null, 0, 0, "flare2", 5,
		"スクリーン:太陽光のフレア"],
	fog_w2: [[[0, 0, 0.05, 0.1, 0.9, 0.1, 1, 0], 0, 0], [[0, 4, 0.5, 4, 1, 4], 0.3, 0, 0], [[0, 70, 1, 70], 0.3, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 1, [0, 0], 0, [0, 0], [0, 0], 0, 0, [30, 30], 1, 0.3, 1, 0, -1, 10000, [0, 0], 1, [0, 0], [-616, -312, 0, 624], null, 0, 0, "cloud3,cloud2,cloud1", 5,
		"天候:濃いめのモヤ"],
	fog_shadow_w: [[[0, 0, 0.05, 0.05, 0.9, 0.05, 1, 0], 0, 0], [[0, 5, 0.5, 5, 1, 5], 0.25, 0, 0], [[0, 70, 1, 70], 0.3, 0, 0], [[0, "#000000", 1, "#000000"], 0, 0], 0, [0, 0], 0, [0, 0], [0, 0], 0, 0, [30, 30], 2, 0.3, 1, 0, -1, 10000, [0, 0], 1, [0, 0], [-616, -312, 0, 624], null, 0, 0, "cloud3,cloud2,cloud1", 5,
		"天候:モヤの影"],
	cloud_w: [[[0, 0, 0.05, 0.75, 0.9, 0.75, 1, 0], 0, 0], [[0, 10, 0.5, 10, 1, 10], 0.3, 0, 0], [[0, 70, 1, 70], 0.3, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [0, 0], [0, 0], 0, 0, [60, 60], 0, 3, 0.5, 0, -1, 10000, [0, 0], 1, [0, 0], [-616, -312, 0, 624], null, 0, 0, "cloud3,cloud2,cloud1", 5,
		"天候:雲"],
	cloud_shadow_w: [[[0, 0, 0.05, 0.2, 0.9, 0.2, 1, 0], 0, 0], [[0, 7, 0.5, 7, 1, 7], 0.3, 0, 0], [[0, 25, 1, 25], 0.3, 0, 0], [[0, "#000000", 1, "#000000"], 0, 0], 0, [0, 0], 0, [0, 0], [0, 0], 0, 0, [70, 70], 0, 3, 0.5, 0, -1, 10000, [0, 0], 1, [0, 0], [-616, -312, 0, 624], null, 0, 0, "cloud3,cloud2,cloud1", 5,
		"天候:雲の影"],
	rain_w: [[[0, 0, 0.2, 0.6, 1, 0], 0, 0], [[0, 0.3, 1, 0.3], 0.5, 0, 0], [[0, 300, 1, 300], 0.5, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [90, 90], [0, 0], 0, 0, [0.3, 0.5], 1, 0.008, 1, 0, -1, 10000, [0, 0], 1, [0, 0], [-408, -412, 916, 624], null, 0, 0, "line_rain2", 6,
		"天候:しとしと雨"],
	rain_w2: [[[0, 0, 0.2, 0.8, 0.8, 0.5, 1, 0], 0, 0], [[0, 0.84, 1, 0.85], 0.5, 0, 0], [[0, 800, 1, 800], 0.75, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [112.5, 112.5], [0, 0], 0, 0, [0.3, 0.4], 0, 0.008, 1, 0, -1, 10000, [0, 0], 1, [0, 0], [-408, -412, 916, 624], null, 0, 0, "line_rain1", 6,
		"天候:強めの雨"],
	rain_w3: [[[0, 0, 0.2, 0.8, 0.8, 0.5, 1, 0], 0, 0], [[0, 1.1, 1, 1], 2.5, 0, 0], [[0, 1500, 1, 1500], 0.75, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [112.5, 112.5], [0, 0], 0, 0, [0.15, 0.25], 1, 0.003, 1, 0, -1, 10000, [0, 0], 1, [0, 0], [-408, -412, 916, 624], null, 0, 0, "line2", 6,
		"天候:本降りの雨"],
	ripple_r: [[[0, 0.5, 0.5, 0.5, 1, 0], 0, 0], [[0, 0, 0.5, 0.6, 1, 1], 0.5, 0, 0], [[0, 0, 1, 0], 1, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [0, 0], [0, 0], 0, 2, [0.6, 1], 1, 1, 0.5, 0, -1, 10000, [0, 0], 1, [0, 0], [-408, -312, 816, 624], null, 0, 0, "ripple2", 7,
		"リージョン:水たまりの波紋"],
	rain_fog_w: [[[0, 0, 0.5, 0.2, 1, 0], 0, 0], [[0, 0.5, 1, 1], 1.5, 0, 0], [[0, 50, 0.2, 20, 1, 15], 0.5, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [-90, -90], [0, 0], 0, 2, [1, 2], 1, 0.08, 0.5, 0, -1, 10000, [0, 0], 1, [0, 0], [-408, -312, 816, 624], null, 0, 0, "smoke2", 6,
		"天候:雨天時のモヤ"],
	thunder_w: [[[0, 1, 0.2, 1, 1, 0], 0, 0], [[0, 11, 0.2, 11, 1, 11], 0.2, 0, 0], [[0, 1, 1, 1], 0.5, 0, 0], [[0, "#ffff20", 0.05, "#3300ff", 1, "#c800ff"], 0, 0], 0, [0, 0], 0, [85, 95], [0, 0], 0, 2, [0.5, 1], 1, 0.06, 0.2, 0, -1, 10000, [0, 0.02], 1, [0, 0], [-408, -412, 816, 200], null, 0, 0, "thunder1,thunder2", 6,
		"天候:ピカッと一瞬光る稲妻"],
	thunder_w2: [[[0, 1, 0.2, 1, 1, 0], 0, 0], [[0, 11, 0.2, 11, 1, 11], 0.2, 0, 0], [[0, 1, 1, 1], 0.5, 0, 0], [[0, "#ffff20", 1, "#ffff20"], 0, 0], 0, [0, 0], 0, [85, 95], [0, 0], 0, 2, [0.5, 1], 1, 0.06, 0.2, 0, -1, 10000, [0, 0.02], 1, [0, 0], [-408, -412, 816, 200], null, 0, 0, "thunder1,thunder2", 6,
		"天候:黄色の稲妻"],
	petal_w: [3, [[0, 0, 0.2, 0.8, 0.8, 0.8, 1, 0]], [[0, 0.25, 1, 0.25], 0.75], [[0, 200, 0.5, 100, 1, 200], 0.5], [[0, "#fabfff", 1, "#fce1ff"]], 1, [0, 0], null, [0, 0], [-180, 180], -1, 0, [2, 4], 4, 0.05, 1, 1, -1, 10000, [5, 0.2], 1, [0, 0], [-408, -312, 816, 624], 0, 0, "petal1", 6,
		"天候:桜の花びら"],

	//戦闘
	aura_bp: [3, [[0, 1, 0.7, 1, 1, 0]], [[0, 2, 0.15, 0.8, 0.7, 0.8, 1, 0], 0.5], [[0, 1500, 0.15, 50, 0.7, 50, 1, 100], 0.2], [[0, "#8dfffd", 1, "#ffffff"]], 0, [0, 0], null, [0, 360], [0, 0], 0, 0, [1, 1], 1, 0.0015, 1, 1, 0.1, 10000, [0, 0], 0, [0, 0], null, 0, 0, "snow_particle2g,line_oval3", 0,
		"キャラ_play:青白い粒子と集中線拡散"],
	aura_bp2: [3, [[0, 1, 0.2, 1, 1, 0]], [[0, 0, 0.18, 4, 1, 4.5], 1], [[0, 1, 0.3, 1, 1, 1], 1], [[0, "#ffffff", 1, "#49d5ff"]], 0, [0, 0], null, [0, 0], [0, 0], 0, 0, [1, 1], 1, 0.04, 1, 0.05, 1, 1, [0, 0], 0, [0, 0], null, 0, 0, "circle3g", 0,
		"キャラ_play:青白いサークル拡大"],
	aura_static_b: [3, [[0, 0, 0.5, 1, 1, 0]], [[0, 0, 1, 0.5], 0.3], [[0, 60, 1, 10], 1], [[0, "#0592ff", 1, "#0592ff"]], 0, [0, -10], null, [0, 360], [-90, 90], -1, 2, [1, 1], 1, 0.01, 1, 1, -1, 10000, [0, 0], 0, [0, 0], null, 0, 0, "ANIM:Darkness2:12:M", 0,
		"キャラ:もやもやのオーラ(アニメ画像使用)"],
	charm_bw: [3, [[0, 0, 0.3, 1, 1, 0]], [[0, 0, 0.3, 0.4, 1, 0.6], 0.5], [[0, 100, 1, 1], 0], [[0, "#dd00ff", 1, "#ffffff"]], 0, [0, 0], null, [-120, -60], [-90, 90], -1, 0, [1.5, 2.5], 0, 0.1, 1, 1, -1, 1000, [0, 0], 1, [0, 0], [-408, -312, 816, 624], 0, 0, "heart4g", 6,
		"天候:画面全体ハート"],
	black_particle_w: [3, [[0, 0, 0.5, 1, 1, 0]], [[0, 0.6, 1, 0.6], 0.2], [[0, 40, 1, 40], 0.2], [[0, "#670088", 1, "#670088"]], 1, [0, -10], null, [-90, -90], [0, 0], 0, 0, [1.5, 4], 2, 0.1, 1, 1, -1, 10000, [5, 0.2], 1, [0, 0], [-408, -312, 816, 624], 0, 0, "particle8,particle5", 6,
		"天候:黒いパーティクル"],

	//テスト用
	particle: [[[0, 0, 0.5, 1, 1, 0], 0, 0], [[0, 0, 0.5, 1, 1, 0], 0.5, 0, 0], [[0, 300, 1, 100], 1, 0, 0], [[0, "#ffffff", 1, "#ffffff"], 0, 0], 0, [0, 0], 0, [0, 360], [0, 0], 0, 0, [1, 1], 1, 0.01, 1, 1, -1, 10000, [0, 0], 0, [0, 0], null, null, 0, 0, "particle1", 0, "テスト用"],
	light_r: [[[0, 1, 0.5, 1, 1, 0], 0, 0], [[0, 0, 0.5, 1, 1, 0], 0.2, 0, 0], [[0, 10, 1, 100], 0.5, 0, 0], [[0, "#14ff1f", 1, "#ffef9d"], 0, 0], 1, [0, 0], 0, [-90, -90], [0, 0], 0, 0, [1, 2], 0, 0.2, 1, 1, -1, 10000, [0, 0], 0, [0, 0], null, null, 0, 0, "particle4", 7, "region:テスト用1"]
};


code:
//=============================================================================
// TRP_Particle_Group.js
//=============================================================================
/*:
 * @plugindesc グループ再生機能の有効化
 * @author Thirop
 *
 * 【更新履歴】
 * 2.19 2022/2/14  ロード時のエラー修正
 * 2.13 2021/11/4  隠しコマンド(flash/shake/se)に対応
 * 2.09 2021/8/18  設定名の「/h」を自動補完
 *                 座標調整が正しく反映されない不具合修正
 * 2.05 ---        設定名に「_auto:~」使用可能に修正
 * 2.00 ---        初版
 *
 */
//=============================================================================
//PRAGMA_END: groupHeader

var $dataTrpParticleGroupsPreset = $dataTrpParticleGroupsPreset || null;
var $dataTrpParticleGroups = null;

//PRAGMA: defParticleGroup
function ParticleGroup() {
	this.initialize.apply(this, arguments);
}
//PRAGMA_END: defParticleGroup

(function () {
	'use strict';
	//PRAGMA: groupPluginSetting
	var pluginName = 'TRP_Particle_Group';
	Game_Particle.GROUP_DATA_FIILE_PATH = 'TrpParticleGroups.json';
	var baseParameters = PluginManager.parameters('TRP_Particle');
	//PRAGMA_END: groupPluginSetting

	var LC = TRP_Localize.localize.bind(TRP_Localize, 'parGr');
	var NLC = TRP_Localize.noLocalize;

	var errorLog = baseParameters.errorLog === 'true';

	DataManager._databaseFiles.push({
		name: '$dataTrpParticleGroups',
		src: Game_Particle.GROUP_DATA_FIILE_PATH,
	});

	var _DataManager_loadDataFile = DataManager.loadDataFile;
	DataManager.loadDataFile = function (name, src) {
		if (src.contains('Test_') && src.contains('TrpParticleGroups')) {
			src = Game_Particle.GROUP_DATA_FIILE_PATH;
		}
		_DataManager_loadDataFile.call(this, name, src);
	};

	function supplement(defaultValue, optionArg) {
		if (optionArg === undefined) {
			return defaultValue;
		}
		return optionArg;
	};
	function supplementNum(defaultValue, optionArg) {
		return Number(supplement(defaultValue, optionArg));
	};

	var _supplementDefWords = ['default', 'def', 'd'];
	function supplementDef(defaultValue, optionArg, otherWords) {
		var value = supplement(defaultValue, optionArg);

		var defTargetWords = otherWords || [];
		if (defTargetWords) {
			defTargetWords = defTargetWords.concat(_supplementDefWords);
		} else {
			defTargetWords = _supplementDefWords;
		}

		var length = defTargetWords.length;
		for (var i = 0; i < length; i = (i + 1) | 0) {
			var target = defTargetWords[i];
			if (value === target) {
				value = defaultValue;
				break;
			}
		}
		return value;
	};
	function supplementDefNum(defaultValue, optionArg, otherWords) {
		var value = supplementDef(defaultValue, optionArg, otherWords);
		return Number(value);
	};

	//PRAGMA: groupCommandRegister
	//PRAGMA_END: groupCommandRegister

	//=============================================================================
	// Game_Particle
	//=============================================================================
	Game_Particle.groupData = function (data) {
		return this.groupDataWithName(data.name);
	};
	Game_Particle.groupDataWithName = function (name) {
		var config = $dataTrpParticleGroups[name];
		if (config) {
			return config;
		}

		config = $dataTrpParticleGroupsPreset[name];
		if (config) {
			return config;
		}

		if (name.indexOf('/h') !== name.length - 2) {
			return this.groupDataWithName(name + '/h');
		}

		return null;
	};

	var _Game_Particle_initialize = Game_Particle.prototype.initialize;
	Game_Particle.prototype.initialize = function () {
		_Game_Particle_initialize.call(this);
		this._groups = {};
		this._groupKeys = [];
	};

	var _Game_Particle_pluginCommand = Game_Particle.prototype.pluginCommand;
	Game_Particle.prototype.pluginCommand = function (interpreter, args, eventId) {
		var sub = args[0].toLowerCase();
		if (sub === 'group') {
			this.processGroupCommand(interpreter, args, eventId);
		} else {
			_Game_Particle_pluginCommand.call(this, interpreter, args, eventId);
		}
	};

	Game_Particle.prototype.processGroupCommand = function (interpreter, args, eventId) {
		var main = args.shift();
		var sub = args.shift().toLowerCase();

		//process eid
		if (!isNaN(eventId)) {
			this.processArgsEventId(args, eventId);
		}

		var tag;
		if (sub === 'set' || sub === 'play' || sub === 'edit') {
			tag = this.extractTagRegister(args);
			args.splice(-1 + Game_Particle.GROUP_COMMAND_ARGS_INDEX_TAG, 0, tag);

			var targetId = '';
			if (sub === 'set' || sub === 'play') {
				args.unshift(eventId);
				Game_Particle.prototype.particleGroupSet.apply(this, args);
				targetId = args[1];
			} else if (sub === 'edit') {

				args.unshift(eventId);
				if (Game_Particle.prototype.particleGroupEdit.apply(this, args) && interpreter) {
					interpreter.wait(1);
				}
				targetId = args[2];
			}
		} else if (sub === 'clear') {
			Game_Particle.prototype.particleGroupClear.apply(this, args);
		}
	};

	Game_Particle.GROUP_COMMAND_ARGS_INDEX_TAG = 3;
	Game_Particle.prototype.particleGroupEdit = function () { };
	Game_Particle.prototype.particleGroupSet = function (eventId, id, target, tag, name, x, y) {
		name = supplementDef(id, name) || id;
		id = this.idWithSuffix(id);

		if (!!this._groups[id]) {
			return;
		}

		x = Number(x) || 0;
		y = Number(y) || 0;

		if (!Game_Particle.groupDataWithName(name)) {
			if (errorLog) {
				throw new Error(LC('設定名:%1のグループ設定データが存在しません。', 0).format(name));
			}
			return;
		}
		if (errorLog && target === undefined) {
			throw new Error(LC('パーティクル表示コマンドの対象が設定されてません。', 2) + '(ID:' + id + ')');
		}

		//make data
		var group = new ParticleGroup(eventId, id, target, tag, name, x, y);

		this._groups[id] = group;
		this._groupKeys.push(id);
		return group;
	};

	Game_Particle.prototype.particleGroupClear = function (id, quit) {
		if (quit === 'false' || quit === 'f') {
			quit = false;
		} else if (quit === 'true' || quit === 't') {
			quit = true;
		} else {
			quit = supplementDef(false, quit);
		}

		var data = this._groups[id];
		if (data) {
			data.repeat = -1;
			if (quit) {
				var index = this._groupKeys.indexOf(id);
				this._groupKeys.splice(index, 1);
				delete this._groups[id];
			}
		}
	};

	var _Game_Particle_update = Game_Particle.prototype.update;
	Game_Particle.prototype.update = function () {
		_Game_Particle_update.call(this);

		if (!this._groups) {
			this._groups = {};
		}
		if (!this._groupKeys) {
			this._groupKeys = [];
		}
		var keys = this._groupKeys;
		var length = keys.length;
		var destroyed = false;
		for (var i = length - 1; i >= 0; i = (i - 1) | 0) {
			var key = keys[i];
			var group = this._groups[key];
			if (group && !group.destroy) {
				group.update(this);
			}

			if (!group || group.destroy) {
				keys.splice(i, 1);
				delete this._groups[key];
			}
		}
	};

	/* auto remove
	===================================*/
	var _Game_Particle_removeCharacterTargetParticles = Game_Particle.prototype.removeCharacterTargetParticles;
	Game_Particle.prototype.removeCharacterTargetParticles = function () {
		this._removeCharacterTargetParticles(this._groupKeys, this._groups);

		_Game_Particle_removeCharacterTargetParticles.call(this);
	};
	var _Game_Particle_removePartyTargetParticles = Game_Particle.prototype.removePartyTargetParticles;
	Game_Particle.prototype.removePartyTargetParticles = function () {
		this._removePartyTargetParticles(this._groupKeys, this._groups);

		_Game_Particle_removePartyTargetParticles.call(this);
	};

	var _Game_Particle_removeParticlesWithTargetTypes = Game_Particle.prototype.removeParticlesWithTargetTypes;
	Game_Particle.prototype.removeParticlesWithTargetTypes = function (types) {
		this._removeParticlesWithTargetTypes(types, this._groupKeys, this._groups);

		_Game_Particle_removeParticlesWithTargetTypes.call(this, types);
	};

	var _Game_Particle_clearTargetsParticles = Game_Particle.prototype.clearTargetsParticles;
	Game_Particle.prototype.clearTargetsParticles = function (targetTypes, targetId, keys, allData) {
		_Game_Particle_clearTargetsParticles.call(this, targetTypes, targetId, this._groupKeys, this._groups);
		_Game_Particle_clearTargetsParticles.call(this, targetTypes, targetId, keys, allData);
	};

	//=============================================================================
	// ParticleGroup
	//=============================================================================
	Game_Particle.ParticleGroup = ParticleGroup;

	ParticleGroup.prototype.initialize = function (eventId, id, target, tag, name, x, y) {
		var particleData = $gameScreen._particle.particleData(eventId, id, target, name, undefined, undefined, undefined, undefined, true);

		this.id = id;
		this.eventId = eventId;
		this.target = target;
		this.targetType = particleData.targetType;
		this.targetId = particleData.targetId;
		this.name = name;
		this.replacedName = name.replace('/h', '');
		this.tag = tag || ('group:' + id);
		this.x = x;
		this.y = y;

		this.params = {};

		this._stop = false;
		this._clear = false;
		this.quit = false;
		this.interval = 0;

		this.exceed = null;

		this.list = null;
		this.repeat = 0;

		this.destroy = false;

		this._index = -1;
		this._wait = 0;

		this.applyData();
	};
	ParticleGroup.prototype.applyData = function () {
		var data = this.data();
		this.repeat = data.repeat;

		if (data.list.length === 0) {
			data.list = [''];
		}
		this.list = data.list;
	}
	ParticleGroup.prototype.data = function () {
		return Game_Particle.groupData(this);
	};
	ParticleGroup.idSuffix = function (id) {
		return '/GROUP:' + id
	};

	Object.defineProperty(ParticleGroup.prototype, 'clear', {
		get: function () {
			return this._clear
		}, set: function (value) {
			this._clear = value;
			if (value) {
				this.repeat = -1;
				if (this.stop) {
					this.processQuit();
				}
			}
		},
		configurable: true
	});
	Object.defineProperty(ParticleGroup.prototype, 'stop', {
		get: function () {
			return this._stop
		}, set: function (value) {
			this._stop = value;
			if (value) {
				if (this.clear) {
					this.processQuit();
				}
			}
		},
		configurable: true
	});
	ParticleGroup.prototype.processQuit = function (particle = $gameScreen._particle) {
		var index = particle._groupKeys.indexOf(this.id);
		if (index >= 0) {
			particle._groupKeys.splice(index, 1);
			delete particle._groups[this.id];
		}
	};

	function activeInterpreter() {
		var interpreter;
		if ($gameTroop.inBattle() && $gameTroop.isEventRunning()) {
			interpreter = $gameTroop._interpreter;
		} else if ($gameMap.isEventRunning()) {
			interpreter = $gameMap._interpreter;
		} else {
			return null;
		}

		while (interpreter._childInterpreter) {
			interpreter = interpreter._childInterpreter;
		}
		return interpreter;
	};

	ParticleGroup.processParticleSubCommand = function (args) {
		if (baseParameters.commandNames.contains(args[0])) {
			args.shift();
		}
		return args[0];
	}

	ParticleGroup.prototype.update = function (particle) {
		if (this._wait > 0) {
			this._wait -= 1;
			return;
		}

		var list = this.data().list;
		var length = list.length;

		var suffix = ParticleGroup.idSuffix(this.id);
		$gameScreen._particle.addAutoIdSuffix(suffix);

		var interpreter = activeInterpreter();
		while (this._index < length - 1 && this._wait <= 0) {
			this._index = (this._index + 1) | 0

			var command = list[this._index];

			var args = command.split(' ');
			var isPlayCommands = false;

			ParticleGroup.processParticleSubCommand(args);

			if (!this.isCommandValid(command, this.id, this.replacedName, args)) {
				break;
			}

			switch (args[0].toLowerCase()) {
				case 'wait':
					this._wait = Number(args[1]);
					break;

				case 'edit':
				case 'set':
				case 'play':
					isPlayCommands = true;
					var tag = particle.extractTagRegister(args);
					tag = tag || this.tag;

					if (tag) {
						if (!tag.contains('tag:')) {
							tag = 'tag:' + tag;
						}
						args.push(tag);
					}
					if (args[2] === 'target') {
						args[2] = this.target;
					}
					if (/^_auto:[0-9]+$/.test(args[1])) {
						args[1] += ':' + this.replacedName + '/h';
					}
					if (args[3] && /^_auto:[0-9]+$/.test(args[3])) {
						args[3] += ':' + this.replacedName + '/h';
					}

					break;
				case 'repeat':
				case 'on':
				case 'off':
				case 'clear':
				case 'update':
				case 'animate':
				case 'move':
				case 'exceed':
				case 'screenLoop':
				case 'loop':
				case 'filter':
				case 'max':
					if (/^_auto:[0-9]+$/.test(args[1])) {
						args[1] += ':' + this.replacedName + '/h';
					}
					break;

				case 'sub':
					if (/_auto:[0-9]+$/.test(args[2])) {
						args[2] += ':' + this.replacedName + '/h';
					}
					if (/_sub:[0-9]+$/.test(args[3])) {
						args[3] += ':' + this.replacedName + '/h';
					}
					break;
			}
			if (this._wait > 0) {
				break;
			}

			particle.pluginCommand(interpreter, args, this.eventId);
			if (isPlayCommands) {
				if (this.x || this.y) {
					particle.particleUpdate([args[1], 'pos', this.x || 0, this.y || 0]);
				}
			}
		}

		$gameScreen._particle.removeAutoIdSuffix(suffix);

		if (this._wait <= 0 && this._index >= length - 1) {
			if (this.repeat >= 0) {
				this._wait = this.repeat;
				this._index = -1;
			} else {
				this.destroy = true;
			}
		}
	};

	//=============================================================================
	// command validation
	//=============================================================================
	ParticleGroup.prototype.isCommandValid = function (command, id, name, args) {
		return ParticleGroup.isCommandValid(command, id, name, args);
	};
	ParticleGroup.isCommandValid = function (command, id, groupName, args = null) {
		if (!command) return false;

		args = args || command.split(' ');
		var sub = ParticleGroup.processParticleSubCommand(args);
		if (!sub) {
			return false;
		}

		sub = sub.toLowerCase();

		//check sub commands
		switch (sub) {
			case 'wait':
				return !isNaN(args[1]) && Number(args[1]) >= 0
			case 'set':
			case 'play':
			case 'edit':
				return this._isPlayCommandValid(id, groupName, sub, args);

			case 'repeat':
			case 'on':
			case 'off':
			case 'clear':
			case 'update':
			case 'animate':
			case 'move':
			case 'exceed':
			case 'screenLoop':
			case 'loop':
			case 'filter':
			case 'max':
				if (!this.isCommandTargetIdValid(id, groupName, args[1])) {
					return false;
				}
				break;
			case 'sub':
				if (/_auto:[0-9]+$/.test(args[2])) {
					args[2] += ':' + groupName + '/h';
				}
				if (args[1] !== 'edit') {
					var name = args[3];
					if (/^_sub:[0-9]+$/.test(name)) {
						name += ':' + groupName + '/h';
					}
					if (!$dataTrpParticles[name] && !$dataTrpParticlePreset[name]) {
						return false;
					}
				}
				if (!this.isCommandTargetIdValid(id, groupName, args[2])) {
					return false;
				}
				break;

			case 'flash':
			case 'shake':
			case 'se':
				return true;

			case 'group':
				return false;
			default:
				return false;
		}

		return true;
	};

	ParticleGroup.isCommandTargetIdValid = function (groupId, groupName, id) {
		if (id === undefined) {
			return false;
		}
		if (id === '' || id === ' ') {
			return false;
		}
		if (/_auto:[0-9]+$/.test(id)) {
			id += ':' + groupName + '/h';
		}

		if (!id.contains('/GROUP:')
			&& id !== 'all'
			&& id.indexOf('all:') !== 0
			&& id.indexOf('tag:') !== 0) {
			id += ParticleGroup.idSuffix(groupId);
			if (!$gameScreen._particle._data[id]) {
				return false;
			}
		}

		return true;
	};
	ParticleGroup._isPlayCommandValid = function (groupId, groupName, command, args) {
		if (args.length <= 2 || args[2] === '' || args[2] === ' ') {
			return false;
		}

		//remove tag arg
		var length = args.length;
		for (var i = 0; i < length; i = (i + 1) | 0) {
			var arg = args[i];
			if (arg.indexOf('tag:') === 0) {
				args = args.concat();
				args.splice(i, 1);
				break;
			}
		}

		var id = args[1];
		var target = args[2];
		var name = args[3];

		if (/^_auto:[0-9]+$/.test(id)) {
			id += ':' + groupName + '/h';
		}
		if (/^_auto:[0-9]+$/.test(name)) {
			name += ':' + groupName + '/h';
		}

		name = supplementDef(id, name) || id;

		// var eventId = this._data.eventId;
		// var data = $gameScreen._particle.particleData(eventId,id,target,name)
		// if(!data)return false;

		//check id
		if (id === '' || id === ' ') {
			return false;
		}

		//check name exists
		if (command !== 'edit') {
			if (!$dataTrpParticles[name] && !$dataTrpParticlePreset[name]) {
				return false;
			}
		}

		return true;
	};

})();


code:
/*: @target MZ
 * @base TRP_ParticleMZ
 * @plugindesc 自作パーティクル設定の一覧
 * @help
 * light_floor <region> ＠2023/7/10
 * test <character> ＠---
 *
 * @command set_character
 * @text set/表示 > キャラ対象(1)
 * @desc パーティクル表示
 *
 * @arg id
 * @text 管理ID
 * @desc 他と被らない管理ID。「def」で設定名,「-EID」で設定名-EID
 * @default def
 *
 * @arg target
 * @text ターゲット
 * @desc thisでこのイベント。「event:イベントID」「player」「weather」など
 * @default weather
 *
 * @arg name
 * @text 《データ名》
 * @desc データ名。defとすると管理IDをデータ名として使用。（重み同じデータ名を複数表示するときは管理IDを分ける）
 * @default 《呼び出す設定を選択》
 * @type select
 * @option test <character> ＠---
 * @value test
 *
 * @arg z
 * @text Z値
 * @desc 重なり順。above:上、below:後ろ、screen、spritesetなど。数値指定も可
 * @default def
 *
 * @arg tag
 * @text 管理タグ
 * @desc 管理用のタグ名
 *
 * @arg edit
 * @text Editモード
 * @desc ONにするとエディタを呼び出し(テストプレイ時のみ有効)
 * @default false
 * @type boolean
 *
 * @arg delay
 * @text _ディレイ
 * @desc 1以上とすると、指定フレーム後にコマンドを実効
 * @default 0
 * @type number
 * @min 0
 *
 *
 * @command set_screen
 * @text set/表示 > スクリーン/天候/リージョン(1)
 * @desc パーティクル表示
 *
 * @arg id
 * @text 管理ID
 * @desc 他と被らない管理ID。「def」で設定名,「-EID」で設定名-EID
 * @default def
 *
 * @arg target
 * @text ターゲット
 * @desc thisでこのイベント。「event:イベントID」「player」「weather」など
 * @default this
 *
 * @arg name
 * @text 《データ名》
 * @desc データ名。defとすると管理IDをデータ名として使用。（重み同じデータ名を複数表示するときは管理IDを分ける）
 * @default 《呼び出す設定を選択》
 * @type select
 * @option light_floor <region> ＠2023/7/10
 * @value light_floor
 *
 * @arg z
 * @text Z値
 * @desc 重なり順。above:上、below:後ろ、screen、spritesetなど。数値指定も可
 * @default def
 *
 * @arg tag
 * @text 管理タグ
 * @desc 管理用のタグ名
 *
 * @arg edit
 * @text Editモード
 * @desc ONにするとエディタを呼び出し(テストプレイ時のみ有効)
 * @default false
 * @type boolean
 *
 * @arg delay
 * @text _ディレイ
 * @desc 1以上とすると、指定フレーム後にコマンドを実効
 * @default 0
 * @type number
 * @min 0
 *
 *
 *
 * @requiredAssets img/particles/shine3
 */


code:
//=============================================================================
// TRP_Particle_SubEmitter.js
//=============================================================================
/* このソフトウェアは正規に購入したユーザーのみが利用規約に従って使用することができます。
   また、このソフトウェアはMITライセンス、ならびにApache 2.0ライセンスで配布されている製作物が含まれています。
   http://www.opensource.org/licenses/mit-license
   http://www.apache.org/licenses/LICENSE-2.0
 */

//=============================================================================
/*:
 * @plugindesc サブエミッター機能の有効化
 * @author Thirop
 * @help
 * 【更新履歴】
 * 2.13 2021/10/27 慣性が正しく働かない不具合修正
 * 2.09 2021/8/18  本体設定「キャッシュ設定(β)」に対応
 * 2.08 ---        Safari/iOSで生じる起動時エラー修正
 * 2.00 ---        初版。
 */
//=============================================================================
//PRAGMA_END: subEmitterHeader

(function () {
	'use strict';

	//PRAGMA: subEmitterRegisterCommands
	//PRAGMA_END: subEmitterRegisterCommands

	/*! *****************************************************************************
	Copyright (c) Microsoft Corporation. All rights reserved.
	Licensed under the Apache License, Version 2.0 (the "License"); you may not use
	this file except in compliance with the License. You may obtain a copy of the
	License at http://www.apache.org/licenses/LICENSE-2.0

	THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
	KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
	WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
	MERCHANTABLITY OR NON-INFRINGEMENT.

	See the Apache Version 2.0 License for specific language governing permissions
	and limitations under the License.
	***************************************************************************** */
	/* global Reflect, Promise */
	var extendStatics = function (d, b) {
		extendStatics = Object.setPrototypeOf ||
			({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
			function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
		return extendStatics(d, b);
	};
	function __extends(d, b) {
		extendStatics(d, b);
		function __() { this.constructor = d; }
		d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	/***************************************************************************** */

	//PRAGMA: subEmitterPluginSetting
	var baseParameters = PluginManager.parameters('TRP_Particle');
	//PRAGMA_END: subEmitterPluginSetting

	var LC = TRP_Localize.localize.bind(TRP_Localize, 'parSe');

	var _Game_Particle_particleData = Game_Particle.prototype.particleData;
	Game_Particle.prototype.particleData = function (eventId, id, target, name, z, x, y, image) {
		var data = _Game_Particle_particleData.apply(this, arguments);
		if (data.subs) {
			data.subs = null;
		}
		return data;
	};

	var _Game_Particle_pluginCommand = Game_Particle.prototype.pluginCommand;
	Game_Particle.prototype.pluginCommand = function (interpreter, args, eventId) {
		var sub = args[0].toLowerCase();
		if (sub === 'sub') {
			this.processSubEmitterCommand(interpreter, args, eventId);
		} else {
			_Game_Particle_pluginCommand.call(this, interpreter, args, eventId);
		}
	};

	Game_Particle.prototype.processSubEmitterCommand = function (interpreter, args, eventId) {
		var main = args.shift();
		var sub = args.shift().toLowerCase();

		if (!isNaN(eventId)) {
			this.processArgsEventId(args, eventId);
		}

		if (sub === 'set' || sub === 'play' || sub === 'edit') {
			if (sub === 'set' || sub === 'play') {
				Game_Particle.prototype.particleSubEmitterSet.apply(this, args);
			} else if (sub === 'edit') {
				if (Game_Particle.prototype.particleSubEmitterEdit.apply(this, args) && interpreter) {
					interpreter.wait(1);
				}
			}
		}
	};

	Game_Particle.prototype.particleSubEmitterSet = function (id, name, timing = 0, endTiming = -1, speedRate = 0, inheritAngle = 0, inheritScale = 0) {
		var data = this.dataWithId(id);
		if (!data) {
			return;
		}
		var subEmitters = data.subs;
		if (!subEmitters) {
			subEmitters = data.subs = [];
		}

		var length = subEmitters.length;
		for (var i = 0; i < length; i = (i + 1) | 0) {
			var sb = subEmitters[i];
			if (sb[0] === name) {
				return;
			}
		}

		subEmitters.push([name, Number(timing), Number(endTiming), Number(speedRate), Number(inheritAngle), Number(inheritScale)]);
	};

	Game_Particle.SUB_EMITTER_DEFAULT_DATA = null;
	Game_Particle.prototype.particleSubEmitterEdit = function (id, name, timing = 0, endTiming = -1, speedRate = 0, inheritAngle = 0, inheritScale = 0) {
		//ensure config data exists
		if (!$dataTrpParticles[name] && !$dataTrpParticlePreset[name]) {
			if (!Game_Particle.SUB_EMITTER_DEFAULT_DATA) {
				Game_Particle.SUB_EMITTER_DEFAULT_DATA = JsonEx.makeDeepCopy(ParticleEditor.DEFAULT_DATA || {});
				Game_Particle.SUB_EMITTER_DEFAULT_DATA.frequency = 0.1;
			}
			$dataTrpParticles[name] = JsonEx.makeDeepCopy(Game_Particle.SUB_EMITTER_DEFAULT_DATA);
		}
		this.particleSubEmitterSet.apply(this, arguments);

		id = id + Game_Particle.SUB_EMITTER_DEV_SUFFIX + name;
		var exData = {
			timing: timing,
			endTiming: endTiming,
			speedRate: speedRate,
			inheritAngle: inheritAngle,
			inheritScale: inheritScale,
		}
		this._particleEditWithExData(exData, 0, '', id);
	};

	Game_Particle.SUB_EMITTER_DEV_SUFFIX = '/SUB:';

	var _Game_Particle_idWithSuffix = Game_Particle.prototype.idWithSuffix;
	Game_Particle.prototype.idWithSuffix = function (id) {
		if (this._suffix && id.contains(Game_Particle.SUB_EMITTER_DEV_SUFFIX)) {
			var args = id.split(Game_Particle.SUB_EMITTER_DEV_SUFFIX);
			var main = args[0];
			var sub = args[1];

			main = _Game_Particle_idWithSuffix.call(this, main);
			return main + Game_Particle.SUB_EMITTER_DEV_SUFFIX + sub;
		} else {
			return _Game_Particle_idWithSuffix.call(this, id);
		}
	};

	//=============================================================================
	// ParticleEmitter
	//=============================================================================
	var _ParticleEmitter_setupBitmaps = ParticleEmitter.prototype.setupBitmaps;
	ParticleEmitter.prototype.setupBitmaps = function (image, bitmaps) {
		_ParticleEmitter_setupBitmaps.call(this, image, bitmaps);

		this._setupSubEmitterBitmaps = true;
		if (this._data.subs) {
			this.setupSubEmitters(image, bitmaps, this._data.subs);
		} else {
			this.tryStart(image, bitmaps);
		}
	};

	var _ParticleEmitter_initMembers = ParticleEmitter.prototype.initMembers;
	ParticleEmitter.prototype.initMembers = function () {
		_ParticleEmitter_initMembers.call(this);

		this._setupSubEmitterBitmaps = false;
		this._subData = null;
		this._subNames = null;
		this._subBitmaps = null;
	};

	ParticleEmitter.prototype.setupSubEmitters = function (image, mainBitmaps, subData) {
		this._subData = subData;
		this._subNames = [];
		var bitmaps = this._subBitmaps = [];

		var length = subData.length;
		for (var i = 0; i < length; i = (i + 1) | 0) {
			var data = subData[i];
			var name = data[0];
			var config = Game_Particle.configDataWithName(name)
			Array.prototype.push.apply(bitmaps, this.bitmapsWithImage(config.image || baseParameters.defaultImage));
			this._subNames.push(name);
		}

		var length = bitmaps.length;
		for (var i = 0; i < length; i = (i + 1) | 0) {
			bitmaps[i].addLoadListener(ParticleEmitter.prototype.tryStart.bind(this, image, mainBitmaps));
		}
	};

	var _ParticleEmitter_tryStart = ParticleEmitter.prototype.tryStart;
	ParticleEmitter.prototype.tryStart = function (image, bitmaps) {
		if (this._started) return;
		if (!this._setupSubEmitterBitmaps) {
			return;
		}
		if (this._subBitmaps) {
			for (const bitmap of this._subBitmaps) {
				if (!bitmap.isReady()) {
					return false;
				}
			}
			this._subBitmaps = null;
		}
		return _ParticleEmitter_tryStart.call(this, image, bitmaps);
	};

	var _ParticleEmitter_start = ParticleEmitter.prototype.start;
	ParticleEmitter.prototype.start = function (image, bitmaps) {
		_ParticleEmitter_start.call(this, image, bitmaps);

		if (this._subData) {
			var emitter = this._emitter;
			var container = this._container;
			for (const data of this._subData) {
				this.setSubEmitter(emitter, container, data);
			}
		}
	};
	ParticleEmitter.prototype.setSubEmitter = function (emitter, container, data) {
		var name = data[0];
		var timing = data[1] || 0;
		var endTiming = data.length >= 3 ? data[2] || 0 : -1;
		var speedRate = data[3] || 0;
		var inheritAngle = data[4] || 0;
		var inheritScale = data[5] || 0;
		var config = Game_Particle.configDataWithName(name);

		var image = config.image || baseParameters.defaultImage;
		var bitmaps = this.bitmapsWithImage(image);
		var textures = this._texturesWithBitmaps(image, bitmaps);
		emitter.setSubEmitter(container, textures, config, timing, endTiming, speedRate, inheritAngle, inheritScale);
	};

	ParticleEmitter.prototype.particleConstructor = function () {
		return this._subData ? TRP_ParticleEx : TRP_Particle;
	};
	ParticleEmitter.prototype.emitterConstructor = function () {
		return this._subData ? TRP_EmitterEx : TRP_Emitter;
	};
	ParticleEmitter.prototype.subEmitter = function (name) {
		return this._emitter._subEmitters ? this._emitter._subEmitters[this._subNames.indexOf(name)] : null;
	};

	var _ParticleEmitter_loopParticles = ParticleEmitter.prototype.loopParticles;
	ParticleEmitter.prototype.loopParticles = function (loopX, loopY) {
		_ParticleEmitter_loopParticles.call(this, loopX, loopY, this._emitter);

		if (this._subEmitters) {
			var length = this._subEmitters.length;
			for (var i = 0; i < length; i = (i + 1) | 0) {
				_ParticleEmitter_loopParticles.call(this, loopX, loopY, this._subEmitters[i]);
			}
		}
	};

	var _ParticleEmitter_cleanup = ParticleEmitter.prototype.cleanup;
	ParticleEmitter.prototype.cleanup = function () {
		_ParticleEmitter_cleanup.call(this);

		if (this._emitter instanceof TRP_EmitterEx) {
			this._emitter.cleanupSubEmitters();
		}
	};

	//=============================================================================
	// TRP_EmitterEx
	//=============================================================================
	var TRP_Emitter = ParticleEmitter.TRP_Emitter;
	var Emitter = PIXI.particles.Emitter;

	var TRP_EmitterEx = /** @class */(function (_super) {
		__extends(TRP_EmitterEx, _super);

		var utils = PIXI.particles.ParticleUtils;
		function TRP_EmitterEx(particleParent, particleImages, config) {
			var _this = _super.call(this, particleParent, particleImages, config) || this;
			_this._subEmitters = [];
			return _this;
		};

		TRP_EmitterEx.prototype.destroy = function (force) {
			if (!force && this.particleTotalCount() > 0) return;

			_super.prototype.destroy.call(this);

			var length = this._subEmitters.length;
			for (var i = 0; i < length; i = (i + 1) | 0) {
				this._subEmitters[i].destroy();
			}
			this._subEmitters.length = 0;
		};

		TRP_EmitterEx.prototype.cleanupSubEmitters = function () {
			var length = this._subEmitters.length;
			for (var i = 0; i < length; i = (i + 1) | 0) {
				var sub = this._subEmitters[i];
				sub.cleanup();
			}
		}

		TRP_EmitterEx.prototype.particleTotalCount = function () {
			var count = this.particleCount;
			var length = this._subEmitters.length;
			for (var i = 0; i < length; i = (i + 1) | 0) {
				count += this._subEmitters[i].particleCount;
			}
			return count;
		};

		TRP_EmitterEx.prototype.update = function (delta) {
			_super.prototype.update.call(this, delta);

			if (!this._parent) return;
			if (this._subEmitters) {
				var length = this._subEmitters.length;
				for (var i = 0; i < length; i = (i + 1) | 0) {
					this._subEmitters[i].update(delta);
				}
			}
		};

		TRP_EmitterEx.prototype.setSubEmitter = function (container, textures, config, timing, endTiming, speedRate, inheritAngle, inheritScale) {
			var emitter = new TRP_SubEmitter(container, textures, config, timing, endTiming, speedRate, inheritAngle, inheritScale);
			this._subEmitters.push(emitter);
		};

		TRP_EmitterEx.prototype.applyAdditionalProperties = function (p) {
			TRP_Emitter.prototype.applyAdditionalProperties.call(this, p);

			p.subEmitters = this._subEmitters;
			if (p.subEmitters) {
				var emitters = p.subEmitters;
				var length = emitters.length;
				for (var i = 0; i < length; i = (i + 1) | 0) {
					this.pushSubEmitterData(p, i);
				}
			}
		};

		TRP_EmitterEx.prototype.pushSubEmitterData = function (p, i) {
			var data = p.subEmitterData[i];
			if (!data) {
				data = {};
				p.subEmitterData[i] = data;

				data._prevEmitterPos = new PIXI.Point(p.x, p.y);
			} else {
				data._prevEmitterPos.x = p.x;
				data._prevEmitterPos.y = p.y;
			}
			data._emit = false;
			data._spawnTimer = 0;
			data._emitterLife = 0;
			data._prevPosIsValid = false;
			data._spawn = false;
		};

		TRP_EmitterEx.prototype.applyCapacityLimit = function () {
			var naturalCapacity = this.naturalCapacity(this._originalFrequency, this._originalParticlesPerWave);
			var subCapacity = this.subEmittersCapacity();

			var mainRate = Math.pow(this._capacityRate, naturalCapacity / ((naturalCapacity + subCapacity) || 1));
			var subRate = this._capacityRate / (mainRate || 1);

			//main limit
			var target = naturalCapacity * mainRate;
			this.maxParticles = target;
			if (this.particlesPerWave > 1) {
				this.particlesPerWave = Math.ceil(Math.min(this._originalParticlesPerWave, this._originalParticlesPerWave * (target / naturalCapacity))) || 1;
				naturalCapacity = this.naturalCapacity(this._originalFrequency, this.particlesPerWave);
			}
			this.frequency = Math.max(this._originalFrequency, this._originalFrequency / (target / naturalCapacity));

			//sub limit
			var length = this._subEmitters.length;
			for (var i = 0; i < length; i = (i + 1) | 0) {
				var sub = this._subEmitters[i];
				sub.capacityRate = subRate;
				sub.maxParticles = sub._originalMaxParticles * subRate;
			}
		};

		TRP_EmitterEx.prototype.particleCapacity = function () {
			var capacity = _super.prototype.particleCapacity.call(this);
			var subCapacity = this.subEmittersCapacity();
			return capacity * subCapacity;
		};
		TRP_EmitterEx.prototype.subEmittersCapacity = function () {
			var subCapacity = 1;
			var length = this._subEmitters.length;
			for (var i = 0; i < length; i = (i + 1) | 0) {
				subCapacity += this._subEmitters[i].particleCapacity();
			}
			return subCapacity;
		}

		return TRP_EmitterEx;
	}(TRP_Emitter));
	ParticleEmitter.TRP_EmitterEx = TRP_EmitterEx;

	//=============================================================================
	// TRP_SubEmitter
	//=============================================================================
	var TRP_SubEmitter = /** @class */(function (_super) {
		__extends(TRP_SubEmitter, _super);

		var utils = PIXI.particles.ParticleUtils;
		function TRP_SubEmitter(particleParent, particleImages, config, timing = 0, endTiming = -1, speedRate = 0, inheritAngle = 0, inheritScale = 0) {
			var _this = TRP_Emitter.call(this, particleParent, particleImages, config) || this;
			_this._particleConstructor = TRP_Particle;

			_this.timing = timing;
			_this.endTiming = endTiming;
			_this.speedRate = speedRate;
			_this.inheritAngle = inheritAngle;
			_this.inheritScale = inheritScale;

			return _this;
		};

		TRP_SubEmitter.prototype.update = function (delta) {
			if (this._autoUpdate) {
				delta = delta / pixi.settings.TARGET_FPMS / 1000;
			}
			if (!this._parent) return;

			var i, particle, next;
			for (particle = this._activeParticlesFirst; particle; particle = next) {
				next = particle.next;
				particle.update(delta);
			}
		};

		TRP_SubEmitter.prototype.updateParticleEmitter = function (ep, lerp, delta, data) {
			//data ~ time,
			//ep : emitter particle
			if (!data._emit) {
				if (!data._spawn && lerp >= this.timing) {
					data._emit = true;
					data._spawn = true;
					data._emitterLife = this.emitterLifetime
				} else {
					return;
				}
			} else if (this.endTiming >= 0 && lerp >= this.endTiming) {
				data._spawnTimer = 0;
				data._emitterLife = 0;
				data._emit = false;
				return;
			}

			if (!this._parent)
				return;

			if (this._autoUpdate) {
				delta = delta / pixi.settings.TARGET_FPMS / 1000;
			}

			//update existing particles
			var prevX, prevY;
			//if the previous position is valid, store these for later interpolation
			if (data._prevPosIsValid) {
				prevX = data._prevEmitterPos.x;
				prevY = data._prevEmitterPos.y;
			}
			//store current position of the emitter as local variables
			var curX = ep.x + this.spawnPos.x;
			var curY = ep.y + this.spawnPos.y;
			var posChanged = data._prevPosIsValid && (prevX !== curX || prevY !== curY);

			//spawn new particles
			if (this._emit) {
				//decrease spawn timer
				data._spawnTimer -= delta < 0 ? 0 : delta;
				//while _spawnTimer < 0, we have particles to spawn
				while (data._spawnTimer <= 0) {
					//determine if the emitter should stop spawning
					if (data._emitterLife > 0) {
						data._emitterLife -= this._frequency;
						if (data._emitterLife <= 0) {
							data._spawnTimer = 0;
							data._emitterLife = 0;
							data._emit = false;
							break;
						}
					}
					//determine if we have hit the particle limit
					if (this.particleCount >= this.maxParticles) {
						data._spawnTimer += this._frequency;
						continue;
					}
					//determine the particle lifetime
					var lifetime = void 0;
					if (this.minLifetime == this.maxLifetime)
						lifetime = this.minLifetime;
					else
						lifetime = Math.random() * (this.maxLifetime - this.minLifetime) + this.minLifetime;
					//only make the particle if it wouldn't immediately destroy itself
					if (-data._spawnTimer < lifetime) {
						//If the position has changed and this isn't the first spawn,
						//interpolate the spawn position
						var emitPosX = void 0, emitPosY = void 0;
						if (data._prevPosIsValid && posChanged) {
							//1 - _spawnTimer / delta, but _spawnTimer is negative
							var lerp = 1 + data._spawnTimer / delta;
							emitPosX = (curX - prevX) * lerp + prevX;
							emitPosY = (curY - prevY) * lerp + prevY;
						}
						else //otherwise just set to the spawn position
						{
							emitPosX = curX;
							emitPosY = curY;
						}
						//create enough particles to fill the wave (non-burst types have a wave of 1)
						var i = 0;
						for (var len = Math.min(this.particlesPerWave, this.maxParticles - this.particleCount); i < len; ++i) {
							//see if we actually spawn one
							if (this.spawnChance < 1 && Math.random() >= this.spawnChance)
								continue;
							//create particle
							var p = void 0;
							if (this._poolFirst) {
								p = this._poolFirst;
								this._poolFirst = this._poolFirst.next;
								p.next = null;
							}
							else {
								p = new this.particleConstructor(this);
							}
							//set a random texture if we have more than one
							if (this.particleImages.length > 1) {
								// if using ordered art
								if (this._currentImageIndex !== -1) {
									// get current art index, then increment for the next particle
									p.applyArt(this.particleImages[this._currentImageIndex++]);
									// loop around if needed
									if (this._currentImageIndex < 0 || this._currentImageIndex >= this.particleImages.length) {
										this._currentImageIndex = 0;
									}
								}
								// otherwise grab a random one
								else {
									p.applyArt(this.particleImages[Math.floor(Math.random() * this.particleImages.length)]);
								}
							}
							else {
								//if they are actually the same texture, a standard particle
								//will quit early from the texture setting in setTexture().
								p.applyArt(this.particleImages[0]);
							}
							//set up the start and end values
							p.alphaList.reset(this.startAlpha);
							p.speedList.reset(this.startSpeed);
							if (this.minimumSpeedMultiplier != 1) {
								p.speedMultiplier = Math.random() * (1 - this.minimumSpeedMultiplier) + this.minimumSpeedMultiplier;
							}
							p.acceleration.x = this.acceleration.x;
							p.acceleration.y = this.acceleration.y;
							p.maxSpeed = this.maxSpeed;
							if (this.minimumScaleMultiplier != 1) {
								p.scaleMultiplier = Math.random() * (1 - this.minimumScaleMultiplier) + this.minimumScaleMultiplier;
							}
							p.scaleList.reset(this.startScale);
							p.colorList.reset(this.startColor);
							//randomize the rotation speed
							if (this.minRotationSpeed == this.maxRotationSpeed)
								p.rotationSpeed = this.minRotationSpeed;
							else
								p.rotationSpeed = Math.random() * (this.maxRotationSpeed - this.minRotationSpeed) + this.minRotationSpeed;
							p.rotationAcceleration = this.rotationAcceleration;
							p.noRotation = this.noRotation;
							//set up the lifetime
							p.maxLife = lifetime;
							//set the blend mode
							p.blendMode = this.particleBlendMode;
							//set the custom ease, if any
							p.ease = this.customEase;
							//set the extra data, if any
							p.extraData = this.extraData;

							//set additional properties to particle
							this.applyAdditionalProperties(p);
							//call the proper function to handle rotation and position of particle
							this._spawnFunc(p, emitPosX, emitPosY, i);

							if (this.inheritScale > 0) {
								p.scaleMultiplier *= ep.scaleMultiplier;
							}

							//initialize particle
							p.init();

							//inertia
							p.iVelocity.x = this.speedRate * ep.velocity.x;
							p.iVelocity.y = this.speedRate * ep.velocity.y;
							p._doInertia = !!(p.iVelocity.x || p.iVelocity.y);

							//inheritAngle
							if (this.inheritAngle > 0) {
								var v1Rotation = Math.atan2(ep.velocity.y, ep.velocity.x);
								utils.rotatePoint(v1Rotation / utils.DEG_TO_RADS, p.velocity);
								p.rotation += v1Rotation;
							}

							//update the particle by the time passed, so the particles are spread out properly
							p.update(-data._spawnTimer); //we want a positive delta, because a negative delta messes things up
							//add the particle to the display list
							if (!p.parent) {
								if (this.addAtBack)
									this._parent.addChildAt(p, 0);
								else
									this._parent.addChild(p);
							}
							else {
								//kind of hacky, but performance friendly
								//shuffle children to correct place
								var children = this._parent.children;
								//avoid using splice if possible
								if (children[0] == p)
									children.shift();
								else if (children[children.length - 1] == p)
									children.pop();
								else {
									var index = children.indexOf(p);
									children.splice(index, 1);
								}
								if (this.addAtBack)
									children.unshift(p);
								else
									children.push(p);
							}
							//add particle to list of active particles
							if (this._activeParticlesLast) {
								this._activeParticlesLast.next = p;
								p.prev = this._activeParticlesLast;
								this._activeParticlesLast = p;
							}
							else {
								this._activeParticlesLast = this._activeParticlesFirst = p;
							}
							++this.particleCount;
						}
					}
					//increase timer and continue on to any other particles that need to be created
					data._spawnTimer += this._frequency;
				}
				//if the position changed before this update, then keep track of that

				data._prevEmitterPos.x = curX;
				data._prevEmitterPos.y = curY;
				data._prevPosIsValid = true;
			}
		};
		return TRP_SubEmitter;
	}(ParticleEmitter.TRP_Emitter));

	//=============================================================================
	// TRP_ParticleEx
	//=============================================================================
	var TRP_Particle = ParticleEmitter.TRP_Particle;
	var TRP_ParticleEx = /** @class */(function (_super) {
		__extends(TRP_ParticleEx, _super);

		var utils = PIXI.particles.ParticleUtils;
		function TRP_ParticleEx(emitter) {
			var _this = _super.call(this, emitter) || this;
			_this.subEmitters = null;
			_this.subEmitterData = [];

			return _this;
		};

		TRP_ParticleEx.prototype.kill = function () {
			var emitters = this.subEmitters;
			var length = emitters ? emitters.length : 0;
			for (var i = 0; i < length; i = (i + 1) | 0) {
				var data = this.subEmitterData[i];
				if (!data._spawn || data._emitterLife > 0) {
					return;
				}
			}
			_super.prototype.kill.call(this);
		}

		TRP_ParticleEx.prototype.update = function (delta) {
			var lerp = _super.prototype.update.call(this, delta);
			if (this._wait > 0) return lerp;

			var emitters = this.subEmitters;
			var length = emitters ? emitters.length : 0;
			var subLerp = lerp < 0 ? 1 : lerp;
			for (var i = 0; i < length; i = (i + 1) | 0) {
				emitters[i].updateParticleEmitter(this, subLerp, delta, this.subEmitterData[i]);
			}
			return lerp;
		};

		return TRP_ParticleEx;
	}(TRP_Particle));

	/* cache config
	===================================*/
	(function () {
		'use strict';
		if (!baseParameters.useCache || baseParameters.useCache === 'false') return;

		//=============================================================================
		// TRP_Emitter
		//=============================================================================
		var Emitter = PIXI.particles.Emitter;
		var TRP_Emitter = ParticleEmitter.TRP_Emitter;
		var TRP_EmitterEx = ParticleEmitter.TRP_EmitterEx;
		if (TRP_EmitterEx) {
			var _TRP_EmitterEx_applyAdditionalProperties = TRP_EmitterEx.prototype.applyAdditionalProperties;
			TRP_EmitterEx.prototype.applyAdditionalProperties = function (p) {
				_TRP_EmitterEx_applyAdditionalProperties.call(this, p);

				var naturalCapacity = this.naturalCapacity(this._originalFrequency, this._originalParticlesPerWave);
				var rate = naturalCapacity - 1;

				var subEmitters = this._subEmitters;
				var length = subEmitters.length;
				for (var i = 0; i < length; i = (i + 1) | 0) {
					var emitter = subEmitters[i];
					emitter.preparePoolFromCache(rate);
				}
			};
		}
	})();

})();


code:
/*:
 * @plugindesc 戦闘開始時の「～が現れた！」というメッセージを非表示にします。
 * @author 茶の助
 */

(function () {

	BattleManager.startBattle = function () {
		this._phase = 'start';
		$gameSystem.onBattleStart();
		$gameParty.onBattleStart();
		$gameTroop.onBattleStart();
		//this.displayStartMessages();
	};

})();


code:
/*:
 * @plugindesc 敵ターゲットウィンドウにＨＰゲージを表示させます。
 特定の敵のゲージを非表示にすることもできます。
 * @author 茶の助
 *
 * @help ＨＰゲージを表示させたくない場合は、
 その敵のメモ欄に<ＨＰ非表示>と書いてください。
 */

(function () {

    Window_Base.prototype.hpGaugeColor = function (rate) {
        return [this.hpGaugeColor1(), this.hpGaugeColor2()];
    };

    Window_BattleEnemy.prototype.drawItem = function (index) {
        var rect = this.itemRectForText(index);
        if (!$dataEnemies[this._enemies[index]._enemyId].note.match('<ＨＰ非表示>')) {
            var hprate = this._enemies[index].hp / this._enemies[index].mhp;
            var color = this.hpGaugeColor(hprate);
            this.drawGauge(rect.x, rect.y, rect.width, hprate, color[0], color[1], this.gaugeBackColor());
        }
        this.resetTextColor();
        var name = this._enemies[index].name();
        this.drawText(name, rect.x, rect.y, rect.width, 'left', true); //
    };

})();


code:
/*:
 * @plugindesc シンボルエンカウント作成の補助を行います。
 詳しい使い方はヘルプを参照してください。
 * @author 茶の助
 *
 * @help 敵シンボルにしたいイベントのメモ欄に<se>と入力し、
 自立移動のタイプを「近づく」にしてください。

 ■プレイヤーとそのイベントの向きに応じて、
  先制攻撃・不意打ちが起こるようになります。
  設定した変数に数値が代入され、
  ０の場合は通常、１の場合は先制攻撃、２の場合は不意打ちになります。
  変数は戦闘後にリセットされます。

 ■デフォルトの「近づく」ではプレイヤーが２０マス以内にいる場合に
  自動的に追尾するようになっていますが、
  敵の背後にいる場合はプレイヤーを見失い、近づかないようになります。
 *
 * @param situationVariables
 * @desc 使用する変数番号
 * @default 1
 */

(function () {

    var parameters = PluginManager.parameters('TYA_SymbolEncount');
    var situationVariables = Number(parameters['situationVariables']);

    var _BattleManager_onEncounter = BattleManager.onEncounter;
    BattleManager.onEncounter = function () {
        _BattleManager_onEncounter.call(this);

        switch ($gameVariables.value(situationVariables)) {
            case 0:
                this._preemptive = false
                this._surprise = false
                break;
            case 1:
                this._preemptive = true;
                break;
            case 2:
                this._preemptive = false;
                this._surprise = true;
                break;
        }
    };

    Game_Event.prototype.isNearThePlayer = function () {
        var sx = Math.abs(this.deltaXFrom($gamePlayer.x));
        var sy = Math.abs(this.deltaYFrom($gamePlayer.y));
        var np = sx + sy < 20;
        if (this.event().meta.se) {
            var _player = $gamePlayer;
            var _enemy = this;
            switch (_enemy._direction) {
                case 2:
                    if (_player.y < _enemy.y) { np = false; }
                    break;
                case 8:
                    if (_player.y > _enemy.y) { np = false; }
                    break;
                case 4:
                    if (_player.x > _enemy.x) { np = false; }
                    break;
                case 6:
                    if (_player.x < _enemy.x) { np = false; }
                    break;
            }
        }
        return np;
    };

    Game_Event.prototype.encountSituation = function () {
        var _player = $gamePlayer;
        var _enemy = this;
        if (_player._direction == _enemy._direction) {
            switch (_enemy._direction) {
                case 2:
                    if (_player.y <= _enemy.y) {
                        $gameVariables.setValue(situationVariables, 1);
                    } else {
                        $gameVariables.setValue(situationVariables, 2);
                    }
                    break;
                case 8:
                    if (_player.y >= _enemy.y) {
                        $gameVariables.setValue(situationVariables, 1);
                    } else {
                        $gameVariables.setValue(situationVariables, 2);
                    }
                    break;
                case 4:
                    if (_player.x >= _enemy.x) {
                        $gameVariables.setValue(situationVariables, 1);
                    } else {
                        $gameVariables.setValue(situationVariables, 2);
                    }
                    break;
                case 6:
                    if (_player.x <= _enemy.x) {
                        $gameVariables.setValue(situationVariables, 1);
                    } else {
                        $gameVariables.setValue(situationVariables, 2);
                    }
                    break;
            }
        } else {
            $gameVariables.setValue(situationVariables, 0);
        }
    };

    Game_Event.prototype.lock = function () {
        if (!this._locked) {
            var se = this.event().meta.se;
            if (se) {
                this.encountSituation();
            }
            this._prelockDirection = this.direction();
            if (!se) {
                this.turnTowardPlayer();
            }
            this._locked = true;
        }
    };

    Game_Interpreter.prototype.command301 = function () {
        if (!$gameParty.inBattle()) {
            var troopId;
            if (this._params[0] === 0) {  // Direct designation
                troopId = this._params[1];
            } else if (this._params[0] === 1) {  // Designation with a variable
                troopId = $gameVariables.value(this._params[1]);
            } else {  // Same as Random Encounter
                troopId = $gamePlayer.makeEncounterTroopId();
            }
            if ($dataTroops[troopId]) {
                BattleManager.setup(troopId, this._params[2], this._params[3]);
                BattleManager.onEncounter(); //
                BattleManager.setEventCallback(function (n) {
                    this._branch[this._indent] = n;
                }.bind(this));
                $gamePlayer.makeEncounterCount();
                SceneManager.push(Scene_Battle);
            }
        }
        return true;
    };

    var _Scene_Battle_prototype_terminate = Scene_Battle.prototype.terminate;
    Scene_Battle.prototype.terminate = function () {
        _Scene_Battle_prototype_terminate.call(this);

        $gameVariables.setValue(situationVariables, 0);
    };

})();


code:
/*:
 * @plugindesc ＴＰに関する仕様を変更します。
 * @author 茶の助
 *
 * @param startTPfixed
 * @desc ＴＰの初期値：固定
 * @default 10
 *
 * @param startTPRandom
 * @desc ＴＰの初期値：ランダム（例: 20 → 0～20の間で変動)
 startTPfixedの値に上乗せされます。
 * @default 20
 *
 * @param conversionTP
 * @desc 戦闘終了時、ＴＰをＭＰに変換します。(1:する 0:しない)
 * @default 1
 */

(function () {

    var parameters = PluginManager.parameters('TYA_TPSetting');
    var startTPfixed = Number(parameters['startTPfixed']);
    var startTPRandom = Number(parameters['startTPRandom']);
    var conversionTP = Number(parameters['conversionTP']) != 0;

    Game_Battler.prototype.initTp = function () {
        this.setTp(startTPfixed);
        this.gainTp(Math.randomInt(startTPRandom));
    };

    Game_Battler.prototype.onBattleEnd = function () {
        this.clearResult();
        this.removeBattleStates();
        this.removeAllBuffs();
        this.clearActions();
        if (conversionTP) {
            this.gainMp(this.tp);
        }
        if (!this.isPreserveTp()) {
            this.clearTp();
        }
        this.appear();
    };

})();


code:
//=============================================================================
// T_dashMotion.js
//=============================================================================
//Copyright (c) 2016 Trb
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
//
//twitter https://twitter.com/Trb_surasura
/*:
 * @plugindesc 簡易的なダッシュモーションを実装します
 * @author Trb
 * @version 1.00 2016/6/3 初版
 *          1.1  2016/6/4 フォロワーがダッシュモーションにならない不具合を修正
 *                        また、構造を少し改変しやすい形に変更
 *
 * @help キャラクターが走っている時、画像を少し傾け上下させることで
 * 簡易的にダッシュモーションのようにします。
 * 上下の動きや傾きの角度を調整したい場合はプラグイン内を直接編集して下さい。
 */
(function () {

    var SC_uo = Sprite_Character.prototype.updateOther;
    Sprite_Character.prototype.updateOther = function () {
        SC_uo.call(this);
        this.updateDashMotion();//ダッシュモーション用の処理を追加
    };

    //ダッシュモーションの計算
    Sprite_Character.prototype.updateDashMotion = function () {
        var chara = this._character;
        //フォロワーだったらダッシュ判定をプレイヤーと同じにする処理を追加(ver1.1)
        var isDashing = chara._memberIndex ? $gamePlayer.isDashing() : chara.isDashing();
        if (isDashing && (chara.isMoving() || this.T_lastMoving)) {//キャラクターが走っている時
            this.y -= chara.pattern() % 2 * 2;//y座標に補正をかける（画像を上下させる）
            switch (chara.direction()) {//キャラの向きで分岐
                case 2://上下を向いてる時
                case 8:
                    this.scale.y = 0.92;//少し潰す
                    this.rotation = 0;
                    break;
                case 4://左を向いてる時
                    this.rotation = -0.14;//少し左に傾ける
                    break;
                case 6://右を向いてる時
                    this.rotation = 0.14;//少し右に傾ける
                    break;
            }
        } else {//走ってない時角度と潰れをリセット
            if (chara._noteTag || chara.pattern() === 0) {
                return;
            }
            this.rotation = 0;
            this.scale.y = 1;
        }
        this.T_lastMoving = chara.isMoving();
    };
    /* T_lastMoving という値について
    このプラグインではキャラクターがダッシュ中かつ移動中にダッシュモーションになるようにしていますが、
    デフォルトではキャラクターが1マス移動し終わった時に一瞬だけ移動判定がfalseになってしまいます。
    なので移動判定を「今の移動判定」と「前回の移動判定」の2重にチェックする形にしました。
     */
})();