do-disciplinary-committee-m.../www/js/plugins/KuishibariState.js
2025-05-06 19:25:26 -05:00

119 lines
No EOL
5.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//=============================================================================
// KuishibariState.js (プラグインパラメータ対応版)
//=============================================================================
/*:
* @plugindesc 「HPが2以上ある状態でダメージを受けた場合、一定確率でHP1残る」ステートを作成します。
* @author 奏ねこま(おとぶきねこま)
*
* @param DamageMessage
* @text ダメージメッセージ
* @desc ダメージを与えた際に表示するメッセージ。
* {damage}:ダメージ量 {enemy}:敵の名前
* @default \\I[1023]{enemy}に {damage} ポイントのダメージを与えた!
*
* @param SurvivalMessage1
* @text 生存メッセージ1
* @desc 一定確率でHP1残った際に表示するメッセージグループ1
* {enemy}:敵の名前
* @default \\I[2465]{enemy}は漢気を見せて\\n[281]の攻撃を耐えた!
*
* @param SurvivalMessage2
* @text 生存メッセージ2
* @desc 一定確率でHP1残った際に表示するメッセージグループ2-1
* {enemy}:敵の名前
* @default \\I[2465]{enemy}は強い意志で\\n[281]の攻撃を耐えている!
*
*
* @param SurvivalMessage3
* @text 生存メッセージ3
* @desc 一定確率でHP1残った際に表示するメッセージグループ2-2
* {enemy}:敵の名前
* @default \\I[2465]{enemy}は瀕死になってなお戦う意思を見せている!
*
*
* @param SurvivalMessage4
* @text 生存メッセージ4
* @desc 一定確率でHP1残った際に表示するメッセージグループ2-3
* {enemy}:敵の名前
* @default \\I[2465]{enemy}は洗脳によって戦い続けることを強制されている!
*
* @help
* ステートのメモ欄に、以下のように記述してください。
* 確率値は正の整数で指定してください。
*
* <kuishibari:[確率]>
*
* 例HP2以上で被ダメージ時、必ずHP1残る
* <kuishibari:100>
*
* 例HP2以上で被ダメージ時、50%の確率でHP1残る
* <kuishibari:50>
*/
(function(){
'use strict';
var parameters = PluginManager.parameters('KuishibariState');
var damageMessage = parameters['DamageMessage'] || "\\I[1023]{enemy} dealt {damage} points of damage!";
var survivalMessage1 = parameters['SurvivalMessage1'] || "\\I[2465]{enemy} showed guts and withstood \\n[281]'s attack!";
var survivalMessage2 = parameters['SurvivalMessage2'] || "\\I[2465]{enemy} is enduring \\n[281]'s attack with strong will!";
var survivalMessage3 = parameters['SurvivalMessage3'] || "\\I[2465]{enemy} shows the will to fight even on the brink of death!";
var survivalMessage4 = parameters['SurvivalMessage4'] || "\\I[2465]{enemy} is being forced to keep fighting by brainwashing!";
var _Game_Action_executeHpDamage = Game_Action.prototype.executeHpDamage;
Game_Action.prototype.executeHpDamage = function(target, value) {
var original_value = value;
if (target._hp >= 1 && value >= target._hp) {
var kuishibari = 0;
target._states.forEach(function(state) {
if ($dataStates[state].meta['kuishibari']) {
kuishibari = Math.max(kuishibari, $dataStates[state].meta['kuishibari']);
}
});
if (kuishibari) {
if ((Math.floor(Math.random() * 100) + 1) <= kuishibari) {
value = target._hp - 1;
}
}
}
if(kuishibari){
// 嘘メッセージの表示
BattleManager._actionList = []
$gameTroop.members()[0].addState(44);//ダミーステート
$gameParty.members().forEach(function(actor) {actor._actions = [];});
AudioManager.playSe({"name":"Damage4","volume":90,"pitch":100,"pan":0})
if (target.result().critical){
var text = "\\I[2526]\\C[18]" + TextManager.criticalToEnemy + "\\C[0]"
BattleManager._logWindow.push('addText', text);
target.result().critical = false
}
var text = damageMessage.replace("{damage}", original_value).replace("{enemy}", $dataEnemies[target._enemyId].name)
BattleManager._logWindow.push('addText', text);
target.setHp(1);
$gameTemp.reserveCommonEvent(144);
if($gameTroop.troop().id == 43){
$gameTroop.members()[target.index()].startAnimation(288, false, 0);
text = survivalMessage1.replace("{enemy}", $dataEnemies[target._enemyId].name);
} else if($gameTroop.troop().id == 9){
$gameTroop.members()[target.index()].startAnimation(288, false, 0);
if(!$gameTroop.members()[target.index()].isStateAffected(15)){
$gameTroop.members()[target.index()].addState(15);
text = survivalMessage2.replace("{enemy}", $dataEnemies[target._enemyId].name);
}else if(!$gameTroop.members()[target.index()].isStateAffected(14)){
$gameTroop.members()[target.index()].addState(14);
text = survivalMessage3.replace("{enemy}", $dataEnemies[target._enemyId].name);
}else if(!$gameTroop.members()[target.index()].isStateAffected(13)){
$gameTroop.members()[target.index()].addState(13);
text = survivalMessage4.replace("{enemy}", $dataEnemies[target._enemyId].name);
}
}
target.result().success=true
BattleManager._logWindow.push('addText', text);
$gameTemp.reserveCommonEvent(144);
} else {
_Game_Action_executeHpDamage.call(this, target, value);
}
};
})();