RGSS3 能力値を奪う

なたね
記事: 30
登録日時: 2017年1月11日(水) 00:34

RGSS3 能力値を奪う

投稿記事by なたね » 2017年6月09日(金) 23:04

能力値を奪うというスクリプトを作製していただきたいです。
例「エネミーから攻撃力を10%を奪う(攻撃力10%下げる)」→「アクターに奪った攻撃力10%分を上げる」

アクターの能力分の10%分上げるという事は出来そうなのですが、エネミーから10%攻撃力を下げてその分のアクターの攻撃力を10%分上げるという方法が分からなかった為、リクエストをしました。
お時間があって作製していただける方がいましたら、是非ともよろしくお願いします。

TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: RGSS3 能力値を奪う

投稿記事by TOMO » 2017年6月10日(土) 02:09

星潟様の「アイテム・スキル使用者ステート・能力変化」か「行動者・対象者ID・使用スキル/アイテムID変数格納」を使えば出来ると思います
faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

Re: RGSS3 能力値を奪う

投稿記事by faida » 2017年6月10日(土) 07:39

奪った能力値は
①戦闘中のみ適用
②戦闘後も継続(イベントコマンドの「能力値の変化」と同じ)
のどちらかにもよりますが、②は手元にあります。

ただ、割合変化でなく定数変化なのでその改造の手間だけ要りますが……。
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
なたね
記事: 30
登録日時: 2017年1月11日(水) 00:34

Re: RGSS3 能力値を奪う

投稿記事by なたね » 2017年6月10日(土) 09:42

TOMO様>
星潟様の「アイテム・スキル使用者ステート・能力変化」は固定数値で変化させるやり方がわかりませんでした。
「行動者・対象者ID・使用スキル/アイテムID変数格納」の使い方がわかりませんでした。

faida様>
奪った能力値は戦闘中のみ適用するものを作製していただきたいです。
faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

Re: RGSS3 能力値を奪う

投稿記事by faida » 2017年6月10日(土) 10:16

手持ちでできそうなものを探ってみました。
http://tm.lucky-duet.com/viewtopic.php?f=43&t=2836&p=9679#p9679
まずこのスクリプトで計算式による能力強化/弱体を行えるようにします。
次に、以下のスクリプトを導入し、

コード: 全て選択

=begin
◆概要
使用者に対して発動する効果を設定できます。

◆機能
・スキルとかアイテムとかのメモ欄に<使用者効果:a, b, c, d>と記入すると、
そのスキルやアイテムの使用者に対して効果を発揮します。
・効果はデータベースに準拠……なんだけど、使い方は難しいので
「使用効果」で全体検索して、出てきたメソッドの中身を見て確認してください。
a = effect.code; b = effect.data_id; c = effect.value1; d = effect.value2
例:HPを5%+100回復→<使用者効果:11, 0, 5, 100>
  ステートID2を50%の確率で付加→<使用者効果:21, 2, 50>

◆仕様
・数値を省略すると0が代入されます。でも省略できるのは後ろからだから意味ない。
・複数指定したら上から順番に発動。ただし表示順はHPMPTP→その他。
・スキルやアイテムの元々の効果で最後の敵にとどめを刺しても発動。
・この効果で使用者が死んでも効果は発動し続ける(上から順番に)。
なので一度死んで生き返る、なんてことも起こったりする。

◆使用上の注意
・★……エイリアス ○……新規定義

◆作者:faida @faida3983

=end
class RPG::UsableItem
  #--------------------------------------------------------------------------
  # ○ パラメータ取得
  #--------------------------------------------------------------------------
  def user_effects
    return @user_effects if @user_effects
    @user_effects = []
    note.each_line{|line|
      if line =~ /<使用者効果\:(\d+(?:\,\s\d+)*)>/
        a = line.scan(/\d+/).collect{|i|i.to_i}; 3.times{a << 0}
        a[2] /= 100.0 if [11, 12, 21, 22].include?(a[0])
        @user_effects << Effect.new(a[0], a[1], a[2], a[3])
      end
    }
    @user_effects
  end
end

#==============================================================================
# ■ Scene_Battle
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ★ スキル/アイテムの使用
  #--------------------------------------------------------------------------
  alias user_effect_use_item use_item
  def use_item
    item = @subject.current_action.item
    user_effect_use_item
    if !item.user_effects.empty?
      damaged = false
      item.user_effects.each{|e|
        @subject.item_effect_apply(@subject, item, e)
        damaged = true if (e.code / 10) == 1
      }
      refresh_status
      @subject.result.used = true
      @log_window.display_damage(@subject, item) if damaged
      @log_window.display_affected_status(@subject, item)
    end
  end
end
「<使用者効果:31, id, turn>」(idはパラメータのID、turnはターン数)と記入します。
(ちなみに使用者に効果があるスキルを作るスクリプトが山ほどあるのは知っていますが、
確実に動作しそうなものは手持ちのものだろうと思っただけです。多分他のでも動きます)
これで疑似的にでも再現できるかなと。

欠点は「能力強化/弱体」扱いなので、「奪った」を表示できないとかいずれ強化/弱体が切れるとかなどの
不満点が出るところですかね。
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
なたね
記事: 30
登録日時: 2017年1月11日(水) 00:34

Re: RGSS3 能力値を奪う

投稿記事by なたね » 2017年6月13日(火) 07:29

faida様。この度は作製していただきありがとうございました。
確認したところ思い通りの動作ができました。
前回に続き作成していただき本当にありがとうございました。

“VX / Ace:スクリプト素材のリクエスト” へ戻る