運の値をドロップ率に反映

フォーラムルール
素材の利用規約を決めたいけど、どんなことを書けばいいのか分からない場合は、
素材のテンプレートをご利用下さい。
TOMO
記事: 210
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

運の値をドロップ率に反映

投稿記事by TOMO » 2016年11月11日(金) 23:42

敵ドロップ計算時に、
パーティ内で一番運が高いキャラの運の値を、少しだけ加算するようになります

コード: 全て選択

# 運の値をドロップ率に反映
# 制作者:TOMO
#
# パーティ内で一番運が高いキャラの運の値を、
# 敵ドロップ計算時に加算します
#
#
# ※注意
# あまり加算しすぎるとバランス崩壊すると思ったので、
# 「通常の取得倍率 * (1 + 運 / 1000)」としてます
#
# つまり「運100、アイテム入手率二倍」で、
# 「2 * (1 + 100 / 1000) = 2.2」となります

class Game_Party < Game_Unit
  def drop_luk_rate
    max_luk = 0
    battle_members.each do |member|
      max_luk = [max_luk, member.luk].max
    end
    return (1000 + max_luk) / 1000.0
  end
end

class Game_Enemy < Game_Battler
  alias tomo_luk_drop_item_rate drop_item_rate
  def drop_item_rate
    tomo_luk_drop_item_rate * $game_party.drop_luk_rate
  end
end

画像
画像
画像
画像
画像
画像

テスト中に計算結果がズレた時があったので、
未完成品とします


※例:1 + 239 / 1000.0 = ?
正解:1.239  実際:1.238999999999

【追記】
faidaさん方法で修正しました
同時に「完成」とします
最後に編集したユーザー TOMO on 2018年7月31日(火) 00:46 [ 編集 2 回目 ]

faida
記事: 250
登録日時: 2015年12月17日(木) 16:44

Re: 運の値をドロップ率に反映(未完成品)

投稿記事by faida » 2016年11月12日(土) 00:20

こんばんは。
「1 + 運 / 1000」でなく「(1000 + 運) / 1000」にするとズレなくなると思います。
適当に思いついただけですが……。

※テストプログラムを組んでみて検証しました。

コード: 全て選択

# 改良前
(0..99).each{|i|
p (0..9).collect{|n|1 + (i * 10 + n) / 1000.0}
}

# 改良後
(0..99).each{|i|
p (0..9).collect{|n|(1000 + i * 10 + n) / 1000.0}
}
上のプログラムでは端数がおかしいことになることもありますが、下のプログラムでは正常でした。
---------------------------------------------
自作の(改造でない)スクリプト素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。

“Ace:スクリプト素材(RGSS3)” へ戻る