Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //=============================================================================
- // CriticalOnFinalHit.js
- //=============================================================================
- /*:
- * @target MZ
- * @plugindesc v1.0.0 อนุญาตให้คุณสามารถกำหนดอัตราคริติคอลให้การโจมตีครั้งสุดท้ายได้
- * @author jojo741963
- * @help CriticalOnFinalHit.js
- *
- * Log:
- * v1.0.0 - Release
- *
- * ปลั๊กอินนี้จะทำให้คุณกำหนดอัตราคริติคอลในการโจมตีครั้งสุดท้ายได้
- * (แม้การโจมตีนั้นจะมีครั้งเดียว คุณก็สามารถกำหนดคริติคอลได้เช่นกัน)
- *
- * วิธีการใช้ :
- * 1. ไปที่ Skill หรือ Item ที่ต้องการ
- * 2. ใน Note ให้เพิ่มข้อความดังนี้
- *
- * <LastHitCriRate:X>
- *
- * เมื่อ X คือ อัตราคริติคอลที่กำหนด (ค่าระหว่าง 0-1)
- *
- * เช่น <LastHitCriRate:1> การโจมตีครั้งสุดท้ายจะติดคริติคอลแน่นอน
- * <LastHitCriRate:.04> การโจมตีครั้งสุดท้ายจะติดคริติคอล 4%
- *
- * หมายเหตุ :
- * - ทั้งนี้ อัตราคริติคอลในปลั๊กอินนี้เป็นการเขียนทับ (กำหนดค่าใหม่ลงไป)
- * ไม่มีผลกับอัตราคริเดิมของผู้ใช้สกิล และอัตราการหลบหลีกของเป้าหมาย
- * - ไม่สามารถกำหนดค่าเป็นสมการหรือเรียกใช้ตัวแปรอื่น ๆ ได้
- * - สามารถใช้ร่วมกันได้กับสกิลที่โจมตีครั้งเดียว (Repeat 1 ครั้ง)
- * โดยจะเป็นการกำหนดอัตราคริติคอลการโจมตีครั้งนั้น
- * - สกิลที่ถูกกำหนดอัตราคริจะไม่มีผลกับการประเมินดาเมจของสกิล (ของการต่อสู้อัติโนมัติ)
- * โดยความเสียหายของสกิลนี้จะคิดตามปกติ ไม่สนใจการคริติคอลที่กำหนดค่าใหม่ลงไป
- *
- * วิธีการคิดอัตราตริติคอลเดิมของระบบ : อัตราคริผู้ใช้สกิล * (1 - อัตราการหลบคริเป้าหมาย)
- *
- */
- (() => {
- const pluginName = "CriticalOnFinalHit";
- //------------------------------------------------------------------------------------
- // add _repeatHitIndex and _lastHit
- var _jojo741963_cuscri_GameAction_initialize = Game_Action.prototype.initialize;
- Game_Action.prototype.initialize = function(subject, forcing) {
- _jojo741963_cuscri_GameAction_initialize.call(this, subject, forcing);
- this._repeatHitIndex = 0;
- this._lastHit = false;
- };
- var _jojo741963_cuscri_GameAction_apply = Game_Action.prototype.apply;
- Game_Action.prototype.apply = function(target) {
- this._repeatHitIndex += 1;
- if ( this._repeatHitIndex >= this.numRepeats() ) this._lastHit = true;
- //--------------------------------------------------------
- _jojo741963_cuscri_GameAction_apply.call(this, target);
- //--------------------------------------------------------
- if( this._lastHit ) {
- this._repeatHitIndex = 0;
- this._lastHit = false;
- }
- }
- //------------------------------------------------------------------------------------
- Game_Action.prototype.getItemMeta = function() {
- var data = null;
- switch (this._item._dataClass) {
- case "skill":
- data = $dataSkills[this._item._itemId];
- break;
- case "item":
- data = $dataItems[this._item._itemId];
- break;
- }
- return data.meta;
- }
- Game_Action.prototype.IsLastHitCriRate = function() {
- var data = null;
- switch (this._item._dataClass) {
- case "skill":
- data = $dataSkills[this._item._itemId];
- break;
- case "item":
- data = $dataItems[this._item._itemId];
- break;
- }
- if (data != null) {
- if (data.meta.LastHitCriRate) return true;
- return false;
- } else {
- return false;
- }
- };
- var _jojo741963_cuscri_GameAction_itemCri = Game_Action.prototype.itemCri;
- Game_Action.prototype.itemCri = function(target) {
- if ( this._lastHit && this.IsLastHitCriRate() ) {
- return this.getItemMeta().LastHitCriRate;
- } else {
- return _jojo741963_cuscri_GameAction_itemCri.call(this, target)
- }
- };
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement