Free_Game / maimai_6_0418 /js /plugins /ChangeMaxUnitBattleParty.js
Sageen's picture
Super-squash branch 'main' using huggingface_hub
99b0de1 verified
Raw
History Blame Contribute Delete
8.71 kB
//=============================================================================
// RPG Maker MZ - ChangeMaxUnitBattleParty
// Version 1.3.0.0
// Copylight 2020-2022 ぽえな
// License MIT(http://opensource.org/licenses/mit-license.php)
//=============================================================================
/*:
* @target MZ
* @plugindesc Change the maximum number of people in the battle party
* @author Poena
* @url https://1drv.ms/u/s!ApzzcXqwBDTHgrMUmANCWjNzVvFXUw?e=kO1Qpw
*
* @help ChangeMaxUnitBattleParty.js
*
* This plugin allows you to change the maximum number of members in a battle.
* v1.3.0.0
*  ・Support for up to 12 people in a battle party
* v1.2.1.0
*  ・Changed the display frame to be fixed at 4 if there are less than 4 members in the current battle even if Dynamic UI Scale is turned on.
*  ・Fixed a bug where character names were cut off due to insufficient display area when dynamic UI scale was turned off.
* v1.2.0.0
*  ・Fixed a bug where the character names were cut off due to insufficient height display area.
*  ・Added item to specify font size for character names in battle.
* v1.1.1.0
* Fixed an issue where character names were not properly sized
* v1.1.0.0
* Fixed the size of various gauges and fonts to only change the UI during battle.
* Added the ability to dynamically change the UI scale according to the current number of battle members
*
* @param maxUnit
* @type number
* @text Maximum number of people
* @desc Maximum number of players in battle
* @min 5
* @max 12
*
* @param isChangeUIScale
* @type boolean
* @text Changes to the UI scale
* @desc Change the UI scale to fit the maximum number of users (if false, up to 4 people are shown)
* @default true
*
* @param isDynamicUIScale
* @type boolean
* @text Dynamic UI Scale
* @desc Either change the UI scale dynamically to match the current number of battle members (instead of the maximum number), or
* @default true
*
* @param characterNameFontSize
* @type number
* @text Font size for character names
* @desc If less than 2 is specified, it refers to the main font size (Database>System2>Advanced Settings)
* @min 0
* @max 26
* @default 0
*/
/*:ja
* @target MZ
* @plugindesc バトルパーティの最大人数を変更します
* @author Poena
* @url https://1drv.ms/u/s!ApzzcXqwBDTHgrMUmANCWjNzVvFXUw?e=kO1Qpw
*
* @help ChangeMaxUnitBattleParty.js
*
* このプラグインは、バトル時のメンバーの最大人数を変更します。
* v1.3.0.0
*  ・バトルパーティの最大人数を12人まで対応
* v1.2.1.0
*  ・動的UIスケールがONの場合でも現在のバトルメンバーが4人未満の場合、表示枠を4で固定するように変更
*  ・動的UIスケールがOFFの場合、キャラクター名の表示領域が足りずに文字が切れる不具合を修正
* v1.2.0.0
*  ・キャラクター名の高さの表示領域が足りずに、文字が切れる不具合を修正
*  ・バトル中のキャラクター名のフォントサイズを指定する項目を追加
* v1.1.1.0
*  ・キャラクター名のサイズが正しく調整されていなかった不具合を修正
* v1.1.0.0
*  ・各種ゲージやフォントのサイズ変更をバトル中のUIのみ変更するように修正
*  ・現在のバトルメンバー数に応じてUIスケールを動的に変更する機能を追加
*
* @param maxUnit
* @type number
* @text 最大人数
* @desc バトル時の最大人数
* @min 5
* @max 12
*
* @param isChangeUIScale
* @type boolean
* @text UIスケールの変更
* @desc 最大人数にあわせてUIスケールを変更するか(Falseの場合、最大4人まで表示)
* @default true
*
* @param isDynamicUIScale
* @type boolean
* @text 動的UIスケール
* @desc 現在のバトルメンバー数(最大人数ではなく)に合わせてUIスケールを動的に変更するか
* @default true
*
* @param characterNameFontSize
* @type number
* @text キャラクター名のフォントサイズ
* @desc 2未満を指定した場合、メインフォントサイズ(データベース>システム2>高度な設定)を参照します
* @min 0
* @max 26
* @default 0
*/
(() => {
const pluginName = "ChangeMaxUnitBattleParty";
// プラグインパラメータ
var parameters = PluginManager.parameters(pluginName);
// バトル時の最大人数
var maxUnit = Number(parameters['maxUnit'] || 4);
// UIスケールの変更
var isChangeUIScale = parameters['isChangeUIScale'] && parameters['isChangeUIScale'].toLowerCase() === 'true';
// 動的UIスケール
var isDynamicUIScale = parameters['isDynamicUIScale'] && parameters['isDynamicUIScale'].toLowerCase() === 'true';
// キャラクター名のフォントサイズ
var characterNameFontSize = Number(parameters['characterNameFontSize'] || 0);
// 最大人数における表示倍率
var scalingFactorByMaxUnit = maxUnit <= 4 ? 1.0 : 4 / maxUnit;
// 現バトルメンバー数における表示倍率
function calcScalingFactorByCurrentUnit() {
return $gameParty.battleMembers().length <= 4 ? 1.0 : 4 / $gameParty.battleMembers().length;
}
// 計算用の最低4以上を返す現在のバトルメンバー数
function minCurrentBattleMembers() {
return !isChangeUIScale ? 4 : isDynamicUIScale ? $gameParty.battleMembers().length <= 4 ? 4 : $gameParty.battleMembers().length : maxUnit;
}
// バトル時の最大人数変更
Game_Party.prototype.maxBattleMembers = function() {
return maxUnit;
};
// ステータス画面の表示最大数変更
Window_BattleStatus.prototype.maxCols = function() {
return isChangeUIScale ? (isDynamicUIScale ? $gameParty.battleMembers().length <= 4 ? 4 : $gameParty.battleMembers().length : maxUnit) : 4;
};
// ゲージスプライトの幅
Sprite_Gauge.prototype.bitmapWidth = function() {
return 128 * (isChangeUIScale && $gameParty.inBattle() ? (isDynamicUIScale ? calcScalingFactorByCurrentUnit() : scalingFactorByMaxUnit) : 1.0);
};
// 名前スプライトの幅
let _Sprite_Name_prototype_initMembers = Sprite_Name.prototype.initMembers;
Sprite_Name.prototype.initMembers = function() {
_Sprite_Name_prototype_initMembers.call(this);
// 戦闘中フラグ
this._isInBattle = $gameParty.inBattle();
};
Sprite_Name.prototype.bitmapWidth = function() {
return 128 * (isChangeUIScale && $gameParty.inBattle() ? (isDynamicUIScale ? calcScalingFactorByCurrentUnit() : scalingFactorByMaxUnit) : 1.0);
};
Sprite_Name.prototype.bitmapHeight = function() {
if ($gameParty.inBattle())
{
return ((this.fontSize() - 2) + ((minCurrentBattleMembers() - 4) * 7)) * (isChangeUIScale ? (isDynamicUIScale ? calcScalingFactorByCurrentUnit() : scalingFactorByMaxUnit) : 1.0);;
}
else {
return 24;
}
};
Sprite_Name.prototype.updateBitmap = function() {
const name = this.name();
const color = this.textColor();
const isBattle = $gameParty.inBattle();
if (name !== this._name || color !== this._textColor || isBattle !== this._isInBattle) {
this._name = name;
this._textColor = color;
this._isInBattle = isBattle;
this.redraw();
}
};
// 名前スプライトのフォントサイズ
Sprite_Name.prototype.fontSize = function() {
if ($gameParty.inBattle() && isChangeUIScale && characterNameFontSize > 1) {
return characterNameFontSize;
}
else {
return $gameSystem.mainFontSize();
}
};
// ゲージスプライトのラベルのフォントサイズ
Sprite_Gauge.prototype.labelFontSize = function() {
return ($gameSystem.mainFontSize() - 2) * (isChangeUIScale && $gameParty.inBattle() ? (isDynamicUIScale ? calcScalingFactorByCurrentUnit() : scalingFactorByMaxUnit) : 1.0);
};
// バトル中のアクターの位置
Sprite_Actor.prototype.setActorHome = function(index) {
// let memberPositionIntervalInXDirection = $gameParty.battleMembers().length > 4 ? 32 / parseInt(($gameParty.battleMembers().length - 1) / 4) : 32;
let memberPositionIntervalInXDirection = $gameParty.battleMembers().length > 8 ? 20 : 32;
let column = index % 4;
let homeY = column * 48;
this.setHome(558 + index * memberPositionIntervalInXDirection, 280 + homeY);
};
})();