119 lines
No EOL
5.2 KiB
JavaScript
119 lines
No EOL
5.2 KiB
JavaScript
//=============================================================================
|
||
// 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);
|
||
}
|
||
};
|
||
})(); |