设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4273|回复: 3
打印 上一主题 下一主题

[有事请教] 使用YEP的被动技能脚本增加具体数值的方法

[复制链接]

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
跳转到指定楼层
1
发表于 2018-2-2 16:45:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
使用YEP的被动技能脚本增加具体数值的方法
被动状态状态设置处是否可以增加具体数值的攻击力吗,比如+5的攻击力?而不是以基础值百分比的形式增加。

Lv3.寻梦者

梦石
0
星屑
3657
在线时间
1133 小时
注册时间
2017-4-6
帖子
278

开拓者

2
发表于 2018-2-3 12:36:45 | 只看该作者
应该可以,不过最好不要,yep被动主要针对实时运行的技能,加属性的被动也吃帧数,多了会很卡,给你一个被动插件,不会和YEP的起冲突,可以完美实现你要的功能
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3657
在线时间
1133 小时
注册时间
2017-4-6
帖子
278

开拓者

3
发表于 2018-2-3 12:38:34 | 只看该作者
夏的66rpg 发表于 2018-2-3 12:36
应该可以,不过最好不要,yep被动主要针对实时运行的技能,加属性的被动也吃帧数,多了会很卡,给你一个被动插件 ...
  1. //==============================================================================
  2. // dsPassiveSkill.js
  3. // Copyright (c) 2015 - 2017 Douraku
  4. // Released under the MIT License.
  5. // http://opensource.org/licenses/mit-license.php
  6. //==============================================================================

  7. /*:
  8. * @plugindesc パッシブスキルを実装するプラグイン ver1.7.0
  9. * @author 道楽
  10. *
  11. * @param Show Battle
  12. * @desc パッシブスキルを戦闘中に表示するか
  13. * (true なら表示する / false なら表示しない)
  14. * @default true
  15. *
  16. * @help
  17. * このプラグインは以下のメモタグの設定ができます。
  18. *
  19. * -----------------------------------------------------------------------------
  20. * スキルに設定するメモタグ
  21. *
  22. * --------
  23. * ・装備できる武器の種類を追加(Equip Weapon)
  24. * <passiveEWPN[武器タイプ]>
  25. *  [武器タイプ] - 武器タイプの番号を2桁の数値で設定する。(数字)
  26. *
  27. * --------
  28. * ・装備できる防具の種類を追加(Equip Armor)
  29. * <passiveEARM[防具タイプ]>
  30. *  [防具タイプ] - 防具タイプの番号を2桁の数値で設定する。(数字)
  31. *
  32. * --------
  33. * ・特定の通常能力値をアップ(Parameter Boost)
  34. * <passivePBST[能力値番号]:[上昇量(%)]>
  35. *  [能力値番号] - 上昇させる通常能力値の番号を1桁の数値で設定する。(数字)
  36. *                 0 - HP
  37. *                 1 - MP
  38. *                 2 - 攻撃力
  39. *                 3 - 防御力
  40. *                 4 - 魔法力
  41. *                 5 - 魔法防御
  42. *                 6 - 敏捷性
  43. *                 7 - 運
  44. *  [上昇量(%)]  - 能力値の上昇量。
  45. *                 %なしなら直値、ありなら倍率となる。(数字)
  46. *                 装備なし状態の能力値に対しての倍率がかかる。
  47. *
  48. * --------
  49. * ・一定の条件下において、特定の通常能力値をアップ(Parameter Boost Ex)
  50. * <passivePBSTEX[能力値番号]:[上昇量(%)],[参照する条件],[判定する値]>
  51. *  [能力値番号]   - passivePBST参照
  52. *  [上昇量(%)]    - passivePBST参照
  53. *  [参照する条件] - 効果を発揮する条件を以下の中から設定する。(文字列)
  54. *                   HPUP - HPが特定の値以上の場合に効果を発揮
  55. *                   HPLW - HPが特定の値以下の場合に効果を発揮
  56. *                   MPUP - MPが特定の値以上の場合に効果を発揮
  57. *                   MPLW - MPが特定の値以下の場合に効果を発揮
  58. *                   TPUP - TPが特定の値以上の場合に効果を発揮
  59. *                   TPLW - TPが特定の値以下の場合に効果を発揮
  60. *  [判定する値]   - 条件の判定に使用するパーセンテージ。(数字)
  61. *
  62. * 例) HP50%以下で攻撃力が50%アップするスキルを作成する場合
  63. * <passivePBSTEX2:50%,HPUP,50>
  64. *
  65. * --------
  66. * ・特定の追加能力値をアップ(XParameter Boost)
  67. * <passiveXPBST[能力値番号]:[上昇量]>
  68. *  [能力値番号] - 上昇させる追加能力値の番号を1桁の数値で設定する。(数字)
  69. *                 0 - 命中率
  70. *                 1 - 回避率
  71. *                 2 - 会心率
  72. *                 3 - 会心回避率
  73. *                 4 - 魔法回避率
  74. *                 5 - 魔法反射率
  75. *                 6 - 反撃率
  76. *                 7 - HP再生率
  77. *                 8 - MP再生率
  78. *                 9 - TP再生率
  79. *  [上昇量]     - 能力値の上昇量。(数字)
  80. *
  81. * --------
  82. * ・一定の条件下において、特定の追加能力値をアップ(XParameter Boost Ex)
  83. * <passiveXPBSTEX[能力値番号]:[上昇量],[参照する条件],[判定する値]>
  84. *  [能力値番号]   - passiveXPBST参照
  85. *  [上昇量]       - passiveXPBST参照
  86. *  [参照する条件] - passivePBSTEX参照
  87. *  [判定する値]   - passivePBSTEX参照
  88. *
  89. * 例) MP最大時にHPが5%再生するスキルを作成する場合
  90. * <passiveXPBSTEX7:5,MPUP,100>
  91. *
  92. * --------
  93. * ・特定の特殊能力値をアップ(SParameter Boost)
  94. * <passiveSPBST[能力値番号]:[上昇量]>
  95. *  [能力値番号] - 上昇させる特殊能力値の番号を1桁の数値で設定する。(数字)
  96. *                 0 - 狙われ率
  97. *                 1 - 防御効果率
  98. *                 2 - 回復効果率
  99. *                 3 - 薬の知識率
  100. *                 4 - MP消費率
  101. *                 5 - TPチャージ率
  102. *                 6 - 物理ダメージ率
  103. *                 7 - 魔法ダメージ率
  104. *                 8 - 床ダメージ率
  105. *                 9 - 経験値獲得率
  106. *  [上昇量]     - 能力値の上昇量。(数字)
  107. *
  108. * --------
  109. * ・一定の条件下において、特定の追加能力値をアップ(XParameter Boost Ex)
  110. * <passiveSPBSTEX[能力値番号]:[上昇量],[参照する条件],[判定する値]>
  111. *  [能力値番号]   - passiveSPBST参照
  112. *  [上昇量]       - passiveSPBST参照
  113. *  [参照する条件] - passivePBSTEX参照
  114. *  [判定する値]   - passivePBSTEX参照
  115. *
  116. * 例) TPが50%以上の時に狙われやすくするスキルを作成する場合
  117. * <passiveSPBSTEX0:50,TPUP,50>
  118. *
  119. * --------
  120. * ※更新に伴い非推奨 (passivePBSTEXを使用してください)
  121. * ・一定のHP以下の場合のみ特定の通常能力値をアップ(Indomitable)
  122. * <passiveINDM[能力値番号]:[HP残量率],[上昇量(%)]>
  123. *  [能力値番号] - passivePBST参照
  124. *  [HP残量率]   - 効果が発揮されるHPの残量率を%で設定する。(数字)
  125. *  [上昇量(%)]  - 能力値の上昇量。
  126. *                 %なしなら直値、ありなら倍率となる。(数字)
  127. *                 装備なし状態の能力値に対しての倍率がかかる。
  128. *
  129. * --------
  130. * ※更新に伴い非推奨 (passiveXPBSTEXを使用してください)
  131. * ・一定のHP以下の場合のみ特定の追加能力値をアップ(XIndomitable)
  132. * <passiveXINDM[能力値番号]:[HP残量率],[上昇量]>
  133. *  [能力値番号] - passiveXPBST参照
  134. *  [HP残量率]   - 効果が発揮されるHPの残量率を%で設定する。(数字)
  135. *  [上昇量]     - 能力値の上昇量。(数字)
  136. *
  137. * --------
  138. * ※更新に伴い非推奨 (passiveSPBSTEXを使用してください)
  139. * ・一定のHP以下の場合のみ特定の特殊能力値をアップ(SIndomitable)
  140. * <passiveSINDM[能力値番号]:[HP残量率],[上昇量]>
  141. *  [能力値番号] - passiveSPBST参照
  142. *  [HP残量率]   - 効果が発揮されるHPの残量率を%で設定する。(数字)
  143. *  [上昇量]     - 能力値の上昇量。(数字)
  144. *
  145. * --------
  146. * ・属性有効度を設定(Element Rate)
  147. * <passiveELEM[属性番号]:[倍率]>
  148. *  [属性番号] - 有効度を設定する属性の番号を2桁の数値で設定する。(数字)
  149. *  [有効度]   - 有効度を表すパーセンテージ。(数字)
  150. *               職業等で設定されている属性有効度に乗算されます。
  151. *
  152. * --------
  153. * ・ステート有効度を設定(State Rate)
  154. * <passiveSTAT[ステート番号]:[有効度]>
  155. *  [ステート番号] - 耐性を上昇させるステートの番号を4桁の数値で設定する。(数字)
  156. *  [有効度]       - 有効度を表すパーセンテージ。(数字)
  157. *                   職業等で設定されているステート有効度に乗算されます。
  158. *
  159. * --------
  160. * ・無効化できるステートを追加(State Regist)
  161. * <passiveSTREG[ステート番号]>
  162. *  [ステート番号] - 無効化できるステートの番号を4桁の数値で設定する。(数字)
  163. *
  164. * --------
  165. * ・攻撃時ステートを設定(Attack State)
  166. * <passiveATKST[ステート番号]:[付与率]>
  167. *  [ステート番号] - 攻撃時に付与するステートの番号を4桁の数値で設定する。(数字)
  168. *  [付与率]       - 付与率を表すパーセンテージ。(数字)
  169. *                   職業等で設定されているステート付与率に加算されます。
  170. *
  171. * --------
  172. * ・スキルタイプ追加(Add Skill Type)
  173. * <passiveAST[スキルタイプ番号]>
  174. *  [スキルタイプ番号] - スキルタイプの番号を2桁の数値で設定する。(数字)
  175. *
  176. * --------
  177. * ・武器装備時の能力上昇値をアップ(Weapon Mastery)
  178. * <passiveWPNM[武器タイプ]:[上昇量(%)]>
  179. *  [武器タイプ] - 武器タイプの番号を2桁の数値で設定する。(数字)
  180. *  [上昇量(%)]  - 装備時の能力値の上昇量。
  181. *                 %なしなら直値、ありなら倍率となる。(数字)
  182. *
  183. * --------
  184. * ・防具装備時の能力上昇値をアップ(Armor Mastery)
  185. * <passiveARMM[防具タイプ]:[上昇量(%)]>
  186. *  [防具タイプ] - 防具タイプの番号を2桁の数値で設定する。(数字)
  187. *  [上昇量(%)]  - 装備時の能力値の上昇量。
  188. *                 %なしなら直値、ありなら倍率となる。(数字)
  189. *
  190. * --------
  191. * ・先制攻撃率をアップ(Preemptive)
  192. * <passivePREE:[上昇量]>
  193. *  [上昇量] - 先制攻撃率のアップ率を%で設定する。(数字)
  194. *
  195. * --------
  196. * ・不意打ち率をダウン(Anti Surprise)
  197. * <passiveASUP:[下降量]>
  198. *  [下降量] - 不意打ち率のダウン率を%で設定する。(数字)
  199. *
  200. * --------
  201. * ・行動回数を追加する(Action Plus)
  202. * <passiveAPLUS:[追加確率]>
  203. *  [追加確率(%)] - 行動を追加する確率を表すパーセンテージ。(数字)
  204. *
  205. * --------
  206. * ・自動戦闘を有効にする(Auto Battle)
  207. * <passiveAUTO>
  208. *
  209. * --------
  210. * ・防御を有効にする(Guard)
  211. * <passiveGUARD>
  212. *
  213. * --------
  214. * ・身代わり状態にする(Substitute)
  215. * <passiveSUBS>
  216. *
  217. * --------
  218. * ・TP持ち越しを有効にする(Preserve Tp)
  219. * <passivePRETP>
  220. *
  221. */

  222. var Imported = Imported || {};
  223. Imported.dsPassiveSkill = true;

  224. (function (exports) {
  225.         'use strict';

  226.         exports.Param = (function() {
  227.                 var ret = {};
  228.                 var parameters = PluginManager.parameters('dsPassiveSkill');
  229.                 ret.ShowBattle = Boolean(parameters['Show Battle'] === 'true' || false);
  230.                 return ret;
  231.         })();

  232.         //--------------------------------------------------------------------------
  233.         /** Utility */
  234.         function Utility() {}

  235.         Utility.calcParamBoost = function(baseParam, metaData)
  236.         {
  237.                 var ret = 0;
  238.                 var re = /([-]?\d+)(%?)/i;
  239.                 var match = re.exec(metaData);
  240.                 if ( match )
  241.                 {
  242.                         if ( match[2] === '%' )
  243.                         {
  244.                                 var rate = Number(match[1]) * 0.01;
  245.                                 ret = Math.floor(baseParam * rate);
  246.                         }
  247.                         else
  248.                         {
  249.                                 ret = Number(match[1]);
  250.                         }
  251.                 }
  252.                 return ret;
  253.         };

  254.         Utility.calcXParamBoost = function(metaData)
  255.         {
  256.                 var ret = 0;
  257.                 var re = /([-]?\d+)/i;
  258.                 var match = re.exec(metaData);
  259.                 if ( match )
  260.                 {
  261.                         ret = Number(match[1]) * 0.01;
  262.                 }
  263.                 return ret;
  264.         };

  265.         Utility.calcSParamBoost = function(metaData)
  266.         {
  267.                 var ret = 0;
  268.                 var re = /([-]?\d+)/i;
  269.                 var match = re.exec(metaData);
  270.                 if ( match )
  271.                 {
  272.                         ret = Number(match[1]) * 0.01;
  273.                 }
  274.                 return ret;
  275.         };

  276.         //--------------------------------------------------------------------------
  277.         /** Game_Actor */
  278.         Game_Actor.prototype.iteratePassiveSkill = function(metaName, callback)
  279.         {
  280.                 this.skills().forEach(function(skill) {
  281.                         if ( skill.meta[metaName] )
  282.                         {
  283.                                 callback(skill.meta[metaName]);
  284.                         }
  285.                 });
  286.         };

  287.         Game_Actor.prototype.evaluateCondition = function(condition, value)
  288.         {
  289.                 var ret = false;
  290.                 switch ( condition )
  291.                 {
  292.                 case 'HPUP': ret = (this.hpRate() >= value * 0.01) ? true : false; break;
  293.                 case 'HPLW': ret = (this.hpRate() <= value * 0.01) ? true : false; break;
  294.                 case 'MPUP': ret = (this.mpRate() >= value * 0.01) ? true : false; break;
  295.                 case 'MPLW': ret = (this.mpRate() <= value * 0.01) ? true : false; break;
  296.                 case 'TPUP': ret = (this.tpRate() >= value * 0.01) ? true : false; break;
  297.                 case 'TPLW': ret = (this.tpRate() <= value * 0.01) ? true : false; break;
  298.                 }
  299.                 return ret;
  300.         };

  301.         var _Game_Actor_paramBase = Game_Actor.prototype.paramBase;
  302.         Game_Actor.prototype.paramBaseDirect = function(paramId)
  303.         {
  304.                 return _Game_Actor_paramBase.call(this, paramId);
  305.         };

  306.         Game_Actor.prototype.paramBaseBoost = function(paramId)
  307.         {
  308.                 var baseParam = this.paramBaseDirect(paramId);
  309.                 var ret = 0;
  310.                 var tagPBST = 'passivePBST' + ('0'+paramId).slice(-1);
  311.                 this.iteratePassiveSkill(tagPBST, function(metaData) {
  312.                         ret += Utility.calcParamBoost(baseParam, metaData);
  313.                 });
  314.                 var tagPBSTEX = 'passivePBSTEX' + ('0'+paramId).slice(-1);
  315.                 this.iteratePassiveSkill(tagPBSTEX, function(metaData) {
  316.                         var splitData = metaData.split(',');
  317.                         if ( this.evaluateCondition(splitData[1], Number(splitData[2])) )
  318.                         {
  319.                                 ret += Utility.calcParamBoost(baseParam, splitData[0]);
  320.                         }
  321.                 }.bind(this));
  322.                 var tagINDM = 'passiveINDM' + ('0'+paramId).slice(-1);
  323.                 this.iteratePassiveSkill(tagINDM, function(metaData) {
  324.                         var re = /(\d+)\,([-]?\d+)(%?)/i;
  325.                         var match = re.exec(metaData);
  326.                         if ( match )
  327.                         {
  328.                                 if ( this.hpRate() <= Number(match[1]) * 0.01 )
  329.                                 {
  330.                                         if ( match[3] === '%' )
  331.                                         {
  332.                                                 var rate = Number(match[2]) * 0.01;
  333.                                                 ret += Math.floor(baseParam * rate);
  334.                                         }
  335.                                         else
  336.                                         {
  337.                                                 ret += Number(match[2]);
  338.                                         }
  339.                                 }
  340.                         }
  341.                 }.bind(this));
  342.                 return ret;
  343.         };

  344.         Game_Actor.prototype.paramBase = function(paramId)
  345.         {
  346.                 var ret = this.paramBaseDirect(paramId);
  347.                 ret += this.paramBaseBoost(paramId);
  348.                 return ret;
  349.         };

  350.         var _Game_Actor_paramPlus = Game_Actor.prototype.paramPlus;
  351.         Game_Actor.prototype.paramPlusDirect = function(paramId)
  352.         {
  353.                 return _Game_Actor_paramPlus.call(this, paramId);
  354.         };

  355.         Game_Actor.prototype.paramPlusBoost = function(paramId)
  356.         {
  357.                 var ret = 0;
  358.                 this.equips().forEach(function(item) {
  359.                         if ( item )
  360.                         {
  361.                                 if ( DataManager.isWeapon(item) )
  362.                                 {
  363.                                         var tag = 'passiveWPNM' + ('00'+item.wtypeId).slice(-2);
  364.                                         this.iteratePassiveSkill(tag, function(metaData) {
  365.                                                 if ( item.params[paramId] > 0 )
  366.                                                 {
  367.                                                         ret += Utility.calcParamBoost(item.params[paramId], metaData);
  368.                                                 }
  369.                                         });
  370.                                 }
  371.                                 else if ( DataManager.isArmor(item) )
  372.                                 {
  373.                                         var tag = 'passiveARMM' + ('00'+item.atypeId).slice(-2);
  374.                                         this.iteratePassiveSkill(tag, function(metaData) {
  375.                                                 if ( item.params[paramId] > 0 )
  376.                                                 {
  377.                                                         ret += Utility.calcParamBoost(item.params[paramId], metaData);
  378.                                                 }
  379.                                         });
  380.                                 }
  381.                         }
  382.                 }, this);
  383.                 return ret;
  384.         };

  385.         Game_Actor.prototype.paramPlus = function(paramId)
  386.         {
  387.                 var ret = this.paramPlusDirect(paramId);
  388.                 ret += this.paramPlusBoost(paramId);
  389.                 return ret;
  390.         };

  391.         var _Game_Actor_xparam = Game_Actor.prototype.xparam;
  392.         Game_Actor.prototype.xparamDirect = function(xparamId)
  393.         {
  394.                 return _Game_Actor_xparam.call(this, xparamId);
  395.         };

  396.         Game_Actor.prototype.xparam = function(xparamId)
  397.         {
  398.                 var ret = this.xparamDirect(xparamId);
  399.                 var tagPBST = 'passiveXPBST' + ('0'+xparamId).slice(-1);
  400.                 this.iteratePassiveSkill(tagPBST, function(metaData) {
  401.                         ret += Utility.calcXParamBoost(metaData);
  402.                 });
  403.                 var tagPBSTEX = 'passiveXPBSTEX' + ('0'+xparamId).slice(-1);
  404.                 this.iteratePassiveSkill(tagPBSTEX, function(metaData) {
  405.                         var splitData = metaData.split(',');
  406.                         if ( this.evaluateCondition(splitData[1], Number(splitData[2])) )
  407.                         {
  408.                                 ret += Utility.calcXParamBoost(splitData[0]);
  409.                         }
  410.                 }.bind(this));
  411.                 var tagINDM = 'passiveXINDM' + ('0'+xparamId).slice(-1);
  412.                 this.iteratePassiveSkill(tagINDM, function(metaData) {
  413.                         var re = /(\d+)\,([-]?\d+)/i;
  414.                         var match = re.exec(metaData);
  415.                         if ( match )
  416.                         {
  417.                                 if ( this.hpRate() <= Number(match[1]) * 0.01 )
  418.                                 {
  419.                                         ret += Number(match[2]) * 0.01;
  420.                                 }
  421.                         }
  422.                 }.bind(this));
  423.                 return ret;
  424.         };

  425.         var _Game_Actor_sparam = Game_Actor.prototype.sparam;
  426.         Game_Actor.prototype.sparamDirect = function(sparamId)
  427.         {
  428.                 return _Game_Actor_sparam.call(this, sparamId);
  429.         };

  430.         Game_Actor.prototype.sparam = function(sparamId)
  431.         {
  432.                 var ret = this.sparamDirect(sparamId);
  433.                 var tagPBST = 'passiveSPBST' + ('0'+sparamId).slice(-1);
  434.                 this.iteratePassiveSkill(tagPBST, function(metaData) {
  435.                         ret += Utility.calcSParamBoost(metaData);
  436.                 });
  437.                 var tagPBSTEX = 'passiveSPBSTEX' + ('0'+sparamId).slice(-1);
  438.                 this.iteratePassiveSkill(tagPBSTEX, function(metaData) {
  439.                         var splitData = metaData.split(',');
  440.                         if ( this.evaluateCondition(splitData[1], Number(splitData[2])) )
  441.                         {
  442.                                 ret += Utility.calcSParamBoost(splitData[0]);
  443.                         }
  444.                 }.bind(this));
  445.                 var tagINDM = 'passiveSINDM' + ('0'+sparamId).slice(-1);
  446.                 this.iteratePassiveSkill(tagINDM, function(metaData) {
  447.                         var re = /(\d+)\,([-]?\d+)/i;
  448.                         var match = re.exec(metaData);
  449.                         if ( match )
  450.                         {
  451.                                 if ( this.hpRate() <= Number(match[1]) * 0.01 )
  452.                                 {
  453.                                         ret += Number(match[2]) * 0.01;
  454.                                 }
  455.                         }
  456.                 }.bind(this));
  457.                 return ret;
  458.         };

  459.         var _Game_Actor_elementRate = Game_Actor.prototype.elementRate;
  460.         Game_Actor.prototype.elementRate = function(elementId)
  461.         {
  462.                 var ret = _Game_Actor_elementRate.call(this, elementId);
  463.                 var tag = 'passiveELEM' + ('00'+elementId).slice(-2);
  464.                 this.iteratePassiveSkill(tag, function(metaData) {
  465.                         var re = /([-]?\d+)/i;
  466.                         var match = re.exec(metaData);
  467.                         if ( match )
  468.                         {
  469.                                 ret *= Number(match[1]) * 0.01;
  470.                         }
  471.                 });
  472.                 return ret;
  473.         };

  474.         var _Game_Actor_stateRate = Game_Actor.prototype.stateRate;
  475.         Game_Actor.prototype.stateRate = function(stateId)
  476.         {
  477.                 var ret = _Game_Actor_stateRate.call(this, stateId);
  478.                 var tag = 'passiveSTAT' + ('0000'+stateId).slice(-4);
  479.                 this.iteratePassiveSkill(tag, function(metaData) {
  480.                         var re = /([-]?\d+)/i;
  481.                         var match = re.exec(metaData);
  482.                         if ( match )
  483.                         {
  484.                                 ret *= Number(match[1]) * 0.01;
  485.                         }
  486.                 });
  487.                 return ret;
  488.         };

  489.         var _Game_Actor_stateResistSet = Game_Actor.prototype.stateResistSet;
  490.         Game_Actor.prototype.stateResistSet = function()
  491.         {
  492.                 var ret = _Game_Actor_stateResistSet.call(this);
  493.                 var num = $dataStates.length;
  494.                 for ( var ii = 1; ii < num; ii++ )
  495.                 {
  496.                         var tag = 'passiveSTREG' + ('0000'+ii).slice(-4);
  497.                         this.iteratePassiveSkill(tag, function(metaData) {
  498.                                 if ( !ret.contains(ii) )
  499.                                 {
  500.                                         ret.push(ii);
  501.                                 }
  502.                         });
  503.                 }
  504.                 return ret;
  505.         };

  506.         var _Game_Actor_attackStates = Game_Actor.prototype.attackStates;
  507.         Game_Actor.prototype.attackStates = function()
  508.         {
  509.                 var ret = _Game_Actor_attackStates.call(this);
  510.                 var num = $dataStates.length;
  511.                 for ( var ii = 1; ii < num; ii++ )
  512.                 {
  513.                         var tag = 'passiveATKST' + ('0000'+ii).slice(-4);
  514.                         this.iteratePassiveSkill(tag, function(metaData) {
  515.                                 if ( !ret.contains(ii) )
  516.                                 {
  517.                                         ret.push(ii);
  518.                                 }
  519.                         });
  520.                 }
  521.                 return ret;
  522.         };

  523.         var _Game_Actor_attackStatesRate = Game_Actor.prototype.attackStatesRate;
  524.         Game_Actor.prototype.attackStatesRate = function(stateId)
  525.         {
  526.                 var ret = _Game_Actor_attackStatesRate.call(this, stateId);
  527.                 var tag = 'passiveATKST' + ('0000'+stateId).slice(-4);
  528.                 this.iteratePassiveSkill(tag, function(metaData) {
  529.                         var re = /([-]?\d+)/i;
  530.                         var match = re.exec(metaData);
  531.                         if ( match )
  532.                         {
  533.                                 ret += Number(match[1]) * 0.01;
  534.                         }
  535.                 });
  536.                 return ret;
  537.         };

  538.         var _Game_Actor_addedSkillTypes = Game_Actor.prototype.addedSkillTypes;
  539.         Game_Actor.prototype.addedSkillTypes = function()
  540.         {
  541.                 var ret = _Game_Actor_addedSkillTypes.call(this);
  542.                 var skillTypesMax = $dataSystem.skillTypes.length;
  543.                 for ( var ii = 1; ii < skillTypesMax; ii++ )
  544.                 {
  545.                         if ( ret.indexOf(ii) < 0 )
  546.                         {
  547.                                 var tag = 'passiveAST' + ('00'+ii).slice(-2);
  548.                                 var find = false;
  549.                                 this.iteratePassiveSkill(tag, function(metaData) {
  550.                                         find = true;
  551.                                 });
  552.                                 if ( find )
  553.                                 {
  554.                                         ret.push(ii);
  555.                                 }
  556.                         }
  557.                 }
  558.                 return ret;
  559.         };

  560.         var _Game_Actor_isEquipWtypeOk = Game_Actor.prototype.isEquipWtypeOk;
  561.         Game_Actor.prototype.isEquipWtypeOk = function(wtypeId)
  562.         {
  563.                 var ret = _Game_Actor_isEquipWtypeOk.call(this, wtypeId);
  564.                 var tag = 'passiveEWPN' + ('00'+wtypeId).slice(-2);
  565.                 this.iteratePassiveSkill(tag, function(metaData) {
  566.                         ret = true;
  567.                 });
  568.                 return ret;
  569.         };

  570.         var _Game_Actor_isEquipAtypeOk = Game_Actor.prototype.isEquipAtypeOk;
  571.         Game_Actor.prototype.isEquipAtypeOk = function(atypeId)
  572.         {
  573.                 var ret = _Game_Actor_isEquipAtypeOk.call(this, atypeId);
  574.                 var tag = 'passiveEARM' + ('00'+atypeId).slice(-2);
  575.                 this.iteratePassiveSkill(tag , function(metaData) {
  576.                         ret = true;
  577.                 });
  578.                 return ret;
  579.         };

  580.         var _Game_Actor_actionPlusSet = Game_Actor.prototype.actionPlusSet;
  581.         Game_Actor.prototype.actionPlusSet = function()
  582.         {
  583.                 var ret = _Game_Actor_actionPlusSet.call(this);
  584.                 var tag = 'passiveAPLUS';
  585.                 this.iteratePassiveSkill(tag, function(metaData) {
  586.                         var re = /(\d+)/i;
  587.                         var match = re.exec(metaData);
  588.                         if ( match )
  589.                         {
  590.                                 ret.push(Number(match[1]) * 0.01);
  591.                         }
  592.                 });
  593.                 return ret;
  594.         };

  595.         var _Game_Actor_isAutoBattle = Game_Actor.prototype.isAutoBattle;
  596.         Game_Actor.prototype.isAutoBattle = function()
  597.         {
  598.                 var ret = _Game_Actor_isAutoBattle.call(this);
  599.                 var tag = 'passiveAUTO';
  600.                 this.iteratePassiveSkill(tag, function(metaData) {
  601.                         ret = true;
  602.                 });
  603.                 return ret;
  604.         };

  605.         var _Game_Actor_isGuard = Game_Actor.prototype.isGuard;
  606.         Game_Actor.prototype.isGuard = function()
  607.         {
  608.                 var ret = _Game_Actor_isGuard.call(this);
  609.                 var tag = 'passiveGUARD';
  610.                 this.iteratePassiveSkill(tag, function(metaData) {
  611.                         ret = true;
  612.                 });
  613.                 return ret;
  614.         };

  615.         var _Game_Actor_isSubstitute = Game_Actor.prototype.isSubstitute;
  616.         Game_Actor.prototype.isSubstitute = function()
  617.         {
  618.                 var ret = _Game_Actor_isSubstitute.call(this);
  619.                 var tag = 'passiveSUBS';
  620.                 this.iteratePassiveSkill(tag, function(metaData) {
  621.                         ret = true;
  622.                 });
  623.                 return ret;
  624.         };

  625.         var _Game_Actor_isPreserveTp = Game_Actor.prototype.isPreserveTp;
  626.         Game_Actor.prototype.isPreserveTp = function(flagId)
  627.         {
  628.                 var ret = _Game_Actor_isPreserveTp.call(this);
  629.                 var tag = 'passivePRETP';
  630.                 this.iteratePassiveSkill(tag, function(metaData) {
  631.                         ret = true;
  632.                 });
  633.                 return ret;
  634.         };

  635.         //--------------------------------------------------------------------------
  636.         /** Game_Party */
  637.         var _Game_Party_ratePreemptive = Game_Party.prototype.ratePreemptive;
  638.         Game_Party.prototype.ratePreemptive = function(troopAgi)
  639.         {
  640.                 var rate = _Game_Party_ratePreemptive.call(this, troopAgi);
  641.                 this.battleMembers().some(function(actor) {
  642.                         actor.iteratePassiveSkill('passivePREE', function(metaData) {
  643.                                 rate += Number(metaData) * 0.01;
  644.                         });
  645.                 });
  646.                 return rate.clamp(0.0, 1.0);
  647.         };

  648.         var _Game_Party_rateSurprise = Game_Party.prototype.rateSurprise;
  649.         Game_Party.prototype.rateSurprise = function(troopAgi)
  650.         {
  651.                 var rate = _Game_Party_rateSurprise.call(this, troopAgi);
  652.                 this.battleMembers().some(function(actor) {
  653.                         actor.iteratePassiveSkill('passiveASUP', function(metaData) {
  654.                                 rate -= Number(metaData) * 0.01 * rate;
  655.                         });
  656.                 });
  657.                 return rate.clamp(0.0, 1.0);
  658.         };

  659.         //--------------------------------------------------------------------------
  660.         /** Window_BattleSkill */
  661.         var _Window_BattleSkill_includes = Window_BattleSkill.prototype.includes;
  662.         Window_BattleSkill.prototype.includes = function(item)
  663.         {
  664.                 if ( !exports.Param.ShowBattle )
  665.                 {
  666.                         if ( item )
  667.                         {
  668.                                 var re = /<passive/;
  669.                                 if ( re.test(item.note) )
  670.                                 {
  671.                                         return false;
  672.                                 }
  673.                         }
  674.                 }
  675.                 return _Window_BattleSkill_includes.call(this, item);
  676.         };

  677. }((this.dsPassiveSkill = this.dsPassiveSkill || {})));
复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
4
 楼主| 发表于 2018-2-3 16:01:14 | 只看该作者
夏的66rpg 发表于 2018-2-3 12:36
应该可以,不过最好不要,yep被动主要针对实时运行的技能,加属性的被动也吃帧数,多了会很卡,给你一个被动插件 ...

感谢指导,认可答案。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-7 19:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表