- Сообщений: 25
- Спасибо получено: 8
Механика предмета [MZ]
1 год 1 мес. назад #130782
от Darte
Darte создал тему: Механика предмета [MZ]
Всем привет, мне нужно сделать особый аксессуар, но я не могу понять как сделать для него механику, смысл механики в том что, чем меньше здоровья у носителя тем больше его урон. Те кто хорошо понимают в логике RPG Maker помогите пожалуйста
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
1 год 1 мес. назад #130783
от MarkerIl
MarkerIl ответил в теме Механика предмета [MZ]
Я бы делал через общие ивенты, но выглядит это довольно криво и колхозно... Ия не уверен, сработает ли правильно.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
1 год 1 мес. назад #130790
от Darte
Darte ответил в теме Механика предмета [MZ]
Спасибо, да хоть с костылями, зато можно будет более точно сделать в дальнейшем
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
1 год 1 мес. назад #130791
от Neocris
Neocris ответил в теме Механика предмета [MZ]
Как конкретно должен работать предмет? Только в бою или везде? Какую характеристику увеличивать: атаку или магическую атаку или обе? Что ты имеешь в виду под уроном? Есть пороги хп? Пример:хп < 75% => атака + 1.5x; хп < 50% => атака + 2x. Или сколько % хп не хватает на столько и прибавка к атаке. Предмет именной или его может одеть любой герой? От этого зависит проверка на экипировку.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
1 год 1 мес. назад #130800
от Darte
Darte ответил в теме Механика предмета [MZ]
Ну на бумаге все просто, чем меньше у игрока хп, тем больше физический урон в процентном соотношении, у игрока к примеру отняли 30% хп, а ему прибавилось эти же 30% к физическому урону. Должно работать везде, и если у игрока восполняется здоровье то и бафф к урону пропадает. Порогов не должно быть, если это конечно не смерть. Он одеваемый, это тип брони, а именно аксессуар
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
1 год 1 мес. назад #130801
от Neocris
Neocris ответил в теме Механика предмета [MZ]
Не нашел корректного метода сделать это стандартными командами. Поэтому плагин.
ВНИМАНИЕ: Спойлер!
Code:
/*:
* @target MZ
* @plugindesc Добавляет бонус к атаке от потерянного HP, если персонаж носит аксессуар.
*
* @param AccessoryID
* @text ID аксессуара
* @desc ID аксессуара, который даёт бонус к атаке
* @type number
* @default 101
*
* @help
* Этот плагин добавляет бонус к атаке персонажам, у которых надет аксессуар с заданным ID.
* Бонус рассчитывается по формуле: (Потерянное HP в % от макс. HP) * (Текущая атака).
*
* Совместимость:
* - Может конфликтовать с плагинами, изменяющими систему параметров.
*/
(() => {
const parameters = PluginManager.parameters("BerserkerAccessory");
const accessoryId = Number(parameters["AccessoryID"] || 101);
const updateBerserkerBonus = () => {
$gameParty.members().forEach(actor => {
if (actor.equips().includes($dataArmors[accessoryId])) {
const paramId = 2;
let storedBonus = actor._customAtkBonus || 0;
actor.addParam(paramId, -storedBonus);
let lostPercent = (actor.mhp - actor.hp) / actor.mhp;
let bonus = Math.floor(actor.atk * lostPercent);
actor.addParam(paramId, bonus);
actor._customAtkBonus = bonus;
} else {
let storedBonus = actor._customAtkBonus || 0;
if (storedBonus > 0) {
actor.addParam(2, -storedBonus);
actor._customAtkBonus = 0;
}
}
});
};
const _Game_BattlerBase_setHp = Game_BattlerBase.prototype.setHp;
Game_BattlerBase.prototype.setHp = function(hp) {
_Game_BattlerBase_setHp.call(this, hp);
updateBerserkerBonus();
};
const _Scene_Equip_onItemOk = Scene_Equip.prototype.onItemOk;
Scene_Equip.prototype.onItemOk = function() {
_Scene_Equip_onItemOk.call(this);
updateBerserkerBonus();
if (this._statusWindow) this._statusWindow.refresh();
};
const _Scene_Item_onActorOk = Scene_Item.prototype.onActorOk;
Scene_Item.prototype.onActorOk = function() {
_Scene_Item_onActorOk.call(this);
updateBerserkerBonus();
if (this._statusWindow) this._statusWindow.refresh();
};
})();
Спасибо сказали: Darte
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Время создания страницы: 0.175 секунд
