需求:
-战斗中敌方队伍在7*7范围内列阵。
-战斗中我方队伍在7*7范围内列阵。
-
//=============================================================================
// RPG Maker MZ -
//=============================================================================
/*:
*
@璐村惂鐢ㄦ埛_00JG6XM馃惥 MZ
* @plugindesc 按照阵型设置参战单位所在格
*
@Author GHS猩猩
* @help
*/
$dataTroopsFormation = null;
DataManager._databaseFiles = [
{ name: "$dataActors", src: "Actors.json" },
{ name: "$dataClasses", src: "Classes.json" },
{ name: "$dataSkills", src: "Skills.json" },
{ name: "$dataItems", src: "Items.json" },
{ name: "$dataWeapons", src: "Weapons.json" },
{ name: "$dataArmors", src: "Armors.json" },
{ name: "$dataEnemies", src: "Enemies.json" },
{ name: "$dataTroops", src: "Troops.json" },
{ name: "$dataTroopsFormation", src: "TroopsFormation.json" },
{ name: "$dataStates", src: "States.json" },
{ name: "$dataAnimations", src: "Animations.json" },
{ name: "$dataTilesets", src: "Tilesets.json" },
{ name: "$dataCommonEvents", src: "CommonEvents.json" },
{ name: "$dataSystem", src: "System.json" },
{ name: "$dataMapInfos", src: "MapInfos.json" }
];
(() => {
'use strict';
//敌方列阵
Game_Troop.prototype.setup = function (troopId) {
this.clear();
this._troopId = troopId;
this._enemies = [];
if ($dataTroopsFormation[this._troopId]) {
// console.log($dataTroopsFormation[this._troopId]);
for (var i = 1; i <= 15; i++) {
const enemyInfo = $dataTroopsFormation[this._troopId]["enemy_" + i];
const id_x_y = ExtraUtils.getNumArrayFromInfo(enemyInfo);
const enemyId = id_x_y[0];
if ($dataEnemies[enemyId]) {
const x = 300 + 48 * Number(id_x_y[1]);
const y = 200 + 48 * Number(id_x_y[2]);
const enemy = new Game_Enemy(enemyId, x, y);
this._enemies.push(enemy);
}
}
}
this.makeUniqueNames();
};
//我方列阵
/** Game_Actor中添加_position属性 */
var ga_initMembers = Game_Actor.prototype.initMembers;
Game_Actor.prototype.initMembers = function () {
ga_initMembers.call(this);
this._position = 10 * this._actorId + 7 - this._actorId;
};
var ga_setup = Game_Actor.prototype.setup;
Game_Actor.prototype.setup = function (actorId) {
ga_setup.call(this, actorId);
const actor = $dataActors[actorId];
this._position = actor.position || 10 * this._actorId + 7 - this._actorId;
};
Game_Actor.prototype.position = function () {
return this._position;
};
Game_Actor.prototype.posX = function () {
return Math.floor(this._position / 10);
}
Game_Actor.prototype.posY = function () {
return this._position % 10;
}
Game_Actor.prototype.changePosition = function (pos) {
if (ZZ_GameUtils.checkPos(pos)) {
this._position = pos;
}
}
/** 战斗场景中设置我方角色位置 */
Sprite_Actor.prototype.setBattler = function (battler) {
Sprite_Battler.prototype.setBattler.call(this, battler);
if (battler !== this._actor) {
this._actor = battler;
if (battler) {
console.log(battler);
// this.setActorHome(battler.index());
this.setActorHomeByPos(battler);
} else {
this._mainSprite.bitmap = null;
}
this.startEntryMotion();
this._stateSprite.setup(battler);
}
};
Sprite_Actor.prototype.setActorHomeByPos = function (actor) {
this.setHome(800 + actor.posX() * 48, 300 + actor.posY() * 48);
};
})();