Double_X

DoubleX RMMV Action Cost Compatibility v101b

May 22nd, 2016 (edited)
615
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*============================================================================
  2.  *    ## Plugin Info
  3.  *----------------------------------------------------------------------------
  4.  *    # Plugin Name
  5.  *      DoubleX RMMV Action Cost Compatibility
  6.  *----------------------------------------------------------------------------
  7.  *    # Terms Of Use
  8.  *      1. Commercial use's always allowed and crediting me's always optional.
  9.  *      2. You shall keep this plugin's Plugin Info part's contents intact.
  10.  *      3. You shalln't claim that this plugin's written by anyone other than
  11.  *         DoubleX or my aliases. I always reserve the right to deny you from
  12.  *         using any of my plugins anymore if you've violated this.
  13.  *      4. CC BY 4.0, except those conflicting with any of the above, applies
  14.  *         to this plugin, unless you've my permissions not needing follow so.
  15.  *      5. I always reserve the right to deny you from using this plugin
  16.  *         anymore if you've violated any of the above.
  17.  *----------------------------------------------------------------------------
  18.  *    # Prerequisites
  19.  *      Plugins:
  20.  *      1. DoubleX RMMV Action Cost
  21.  *      Abilities:
  22.  *      1. Nothing special
  23.  *----------------------------------------------------------------------------
  24.  *    # Links
  25.  *      This plugin:
  26.  *      1. http://pastebin.com/5DP26uff
  27.  *      Video:
  28.  *      1. https://www.youtube.com/watch?v=TyYqBKaB-Cw
  29.  *      Mentioned Patreon Supporters:
  30.  *      https://www.patreon.com/posts/71738797
  31.  *----------------------------------------------------------------------------
  32.  *    # Author
  33.  *      DoubleX
  34.  *----------------------------------------------------------------------------
  35.  *    # Changelog
  36.  *      v1.01b(GMT 0300 20-5-2020):
  37.  *      1. In sync with the latest DoubleX RMMV Action Cost version
  38.  *      v1.01a(GMT 0400 5-2-2020):
  39.  *      1. Addressed compatibility with
  40.  *         - Victor Engine MV - Conditional Turn Battle
  41.  *      v1.00d(GMT 1500 11-8-2016):
  42.  *      1. Removed compatibility with DoubleX RMMV Minimalized ATB
  43.  *      1. In sync with the latest DoubleX RMMV Popularized ATB Core version
  44.  *      v1.00c(GMT 1000 5-6-2016):
  45.  *      1. Addressed more compatibility issues with
  46.  *         - DoubleX RMMV Minimalized ATB
  47.  *         - DoubleX RMMV Popularized ATB Core
  48.  *      v1.00b(GMT 0300 29-5-2016):
  49.  *      1. Addressed compatibility with
  50.  *         - DoubleX RMMV Minimalized ATB
  51.  *         - DoubleX RMMV Popularized ATB Core
  52.  *      v1.00a(GMT 1500 22-5-2016):
  53.  *      1. 1st version of this plugin finished
  54.  *============================================================================*/
  55. /*:
  56.  * @plugindesc Fixes DoubleX RMMV Action Cost compatibility issues
  57.  * @author DoubleX
  58.  *
  59.  * @help
  60.  *============================================================================
  61.  *    ## Addressed Plugins
  62.  *----------------------------------------------------------------------------
  63.  *    # DoubleX RMMV Unison Item Config:
  64.  *      1. The action cost is the same for all unison actors
  65.  *         - Reference tag: Unison Item Config Act Cost
  66.  *         - Read <unison item actor act cost: costs> in DM.loadItemNotes
  67.  *         - Drawed the action cost in battle for each unison actor in
  68.  *           WIL.drawActCost and WSL.drawActCost
  69.  *         - The default unison item action cost will be shown for all unison
  70.  *           actors when outside battles
  71.  *    # DoubleX RMMV Unison Item Default:
  72.  *      1. The number of action slot reserved by unison invokees are always 1
  73.  *         - Reference tag: Unison Item Default Invokee Act Slot Num
  74.  *         - Checked the action cost for each unison invokee in
  75.  *           GBB.canUseUnisonSkill and GBB.canUseUnisonItem as well
  76.  *         - Stored and restored the action cost for each unison invokee in
  77.  *           BM.addUnisonActors and BM.eraseUnisonActors as well
  78.  *    # (v1.00b+)DoubleX RMMV Popularized ATB Core:
  79.  *      1. No battler can execute any action at all
  80.  *         - Reference tag: PATB Act Validity
  81.  *         - Extended BattleManager.processTurn to ensure no valid actions
  82.  *           will be falsely regarded as invalid ones
  83.  *    # (v1.00c+)DoubleX RMMV Popularized ATB Core:
  84.  *      1. Battlers inputting skills/items with action cost greater than 1
  85.  *         remains inputable after finishing inputting all skills/items
  86.  *         - Reference tag: PATB Inputability
  87.  *         - Extended Game_Action.prototype.confirm_patb_item,
  88.  *           Scene_Battle.prototype.confirm_patb_act and added GBB.confirmAct
  89.  *           to confirm the reserved action slots as well
  90.  *    # (v1.01a+)Victor Engine MV - Conditional Turn Battle:
  91.  *      1. No actions can be executed at all
  92.  *         - Reference tag: VE CTB Act Validity
  93.  *         - Extended BattleManager.setupAction to ensure no valid actions
  94.  *           will be falsely regarded as invalid ones
  95.  *============================================================================
  96.  *    ## Notetag Info
  97.  *----------------------------------------------------------------------------
  98.  *    # Skill/Item Notetags:
  99.  *      1. <unison item actor act cost: costs>
  100.  *         - Sets the list of action costs needed for each of the
  101.  *           corresponding id of the unison actor in <unison item actors: ids>
  102.  *           , is used to separate the mp costs in ids
  103.  *           E.g.:
  104.  *           If <unison item actors: 1> is used, then
  105.  *           <unison item actor act cost: 2> means actor with id 1 needs to
  106.  *           use 2 action slots for using the unison skill/item
  107.  *           If <unison item actors: 4, 2> is used, then
  108.  *           <unison item actor act cost: 2, 3> means actor with id 4 and 2
  109.  *           need to use 2 and 3 action slots respectively for using the
  110.  *           unison skill/item
  111.  *           If <unison item actors: 4, 2> is used, then
  112.  *           <unison item actor act cost: 2> means actor with id 4 needs to
  113.  *           pay 2 action slots while that with id 2 needs to use the number
  114.  *           of action slots of the unison skill/item for using it
  115.  *============================================================================
  116.  *    ## Plugin Call Info
  117.  *----------------------------------------------------------------------------
  118.  *    # Skill/Item manipulations
  119.  *      1. meta.unisonItemActorActCosts
  120.  *         - Returns the Array of action costs each needed by its
  121.  *           corresponding actor with id in meta.unisonItemActors to use this
  122.  *           skill/item
  123.  *      2. meta.unisonItemActorActCosts = [cost, cost, ...]
  124.  *         - Sets the Array of of action costs each needed by its
  125.  *           corresponding actor with id in meta.unisonItemActors to use this
  126.  *           skill/item
  127.  *         - All meta.unisonItemActorActCosts changes can be saved if
  128.  *           DoubleX RMMV Dynamic Data is used
  129.  *============================================================================
  130.  */
  131.  
  132. var DoubleX_RMMV = DoubleX_RMMV || {};
  133. DoubleX_RMMV['Act Cost Compatibility'] = 'v1.01b';
  134.  
  135. /*============================================================================
  136.  *    ## Plugin Implementations
  137.  *       You need not edit this part as it's about how this plugin works
  138.  *----------------------------------------------------------------------------
  139.  *    # Plugin Support Info:
  140.  *      1. Prerequisites
  141.  *         - Solid understanding of how DoubleX RMMV Action Cost and each
  142.  *           addressed plugin works
  143.  *         - Decent plugin development proficiency to fully comprehend this
  144.  *           plugin
  145.  *      2. Function documentation
  146.  *         - The 1st part describes why this function's rewritten/extended for
  147.  *           rewritten/extended functions or what the function does for new
  148.  *           functions
  149.  *         - The 2nd part describes what the arguments of the function are
  150.  *         - The 3rd part informs which version rewritten, extended or created
  151.  *           this function
  152.  *         - The 4th part informs whether the function's rewritten or new
  153.  *         - The 5th part informs whether the function's a real or potential
  154.  *           hotspot
  155.  *         - The 6th part describes how this function works for new functions
  156.  *           only, and describes the parts added, removed or rewritten for
  157.  *           rewritten or extended functions only
  158.  *         Example:
  159.  * /*----------------------------------------------------------------------
  160.  *  *    Why rewrite/extended/What this function does
  161.  *  *----------------------------------------------------------------------*/
  162. /* // arguments: What these arguments are
  163.  * functionName = function(arguments) { // Version X+; Hotspot
  164.  *     // Added/Removed/Rewritten to do something/How this function works
  165.  *     functionContents
  166.  *     //
  167.  * } // functionName
  168.  *----------------------------------------------------------------------------*/
  169.  
  170. if (DoubleX_RMMV['Act Cost']) {
  171.  
  172. DoubleX_RMMV.Act_Cost_Compatibility = {};
  173.  
  174. /*----------------------------------------------------------------------------*/
  175.  
  176. if (DoubleX_RMMV["PATB Core"]) { // v1.00b+
  177.  
  178. DoubleX_RMMV.Act_Cost_Compatibility["PATB Core"] = {};
  179.  
  180. (function(AC, ACCATB) {
  181.  
  182.     'use strict';
  183.  
  184.     ACCATB.BattleManager = {};
  185.     var BM = ACCATB.BattleManager;
  186.  
  187.     BM.processTurn = BattleManager.processTurn;
  188.     BattleManager.processTurn = function() {
  189.         // Added to ensures battlers can use valid actions upon executing them
  190.         this._subject.actCostInputs = -999;
  191.         // PATB Act Validity
  192.         BM.processTurn.apply(this, arguments);
  193.     }; // BattleManager.processTurn
  194.  
  195.     ACCATB.Game_BattlerBase = {};
  196.     var GBB = ACCATB.Game_BattlerBase;
  197.  
  198.     // act: The action to have all its reserved action slots confirmed
  199.     GBB.confirmAct = function(act) { // v1.00c+; New
  200.         // Ensures all reserved action slots are confirmed as well
  201.         var reservedActs = GB.actCost.call(this, act.item()) - 1;
  202.         var lastAct = this._actions.length - this._actCostInputs - 1;
  203.         for (var index = lastAct; index > lastAct - reservedActs; index--) {
  204.             this._actions[index].patb_confirm = true;
  205.         }
  206.         // PATB Inputability
  207.     }; // GBB.confirmAct
  208.  
  209.     var GB = AC.Game_Battler;
  210.  
  211.     ACCATB.Game_Actor = {};
  212.     var GA = ACCATB.Game_Actor;
  213.  
  214.     GA.confirm_patb_act = Game_Actor.prototype.confirm_patb_act;
  215.     Game_Actor.prototype.confirm_patb_act = function() {
  216.     // v1.00c+
  217.         GA.confirm_patb_act.apply(this, arguments);
  218.         // Added to ensure all reserved action slots are confirmed as well
  219.         GBB.confirmAct.call(this, this.inputtingAction());
  220.         // PATB Inputability
  221.     }; // Game_Actor.prototype.confirm_patb_act
  222.  
  223. })(DoubleX_RMMV.Act_Cost, DoubleX_RMMV.Act_Cost_Compatibility["PATB Core"]);
  224.  
  225. } // if (DoubleX_RMMV["PATB Core"])
  226.  
  227. /*----------------------------------------------------------------------------*/
  228.  
  229. if (DoubleX_RMMV["Unison Item Default"]) {
  230.  
  231. DoubleX_RMMV.Act_Cost_Compatibility["Unison Item Default"] = {};
  232.  
  233. (function(AC, UI, ACCUI) {
  234.  
  235.     'use strict';
  236.  
  237.     var DM = UI.DataManager;
  238.     ACCUI.DataManager = {};
  239.     var DMACCUI = ACCUI.DataManager;
  240.  
  241.     // data: The data to have its notetags read
  242.     DMACCUI.loadItemNotes = DM.loadItemNotes;
  243.     DM.loadItemNotes = function(data) {
  244.         DMACCUI.loadItemNotes(data);
  245.         // Added to read and store values of <unison item actor act cost: costs>
  246.         var uIAACs = data.meta.unisonItemActorActCosts = [];
  247.         var ACs = /< *unison +item +actor +act +cost *: *(\d+(?: *, *\d+)*) *>/i;
  248.         data.note.split(/[\r\n]+/).forEach(function(line) {
  249.             if (line.match(ACs)) { DM.storeItemNotes(uIAACs); }
  250.         });
  251.         // Unison Item Config Act Cost
  252.     }; // DM.loadItemNotes
  253.  
  254.     var BM = AC.BattleManager;
  255.     ACCUI.BattleManager = {};
  256.     var BMACCUI = ACCUI.BattleManager;
  257.  
  258.     BMACCUI.reserveActs = BM.reserveActs;
  259.     BM.reserveActs = function() {
  260.         // Rewritten to not using this function for unison skills/items
  261.         var actor = this.actor();
  262.         if (!actor) { return; }
  263.         if (actor.inputtingAction().item().meta.unisonItemActors.length <= 1) {
  264.             BMACCUI.reserveActs.apply(this, arguments);
  265.         }
  266.         // Unison Item Config Act Cost
  267.     }; // BM.reserveActs
  268.  
  269.     BMACCUI.releaseReservedActs = BM.releaseReservedActs;
  270.     BM.releaseReservedActs = function() {
  271.         // Added to not using this function for unison skills/items
  272.         var actor = this.actor();
  273.         if (!actor) { return; }
  274.         var act = actor.inputtingAction();
  275.         if (act.item().meta.unisonItemActors.length > 1) { return act.clear(); }
  276.         // Unison Item Config Act Cost
  277.         BMACCUI.releaseReservedActs.apply(this, arguments);
  278.     }; // BM.releaseReservedActs
  279.  
  280.     BM = UI.BattleManager;
  281.  
  282.     BM.addUnisonActors = function() { // Rewrite
  283.         var actor = this.actor(), act, item;
  284.         if (actor) { act = actor.inputtingAction(); }
  285.         if (act) { item = act.item(); }
  286.         if (!item || item.meta.unisonItemActors.length <= 1) { return; }
  287.         var actorIds = item.meta.unisonItemActors;
  288.         // Rewritten to store the action cost for each unison invokee as well
  289.         var actSlot = [actor.index(), actor.actionInputIndex];
  290.         var actCosts = item.meta.unisonItemActorActCosts.slice(0);
  291.         var actorId = actor.actorId(), actCost = GB.actCost.call(actor, item);
  292.         BM.unisonActors[actSlot] = [actorIds, actCosts];
  293.         for (var index = 0, length = actorIds.length; index < length; index++) {
  294.             actCosts[index] = actCosts[index] || actCost;
  295.             if (actorId === actorIds[index]) { actCosts[index] -= 1; }
  296.             if (!actCosts[index]) { actCosts.push(actCosts[index]); }
  297.             $gameActors.actor(actorIds[index]).actCostInputs += actCosts[index];
  298.         }
  299.         // Unison Item Config Act Cost
  300.         // Unison Item Default Invokee Act Slot Num
  301.     }; // BM.addUnisonActors
  302.  
  303.     // actor: The currently selected actor
  304.     BM.eraseUnisonActors = function(actor) { // Rewrite
  305.         var actors = BM.unisonActors[[actor.index(), actor.actionInputIndex]];
  306.         if (!actors) { return; }
  307.         BM.unisonActors[[actor.index(), actor.actionInputIndex]] = null;
  308.         // Rewritten to address the action cost for each unison invokee as well
  309.         var actorIds = actors[0], actCosts = actors[1];
  310.         for (var i = 0, length = actorIds.length; i < length; i++) {
  311.             $gameActors.actor(actorIds[i]).actCostInputs -= actCosts[i];
  312.         }
  313.         // Unison Item Config Act Cost
  314.         // Unison Item Default Invokee Act Slot Num
  315.     }; // BM.eraseUnisonActors
  316.  
  317.     BMACCUI.clearUnisonActors = BM.clearUnisonActors;
  318.     BM.clearUnisonActors = function() {
  319.         BMACCUI.clearUnisonActors.apply(this, arguments);
  320.         // Added to actCostInputs for reserving action slots from invokees too
  321.         $gameParty.movableMembers().forEach(function(mem) {
  322.             mem.actCostInputs = -999;
  323.         });
  324.         // Unison Item Config Act Cost
  325.         // Unison Item Default Invokee Act Slot Num
  326.     }; // BM.clearUnisonActors
  327.  
  328.     var GBB = AC.Game_BattlerBase;
  329.     ACCUI.Game_BattlerBase = {};
  330.     var GBBACCUI = ACCUI.Game_BattlerBase;
  331.     GBBACCUI.canReserveActs = GBB.canReserveActs;
  332.     GBB.canReserveActs = function(item) {
  333.         // Added to check for unison acion cost for the unison invoker as well
  334.         if (!item) { return false; }
  335.         if (this.isActor()) {
  336.             var emptyActs = this._actions.filter(function(act) {
  337.                 return !act.item();
  338.             }).length;
  339.             var actorId = this.actorId(), actorIds = item.meta.unisonItemActors;
  340.             var actCosts = item.meta.unisonItemActorActCosts;
  341.             if (actorIds.length > 1) {
  342.                 for (var i = 0, length = actorIds.length; i < length; i++) {
  343.                     if (actorId !== actorIds[i]) { continue; }
  344.                     if (!actCosts[i]) { break; }
  345.                     return actCosts[i] <= emptyActs - this._actCostInputs;
  346.                 }
  347.             }
  348.         }
  349.         // Unison Item Config Act Cost
  350.         return GBBACCUI.canReserveActs.apply(this, arguments);
  351.     }; // GBB.canReserveActs
  352.  
  353.     GBB = UI.Game_BattlerBase;
  354.  
  355.     GBBACCUI.canInput = Game_BattlerBase.prototype.canInput;
  356.     Game_BattlerBase.prototype.canInput = function() {
  357.         // Rewritten to check if at least 1 action slot isn't reserved
  358.         if (!GBBACCUI.canInput.apply(this, arguments)) { return false; }
  359.         if (!this.isActor() || !$gameParty.inBattle()) { return true; }
  360.         return this._actCostInputs < this._actions.length;
  361.         // Unison Item Default Invokee Act Slot Num
  362.     }; // Game_BattlerBase.prototype.canInput
  363.  
  364.     GBB.canUseUnisonSkill = function(skill) { // Rewrite
  365.         var actor, actorIds = skill.meta.unisonItemActors;
  366.         var inBattle = $gameParty.inBattle(), mems = $gameParty.aliveMembers();
  367.         // Added
  368.         var actCosts = skill.meta.unisonItemActorActCosts;
  369.         var actCost = GB.actCost.call(this, skill);
  370.         // Unison Item Default Invokee Act Slot Num
  371.         var learnFlags = skill.meta.unisonItemActorLearn;
  372.         for (var i = 0, length = actorIds.length; i < length; i++) {
  373.             if (this.actorId() === actorIds[i]) { continue; }
  374.             actor = mems.filter(function(m) {
  375.                 return m.index() > this.index() && m.actorId() === actorIds[i];
  376.             }, this)[0];
  377.             if (!actor || inBattle && !actor.canInput()) { return false; }
  378.             if (!actor.meetsSkillConditions(skill)) { return false; }
  379.             // Added to check if the unison invokee can pay the action cost
  380.             if (!inBattle) { continue; }
  381.             if (!GBB.hasEnoughActCost.call(actor, actCosts[i] || actCost)) {
  382.                 return false;
  383.             }
  384.             // Unison Item Default Invokee Act Slot Num
  385.             if (learnFlags[i] && actor.skills().every(function(s) {
  386.                 return s !== skill;
  387.             })) { return false; }
  388.         }
  389.         return true;
  390.     }; // GBB.canUseUnisonSkill
  391.  
  392.     GBB.canUseUnisonItem = function(item) { // Rewrite
  393.         if (!this.meetsItemConditions(item)) { return false; }
  394.         var actor, actorIds = item.meta.unisonItemActors;
  395.         var inBattle = $gameParty.inBattle(), mems = $gameParty.aliveMembers();
  396.         // Added
  397.         var actCosts = item.meta.unisonItemActorActCosts;
  398.         var actCost = GB.actCost.call(this, item);
  399.         // Unison Item Default Invokee Act Slot Num
  400.         for (var i = 0, length = actorIds.length; i < length; i++) {
  401.             if (this.actorId() === actorIds[i]) { continue; }
  402.             actor = mems.filter(function(m) {
  403.                 return m.index() > this.index() && m.actorId() === actorIds[i];
  404.             }, this)[0];
  405.             if (!actor || inBattle && !actor.canInput()) { return false; }
  406.             // Added to check if the unison invokee can pay the action cost
  407.             if (!inBattle) { continue; }
  408.             if (!GBB.hasEnoughActCost.call(actor, actCosts[i] || actCost)) {
  409.                 return false;
  410.             }
  411.             // Unison Item Default Invokee Act Slot Num
  412.         }
  413.         return true;
  414.     }; // GBB.canUseUnisonItem
  415.  
  416.     // actCost: The number of action slots needed for the action
  417.     GBB.hasEnoughActCost = function(actCost) { // New
  418.         // Checks if the unison invokee has enough empty action slots
  419.         return this._actions.length - this._actCostInputs >= actCost;
  420.         // Unison Item Default Invokee Act Slot Num
  421.     }; // GBB.hasEnoughActCost
  422.  
  423.     var GB = AC.Game_Battler;
  424.  
  425.     var WIL = AC.Window_ItemList;
  426.     ACCUI.Window_ItemList = {};
  427.     var WILACCUI = ACCUI.Window_ItemList;
  428.  
  429.     WILACCUI.drawActCost = WIL.drawActCost;
  430.     WIL.drawActCost = function(item, x, y, width) {
  431.         // Added to draw the act cost in battle for each unison actor
  432.         if ($gameParty.inBattle()) {
  433.             var actorIds = item.meta.unisonItemActors;
  434.             if (actorIds.length > 1) {
  435.                 var actCosts = item.meta.unisonItemActorActCosts;
  436.                 var actorId = BattleManager.actor().actorId();
  437.                 for (var i = 0, length = actorIds.length; i < length; i++) {
  438.                     if (!actCosts[i] || actorId !== actorIds[i]) { continue; }
  439.                     return this.drawText(actCosts[i], x, y, width, 'right');
  440.                 }
  441.             }
  442.         }
  443.         // Unison Item Config Act Cost
  444.         WILACCUI.drawActCost.apply(this, arguments);
  445.     }; // WIL.drawActCost
  446.  
  447.     var WSL = AC.Window_SkillList;
  448.     ACCUI.Window_SkillList = {};
  449.     var WSLACCUI = ACCUI.Window_SkillList;
  450.  
  451.     WSLACCUI.drawActCost = WSL.drawActCost;
  452.     WSL.drawActCost = function(skill, x, y, width) {
  453.         // Added to draw the act cost for each unison actor
  454.         this.changeTextColor(this.normalColor());
  455.         var actorIds = skill.meta.unisonItemActors;
  456.         if (actorIds.length > 1) {
  457.             var actCosts = skill.meta.unisonItemActorActCosts;
  458.             var actorId = this._actor.actorId();
  459.             for (var i = 0, length = actorIds.length; i < length; i++) {
  460.                 if (!actCosts[i] || actorId !== actorIds[i]) { continue; }
  461.                 return this.drawText(actCosts[i], x, y, width, 'right');
  462.             }
  463.         }
  464.         // Unison Item Config Act Cost
  465.         WSLACCUI.drawActCost.apply(this, arguments);
  466.     }; // WSL.drawActCost
  467.  
  468. })(DoubleX_RMMV.Act_Cost, DoubleX_RMMV.Unison_Item,
  469.    DoubleX_RMMV.Act_Cost_Compatibility["Unison Item Default"]);
  470.  
  471. } // if (DoubleX_RMMV["Unison Item Default"])
  472.  
  473. /*----------------------------------------------------------------------------*/
  474.  
  475. if (Imported['VE - Conditional Turn Battle']) { // v1.01a+
  476.  
  477. DoubleX_RMMV.Act_Cost_Compatibility["VE CTB"] = {};
  478.  
  479. (function(AC, ACCVECTB) {
  480.  
  481.     'use strict';
  482.  
  483.     ACCVECTB.BattleManager = {};
  484.     var BM = ACCVECTB.BattleManager;
  485.  
  486.     BM.setupAction = BattleManager.setupAction;
  487.     BattleManager.setupAction = function(battler) {
  488.         // Added to ensures battlers can use valid actions upon executing them
  489.         battler.actCostInputs = -999;
  490.         // VE CTB Act Validity
  491.         BM.setupAction.apply(this, arguments);
  492.     }; // BattleManager.setupAction
  493.  
  494. })(DoubleX_RMMV.Act_Cost, DoubleX_RMMV.Act_Cost_Compatibility["VE CTB"]);
  495.  
  496. } // if (Imported['VE - Conditional Turn Battle'])
  497.  
  498. /*----------------------------------------------------------------------------*/
  499.  
  500. } else {
  501.     alert('Place Action Cost Compatibility below Action Cost.');
  502. } // if (DoubleX_RMMV['Act Cost'])
  503.  
  504. /*============================================================================*/
Add Comment
Please, Sign In to add comment