Название плагина: Движение к герою/от героя по диагонали
Автор: Yuryol
Версия: крайняя
Поддерживаемые языки: Русский
Описание: Простенький плагин, позволяющий двигаться событиям к герою/от героя по диагонали.
В некоторых плагинах движения по диагонали, события при указании движения "к герою" или "от героя" все-равно ходят по прямой, игнорируя диагональное движение. Данный плагин это исправляет.

Скриншоты: не требуются

Плагин скачать по ссылке

либо скопировать в блокнот, назвать Yuryol_Move_Toward.js:

Спойлер скопировать:
Код:
//=============================================================================
// Yuryol_Move_Toward.js
//=============================================================================
/*:
 
 * @plugindesc Движение к герою/от героя по диагонали / Move 'toward'/'away from' Character
 * @author Yuryol

 
 @help
 * Yuryol move 'toward'/'away from' Character (Движение к герою/от героя по диагонали)
 * ----------------------------------------------------------------------------
 * Плагин позволяет двигаться событиям к герою/от героя по диагонали.
 * ----------------------------------------------------------------------------
 * Спасибо ДК, Dmy, Caveman
 * ----------------------------------------------------------------------------
 * 
 
*/

(function() {
	
var YuryolMoveTowardCharacter = Game_Character.prototype.moveTowardCharacter;
Game_Character.prototype.moveTowardCharacter = function(character) {
	
    var sx = this.deltaXFrom(character.x);
    var sy = this.deltaYFrom(character.y);
	  
		if (sx != 0 && sy !=0) {
		   (sx > 0 && sy > 0) ? this.moveDiagonally(4,8):
			 (sx > 0 && sy < 0) ? this.moveDiagonally(4,2):
			 (sx < 0 && sy > 0) ? this.moveDiagonally(6,8):
			                      this.moveDiagonally(6,2);
		}

		else if (Math.abs(sx) > Math.abs(sy)) {
        this.moveStraight(sx > 0 ? 4 : 6);
        if (!this.isMovementSucceeded() && sy !== 0) {
            this.moveStraight(sy > 0 ? 8 : 2);
        }
    } else if (sy !== 0) {
        this.moveStraight(sy > 0 ? 8 : 2);
        if (!this.isMovementSucceeded() && sx !== 0) {
            this.moveStraight(sx > 0 ? 4 : 6);
        }
    }
};
	
var YuryolMoveAwayFromCharacter = Game_Character.prototype.moveAwayFromCharacter;
Game_Character.prototype.moveAwayFromCharacter = function(character) {
	
    var sx = this.deltaXFrom(character.x);
    var sy = this.deltaYFrom(character.y);
	
		if (sx != 0 && sy !=0) {
			 (sx > 0 && sy > 0) ? this.moveDiagonally(6,2):
			 (sx > 0 && sy < 0) ? this.moveDiagonally(6,8):
			 (sx < 0 && sy > 0) ? this.moveDiagonally(4,2):
			                      this.moveDiagonally(4,8);
		}
	
    else if (Math.abs(sx) > Math.abs(sy)) {
        this.moveStraight(sx > 0 ? 6 : 4);
        if (!this.isMovementSucceeded() && sy !== 0) {
            this.moveStraight(sy > 0 ? 2 : 8);
        }
    } else if (sy !== 0) {
        this.moveStraight(sy > 0 ? 2 : 8);
        if (!this.isMovementSucceeded() && sx !== 0) {
            this.moveStraight(sx > 0 ? 6 : 4);
        }
    }
};

})()