(解決済み)【RGSS3】ステート付加における確率をあげたい
Posted: 2021年5月12日(水) 15:04
職業や装備品に「該当するステート付与成功率UP」の効果を付けたいのですが、やり方が解りません。
能力値「運」に関すること以外で教えて欲しいです。「運」では他のステートを付加する確率も上がってしまいますので。
能力値「運」に関すること以外で教えて欲しいです。「運」では他のステートを付加する確率も上がってしまいますので。
コード: 全て選択
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● ステート付与成功率UPの取得
#--------------------------------------------------------------------------
def add_state_rate_ex(state_id)
([self.class] + self.equips.compact).inject(1.0) do |r, obj|
if obj.note =~ /\<ステート付与成功率UP\:(\d+)\:(\d+)\%\>/ && $1.to_i == state_id
r + $2.to_i * 0.01
else
r
end
end
end
end
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ○ 使用効果[ステート付加]:通常攻撃
#--------------------------------------------------------------------------
def item_effect_add_state_attack(user, item, effect)
user.atk_states.each do |state_id|
chance = effect.value1
chance *= state_rate(state_id)
chance *= user.atk_states_rate(state_id)
chance *= luk_effect_rate(user)
chance *= user.add_state_rate_ex(state_id) if user.actor?
if rand < chance
add_state(state_id)
@result.success = true
end
end
end
#--------------------------------------------------------------------------
# ○ 使用効果[ステート付加]:通常
#--------------------------------------------------------------------------
def item_effect_add_state_normal(user, item, effect)
chance = effect.value1
chance *= state_rate(effect.data_id) if opposite?(user)
chance *= luk_effect_rate(user) if opposite?(user)
chance *= user.add_state_rate_ex(effect.data_id) if user.actor?
if rand < chance
add_state(effect.data_id)
@result.success = true
end
end
end
コード: 全て選択
chance = effect.value1 # A
chance += user.add_state_rate_ex(state_id) if user.actor? # E
chance *= state_rate(state_id) # B
chance *= user.atk_states_rate(state_id) # C
chance *= luk_effect_rate(user) # D
コード: 全て選択
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● ステート付与成功率UPの取得
#--------------------------------------------------------------------------
def add_state_rate_ex(state_id)
([self.class] + self.equips.compact).inject(0.0) do |r, obj|
if obj.note =~ /\<ステート付与成功率UP\:(\d+)\:(\d+)\%\>/ && $1.to_i == state_id
r + $2.to_i * 0.01
else
r
end
end
end
end
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ○ 使用効果[ステート付加]:通常攻撃
#--------------------------------------------------------------------------
def item_effect_add_state_attack(user, item, effect)
user.atk_states.each do |state_id|
chance = effect.value1
chance += user.add_state_rate_ex(state_id) if user.actor?
chance *= state_rate(state_id)
chance *= user.atk_states_rate(state_id)
chance *= luk_effect_rate(user)
if rand < chance
add_state(state_id)
@result.success = true
end
end
end
#--------------------------------------------------------------------------
# ○ 使用効果[ステート付加]:通常
#--------------------------------------------------------------------------
def item_effect_add_state_normal(user, item, effect)
chance = effect.value1
chance += user.add_state_rate_ex(effect.data_id) if user.actor?
chance *= state_rate(effect.data_id) if opposite?(user)
chance *= luk_effect_rate(user) if opposite?(user)
if rand < chance
add_state(effect.data_id)
@result.success = true
end
end
end