こげ兎ザブロゥ 様『クリティカルand弱点攻撃時ステート付与』の使用を考えていたのですが、
付与率が設定できず、耐性を貫通して付与されるのでゲームのバランス調整が難しく諦めました。
攻撃が『会心の一撃になった』又は『弱点属性を突いた』際にステート付与するスクリプトをお願いします。
・ステート付与率が設定できる
・ステート耐性が反映される
【解決済み】【RGSS3】会心時・弱点属性攻撃時にステート付与
【解決済み】【RGSS3】会心時・弱点属性攻撃時にステート付与
最後に編集したユーザー タツミ [ 2022年11月05日(土) 18:05 ], 累計 1 回
Re: 【RGSS3】会心時・弱点属性攻撃時にステート付与
タツミ 様
スクリプトを作成してみました
スキルのメモ欄に<critical_state>と記述すると
クリティカル時のみステート付与処理を行います
ステート付与確率等は従来通りに使用効果欄で設定してください
何かあればいつでもどうぞ
追記:弱点を突いた時を忘れていたので機能追加します
申し訳ありませんが少々お待ちください
スクリプトを作成してみました
スキルのメモ欄に<critical_state>と記述すると
クリティカル時のみステート付与処理を行います
ステート付与確率等は従来通りに使用効果欄で設定してください
何かあればいつでもどうぞ
追記:弱点を突いた時を忘れていたので機能追加します
申し訳ありませんが少々お待ちください
コード: 全て選択
#==============================================================================
# ■ クリティカル時のみステートを付与するスキル
#------------------------------------------------------------------------------
# <critical_state>とメモ欄に記述するとクリティカル時にのみステート付与処理を
# 行います
#==============================================================================
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)
if rand < chance
add_state(state_id,item)
@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)
if rand < chance
add_state(effect.data_id,item,user)
@result.success = true
end
end
#--------------------------------------------------------------------------
# ● ステートの付加
#--------------------------------------------------------------------------
def add_state(state_id,item = nil,user = nil)
if state_addable?(state_id,item,user)
add_new_state(state_id) unless state?(state_id)
reset_state_counts(state_id)
@result.added_states.push(state_id).uniq!
end
end
#--------------------------------------------------------------------------
# ● ステートの付加可能判定
#--------------------------------------------------------------------------
def state_addable?(state_id,item,user = nil)
alive? && $data_states[state_id] && !state_resist?(state_id) &&
!state_removed?(state_id) && !state_restrict?(state_id) && critical_check(item,user)
end
#--------------------------------------------------------------------------
# ● クリティカルチェック
#--------------------------------------------------------------------------
def critical_check(item,user)
return true if item.nil?
if /^\<critical_state>/ =~ item.note
@result.critical ? true : false
else
true
end
end
end
Re: 【RGSS3】会心時・弱点属性攻撃時にステート付与
大変お待たせしました
<cri_weak_state>とメモ欄に記述すればクリティカルか弱点攻撃時にステート付与処理を行います
<cri_weak_state>とメモ欄に記述すればクリティカルか弱点攻撃時にステート付与処理を行います
コード: 全て選択
#==============================================================================
# ■ クリティカル/弱点攻撃時のみステートを付与するスキル
#------------------------------------------------------------------------------
# <cri_weak_state>とメモ欄に記述するとクリティカルか弱点攻撃時にのみ
# ステート付与処理を行います
#==============================================================================
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)
if rand < chance
add_state(state_id,item)
@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)
if rand < chance
add_state(effect.data_id,item,user)
@result.success = true
end
end
#--------------------------------------------------------------------------
# ● ステートの付加
#--------------------------------------------------------------------------
def add_state(state_id,item = nil,user = nil)
if state_addable?(state_id,item,user)
add_new_state(state_id) unless state?(state_id)
reset_state_counts(state_id)
@result.added_states.push(state_id).uniq!
end
end
#--------------------------------------------------------------------------
# ● ステートの付加可能判定
#--------------------------------------------------------------------------
def state_addable?(state_id,item,user = nil)
alive? && $data_states[state_id] && !state_resist?(state_id) &&
!state_removed?(state_id) && !state_restrict?(state_id) && critical_check(item,user)
end
#--------------------------------------------------------------------------
# ● クリティカルチェック
#--------------------------------------------------------------------------
def critical_check(item,user)
return true if item.nil?
if /^\<cri_weak_state>/ =~ item.note
@result.critical ? true : false || weak?
else
true
end
end
#--------------------------------------------------------------------------
# ● 弱点属性チェック
#--------------------------------------------------------------------------
def weak?
@weak
end
#--------------------------------------------------------------------------
# ● スキル/アイテムの属性修正値を取得
#--------------------------------------------------------------------------
def item_element_rate(user, item)
if item.damage.element_id < 0
rate = user.atk_elements.empty? ? 1.0 : elements_max_rate(user.atk_elements)
else
rate = element_rate(item.damage.element_id)
end
rate > 1.0 ? @weak = true : @weak = false
return rate
end
end
Re: 【RGSS3】会心時・弱点属性攻撃時にステート付与
DEDEN 様、ありがとうございます。
もしよろしければ、<critical_state>と <weak_state>は個別に設定できるようにお願いします。
もしよろしければ、<critical_state>と <weak_state>は個別に設定できるようにお願いします。
Re: 【RGSS3】会心時・弱点属性攻撃時にステート付与
タツミ 様
対応させたのでご確認下さい
対応させたのでご確認下さい
コード: 全て選択
#==============================================================================
# ■ クリティカル/弱点攻撃時のみステートを付与するスキル
#------------------------------------------------------------------------------
# <critical_state>とメモ欄に記述するとクリティカル時にのみ
# ステート付与処理を行います
# <weak_state>とメモ欄に記述すると弱点攻撃時にのみ
# ステート付与処理を行います
# この2つは重複可能です
#==============================================================================
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)
if rand < chance
add_state(state_id,item)
@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)
if rand < chance
add_state(effect.data_id,item,user)
@result.success = true
end
end
#--------------------------------------------------------------------------
# ● ステートの付加
#--------------------------------------------------------------------------
def add_state(state_id,item = nil,user = nil)
if state_addable?(state_id,item,user)
add_new_state(state_id) unless state?(state_id)
reset_state_counts(state_id)
@result.added_states.push(state_id).uniq!
end
end
#--------------------------------------------------------------------------
# ● ステートの付加可能判定
#--------------------------------------------------------------------------
def state_addable?(state_id,item,user = nil)
alive? && $data_states[state_id] && !state_resist?(state_id) &&
!state_removed?(state_id) && !state_restrict?(state_id) && critical_weak_check(item,user)
end
#--------------------------------------------------------------------------
# ● クリティカル/弱点チェック
#--------------------------------------------------------------------------
def critical_weak_check(item,user)
return true if item.nil?
if /^\<critical_state>/ =~ item.note && /^\<weak_state>/ =~ item.note
@result.critical ? true : false || @weak
elsif /^\<critical_state>/ =~ item.note
@result.critical ? true : false
elsif /^\<weak_state>/ =~ item.note
weak? ? true : false
else
true
end
end
#--------------------------------------------------------------------------
# ● 弱点属性チェック
#--------------------------------------------------------------------------
def weak?
@weak
end
#--------------------------------------------------------------------------
# ● スキル/アイテムの属性修正値を取得
#--------------------------------------------------------------------------
def item_element_rate(user, item)
if item.damage.element_id < 0
rate = user.atk_elements.empty? ? 1.0 : elements_max_rate(user.atk_elements)
else
rate = element_rate(item.damage.element_id)
end
rate > 1.0 ? @weak = true : @weak = false
return rate
end
end
Re: 【RGSS3】会心時・弱点属性攻撃時にステート付与
DEDEN 様、使いやすくて助かります、ありがとうございました。