Project1

标题: 如何将强化状态上限改为三级 [打印本页]

作者: TerraTraveler    时间: 2023-1-6 10:32
标题: 如何将强化状态上限改为三级
如题,需不需要插件
作者: alexncf125    时间: 2023-1-6 10:49
本帖最后由 alexncf125 于 2023-1-6 11:51 编辑

VA叫脚本
RUBY 代码复制
  1. #==============================================================================
  2. # ■ RGSS3 強化・弱体拡張 Ver2.00 by 星潟
  3. #------------------------------------------------------------------------------
  4. # 強化・弱体の効果を変更し、上昇段階別の割合を細かく設定します。
  5. # また、デフォルトでは強化/弱体は2段階が限界ですが
  6. # この限界値を無制限に増加させます。
  7. # これに際し、それぞれのアイコンが追加で必要になります。
  8. # 10段階目までのアイコンは当方で用意し、併せて配布しております。
  9. # (該当の画像使用時にはVX Aceの正規ユーザー登録が必要です。
  10. #   既に素材アイコンを組み込んだアイコンファイルを使用されている方は
  11. #   自力で画像の調整を行ってください)
  12. # また、強化・弱体をいくら重ねても
  13. # 表示だけは段階1から変わらなくする設定も可能です。
  14. # この設定を有効にした場合、アイコンファイルに
  15. # 新たにアイコンを追加する必要はなくなります。
  16. # (表示が変わらないだけで効果はきちんと上乗せされていきます)
  17. # 強化・弱体アイコン表示を完全に消滅させる事も可能です。
  18. #
  19. # Ver1.01 記述ミス2点を修正。
  20. # Ver1.10 強化・弱体をリセットせずに強化・弱体段階を変更する機能を追加。
  21. # Ver2.00 拡張スクリプトと統合・各種類別に段階変化による効果を変更可能に。
  22. #==============================================================================
  23. module B_D_EX
  24.  
  25.   #強化を付与する際に、弱体段階をリセットするか、
  26.   #弱化を付与する際に、強体段階をリセットするかの設定を行います。
  27.   #trueの場合、強化する場合は、先に弱体が付与されていたら
  28.   #弱体の段階をリセットします。
  29.   #弱体する場合は、先に強化が付与されていたら
  30.   #強化の段階をリセットします。
  31.   #falseの場合、強化する場合は、先に弱体が付与されていたら
  32.   #弱体の段階を下げます。
  33.   #弱体する場合は、先に強化が付与されていたら
  34.   #強化の段階を下げます。
  35.  
  36.   RESET    = true
  37.  
  38.   #強化最大段階を設定します。
  39.  
  40.   BUFF_MAX = 10
  41.  
  42.   #弱体最大段階を設定します。
  43.  
  44.   DEBU_MAX = 10
  45.  
  46.   #強化・弱体の各段階での強化割合を設定します。
  47.   #数値は%単位です。
  48.   #例えば5の場合、1段階分の強化・弱体で5%分の能力が変動します。
  49.   #[5,10,15,20,25,30,35,40,45,50]の場合
  50.   #1段階目では5%、2段階目では10%
  51.   #3段階目では1%、4段階目では20%……という事です。
  52.   #11段階目以降まで設定する場合は,で区切って続きを設定して下さい。
  53.  
  54.   #最大HP強化割合
  55.  
  56.   MHP_EFFECT1   = [3,6,9,12,15,18,21,24,27,30]
  57.  
  58.   #最大HP弱体割合
  59.  
  60.   MHP_EFFECT2   = [3,6,9,12,15,18,21,24,27,30]
  61.  
  62.   #最大MP強化割合
  63.  
  64.   MMP_EFFECT1   = [3,6,9,12,15,18,21,24,27,30]
  65.  
  66.   #最大MP弱体割合
  67.  
  68.   MMP_EFFECT2   = [3,6,9,12,15,18,21,24,27,30]
  69.  
  70.   #攻撃力強化割合
  71.  
  72.   ATK_EFFECT1   = [5,10,15,20,25,30,35,40,45,50]
  73.  
  74.   #攻撃力弱体割合
  75.  
  76.   ATK_EFFECT2   = [5,10,15,20,25,30,35,40,45,50]
  77.  
  78.   #防御力強化割合
  79.  
  80.   DEF_EFFECT1   = [5,10,15,20,25,30,35,40,45,50]
  81.  
  82.   #防御力弱体割合
  83.  
  84.   DEF_EFFECT2   = [5,10,15,20,25,30,35,40,45,50]
  85.  
  86.   #魔法力強化割合
  87.  
  88.   MAT_EFFECT1   = [5,10,15,20,25,30,35,40,45,50]
  89.  
  90.   #魔法力弱体割合
  91.  
  92.   MAT_EFFECT2   = [5,10,15,20,25,30,35,40,45,50]
  93.  
  94.   #魔法防御強化割合
  95.  
  96.   MDF_EFFECT1   = [5,10,15,20,25,30,35,40,45,50]
  97.  
  98.   #魔法防御弱体割合
  99.  
  100.   MDF_EFFECT2   = [5,10,15,20,25,30,35,40,45,50]
  101.  
  102.   #敏捷性強化割合
  103.  
  104.   AGI_EFFECT1   = [5,10,15,20,25,30,35,40,45,50]
  105.  
  106.   #敏捷性弱体割合
  107.  
  108.   AGI_EFFECT2   = [5,10,15,20,25,30,35,40,45,50]
  109.  
  110.   #運強化割合
  111.  
  112.   LUK_EFFECT1   = [5,10,15,20,25,30,35,40,45,50]
  113.  
  114.   #運弱体割合
  115.  
  116.   LUK_EFFECT2   = [5,10,15,20,25,30,35,40,45,50]
  117.  
  118.   #強化・弱体のアイコンを使用するかを設定します。
  119.   #falseにした場合、強化・弱体アイコンはステート欄に表示されなくなります。
  120.  
  121.   ICON_USE = true
  122.  
  123.   #強化・弱体のアイコンを1つの種類につき
  124.   #1段階目のアイコンしか使用しないどうかを設定します。
  125.   #falseの場合、段階別にそれぞれアイコンが必要になります。
  126.   #trueの場合、1段階目のアイコンのみが使用されます。
  127.  
  128.   ICON_FIX = false
  129.  
  130. #==============================================================================
  131. # 以下2つはICON_FIXがtrueの場合の設定です。
  132. #==============================================================================
  133.  
  134.   #強化アイコンの読み込み開始位置を設定します。
  135.   #(デフォルトでは64です)
  136.   #指定位置から16個分のアイコンが強化アイコンとして使用されます。
  137.  
  138.   B_I_E_D  = 64
  139.  
  140.   #弱体アイコンの読み込み開始位置を設定します。
  141.   #(デフォルトでは80です)
  142.   #指定位置から16個分のアイコンが弱体アイコンとして使用されます。
  143.  
  144.   D_I_E_D  = 80
  145.  
  146. #==============================================================================
  147. # 以下2つはICON_FIXがfalseの場合の設定です。
  148. #==============================================================================
  149.  
  150.   #強化アイコンの読み込み開始位置を設定します。
  151.   #指定位置から最大段階×8個分のアイコンが強化アイコンとして使用されます。
  152.  
  153.   B_I_L_O  = 688
  154.  
  155.   #弱体アイコンの読み込み開始位置を設定します。
  156.   #指定位置から最大段階×8個分のアイコンが弱体アイコンとして使用されます。
  157.  
  158.   D_I_L_O  = 768
  159.  
  160. end
  161.  
  162. class Window_Base < Window
  163.   #--------------------------------------------------------------------------
  164.   # ● ステートおよび強化/弱体のアイコンを描画
  165.   #--------------------------------------------------------------------------
  166.   alias draw_actor_icons_b_d_erase draw_actor_icons
  167.   def draw_actor_icons(actor, x, y, width = 96)
  168.  
  169.     #強化/弱体のアイコンを表示しない場合は
  170.     #ステートのみを描画する。
  171.     #表示する場合は通常の処理を行う。
  172.  
  173.     if B_D_EX::ICON_USE == false
  174.       icons = (actor.state_icons)[0, width / 24]
  175.       icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y) }
  176.     else
  177.       draw_actor_icons_b_d_erase(actor, x, y, width)
  178.     end
  179.   end
  180. end
  181.  
  182. class Game_BattlerBase
  183.   #--------------------------------------------------------------------------
  184.   # ● 強化/弱体に対応するアイコン番号を取得
  185.   #--------------------------------------------------------------------------
  186.   def buff_icon_index(buff_level, param_id)
  187.  
  188.     #強化段階に応じてアイコンを変更しない場合と
  189.     #変更する場合で処理を分ける。
  190.  
  191.     if B_D_EX::ICON_FIX == false
  192.       if buff_level > 0
  193.         return B_D_EX::B_I_L_O + (buff_level - 1) * 8 + param_id
  194.       elsif buff_level < 0
  195.         return B_D_EX::D_I_L_O + (-buff_level - 1) * 8 + param_id
  196.       else
  197.         return 0
  198.       end
  199.     else
  200.       if buff_level > 0
  201.         return B_D_EX::B_I_E_D + param_id
  202.       elsif buff_level < 0
  203.         return B_D_EX::D_I_E_D + param_id
  204.       else
  205.         return 0
  206.       end
  207.     end
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ● 通常能力値の強化/弱体による変化率取得
  211.   #--------------------------------------------------------------------------
  212.   def param_buff_rate(param_id)
  213.  
  214.     #強化/弱体段階が0の場合、1.0を返す。
  215.  
  216.     return 1.0 if @buffs[param_id] == 0
  217.  
  218.     #強化/弱体の段階を取得する。
  219.  
  220.     rank = @buffs[param_id].abs - 1
  221.  
  222.     #強化/弱体化か、またその種類と段階によってデータを取得する。
  223.  
  224.     if @buffs[param_id] > 0
  225.       case param_id
  226.       when 0;data = B_D_EX::MHP_EFFECT1[rank]
  227.       when 1;data = B_D_EX::MMP_EFFECT1[rank]
  228.       when 2;data = B_D_EX::ATK_EFFECT1[rank]
  229.       when 3;data = B_D_EX::DEF_EFFECT1[rank]
  230.       when 4;data = B_D_EX::MAT_EFFECT1[rank]
  231.       when 5;data = B_D_EX::MDF_EFFECT1[rank]
  232.       when 6;data = B_D_EX::AGI_EFFECT1[rank]
  233.       when 7;data = B_D_EX::LUK_EFFECT1[rank]
  234.       end
  235.  
  236.       #強化情報を返す。
  237.  
  238.       (data + 100) / 100.0
  239.     else
  240.       case param_id
  241.       when 0;data = B_D_EX::MHP_EFFECT2[rank]
  242.       when 1;data = B_D_EX::MMP_EFFECT2[rank]
  243.       when 2;data = B_D_EX::ATK_EFFECT2[rank]
  244.       when 3;data = B_D_EX::DEF_EFFECT2[rank]
  245.       when 4;data = B_D_EX::MAT_EFFECT2[rank]
  246.       when 5;data = B_D_EX::MDF_EFFECT2[rank]
  247.       when 6;data = B_D_EX::AGI_EFFECT2[rank]
  248.       when 7;data = B_D_EX::LUK_EFFECT2[rank]
  249.       end
  250.  
  251.       #弱体情報を返す。
  252.  
  253.       (100 - data) / 100.0
  254.     end
  255.   end
  256. end
  257.  
  258. class Game_Battler < Game_BattlerBase
  259.   #--------------------------------------------------------------------------
  260.   # ● 能力強化
  261.   #--------------------------------------------------------------------------
  262.   alias add_buff_reset add_buff
  263.   def add_buff(param_id, turns)
  264.  
  265.     #弱体を相殺して消滅する場合はリセットを行う。
  266.     #そうでない場合は段階に加算し、通常の処理を行う。
  267.  
  268.     if B_D_EX::RESET
  269.       add_buff_reset(param_id, turns)
  270.     else
  271.       return unless alive?
  272.       @buffs[param_id] += 1 unless buff_max?(param_id)
  273.       overwrite_buff_turns(param_id, turns)
  274.       @result.added_buffs.push(param_id).uniq!
  275.       refresh
  276.     end
  277.   end
  278.   #--------------------------------------------------------------------------
  279.   # ● 能力弱体
  280.   #--------------------------------------------------------------------------
  281.   alias add_debuff_reset add_debuff
  282.   def add_debuff(param_id, turns)
  283.  
  284.     #強化を相殺して消滅する場合はリセットを行う。
  285.     #そうでない場合は段階に減算し、通常の処理を行う。
  286.  
  287.     if B_D_EX::RESET
  288.       add_debuff_reset(param_id, turns)
  289.     else
  290.       return unless alive?
  291.       @buffs[param_id] -= 1 unless debuff_max?(param_id)
  292.       overwrite_buff_turns(param_id, turns)
  293.       @result.added_debuffs.push(param_id).uniq!
  294.       refresh
  295.     end
  296.   end
  297.   #--------------------------------------------------------------------------
  298.   # ● 能力強化が最大の段階か否かを判定
  299.   #--------------------------------------------------------------------------
  300.   def buff_max?(param_id)
  301.     @buffs[param_id] == B_D_EX::BUFF_MAX
  302.   end
  303.   #--------------------------------------------------------------------------
  304.   # ● 能力弱体が最大の段階か否かを判定
  305.   #--------------------------------------------------------------------------
  306.   def debuff_max?(param_id)
  307.     @buffs[param_id] == B_D_EX::DEBU_MAX * -1
  308.   end
  309. end

作者: TerraTraveler    时间: 2023-1-6 10:59
alexncf125 发表于 2023-1-6 10:49
http://artificialprovidence.web.fc2.com/rgss3/r3enhance/RGSS3BUFF_DEBUFF_ENH.txt
VA叫脚本

链接似乎打不开




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1