本帖最后由 alexncf125 于 2024-1-5 19:35 编辑 va默认下,连续技能每一次攻击时,其命中判定是独立的,因此会造成以下图片中,左方上至下的三种情况 经过了一番修改,改成了只计算一次是否命中,只要第一次命中, ...
# 岚风雷(论坛ID:gqxastg)制作#--------------------------------------------------------------------------# 技能/物品备注 <特殊连续攻击> 或 <repeat_hit> 即可# 第一次使用(命中)成功则后续次数均成功 否则立刻中断 #==============================================================================# ■ RPG::UsableItem#============================================================================== class RPG::UsableItem < RPG::BaseItem #-------------------------------------------------------------------------- # ● 返回是否特殊连续攻击 #-------------------------------------------------------------------------- def repeat_hit? /<(?:特殊连续攻击|REPEAT_HIT)>/i =~ @note ? true : false endend#==============================================================================# ■ Game_ActionResult#============================================================================== class Game_ActionResult #-------------------------------------------------------------------------- # ● 定义实例变量 #-------------------------------------------------------------------------- attr_accessor :force_hit_result # 强制命中结果 #-------------------------------------------------------------------------- # ● 判定最后是否命中 #-------------------------------------------------------------------------- alias fixed_hit_repeat_hit? hit? def hit? if @force_hit_result.nil? return fixed_hit_repeat_hit? else @missed = false if @force_hit_result @evaded = false if @force_hit_result return @force_hit_result end endend#==============================================================================# ■ Scene_Battle#============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● 使用技能/物品 #-------------------------------------------------------------------------- alias fixed_hit_repeat_use_item use_item def use_item @last_hit = nil fixed_hit_repeat_use_item end #-------------------------------------------------------------------------- # ● 发动技能/物品 #-------------------------------------------------------------------------- alias fixed_hit_repeat_invoke_item invoke_item def invoke_item(target, item) return if item.repeat_hit? && @last_hit == false target.result.force_hit_result = item.repeat_hit? ? @last_hit : nil fixed_hit_repeat_invoke_item(target, item) @last_hit = target.result.hit? endend
# 岚风雷(论坛ID:gqxastg)制作 #-------------------------------------------------------------------------- # 技能/物品备注 <特殊连续攻击> 或 <repeat_hit> 即可 # 第一次使用(命中)成功则后续次数均成功 否则立刻中断 #============================================================================== # ■ RPG::UsableItem #============================================================================== class RPG::UsableItem < RPG::BaseItem #-------------------------------------------------------------------------- # ● 返回是否特殊连续攻击 #-------------------------------------------------------------------------- def repeat_hit? /<(?:特殊连续攻击|REPEAT_HIT)>/i =~ @note ? true : false end end #============================================================================== # ■ Game_ActionResult #============================================================================== class Game_ActionResult #-------------------------------------------------------------------------- # ● 定义实例变量 #-------------------------------------------------------------------------- attr_accessor :force_hit_result # 强制命中结果 #-------------------------------------------------------------------------- # ● 判定最后是否命中 #-------------------------------------------------------------------------- alias fixed_hit_repeat_hit? hit? def hit? if @force_hit_result.nil? return fixed_hit_repeat_hit? else @missed = false if @force_hit_result @evaded = false if @force_hit_result return @force_hit_result end end end #============================================================================== # ■ Scene_Battle #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● 使用技能/物品 #-------------------------------------------------------------------------- alias fixed_hit_repeat_use_item use_item def use_item @last_hit = nil fixed_hit_repeat_use_item end #-------------------------------------------------------------------------- # ● 发动技能/物品 #-------------------------------------------------------------------------- alias fixed_hit_repeat_invoke_item invoke_item def invoke_item(target, item) return if item.repeat_hit? && @last_hit == false target.result.force_hit_result = item.repeat_hit? ? @last_hit : nil fixed_hit_repeat_invoke_item(target, item) @last_hit = target.result.hit? end end
查看全部评分
#-------------------------------------------------------------------------- # ● 計算技能/物品的成功幾率 #-------------------------------------------------------------------------- def item_hit(user, item) rate = item.success_rate * 0.01 # 獲取成功幾率 rate *= user.hit if item.physical? # 物理攻擊:計算成功幾率的乘積 if item.is_a?(RPG::Skill) and item.id == 3 if $game_variables[1] == 1 return 1 end if $game_variables[1] == 2 return 0 end end return rate # 返回計算后的成功幾率 end
#-------------------------------------------------------------------------- # ● 計算技能/物品的閃避幾率 #-------------------------------------------------------------------------- def item_eva(user, item) if item.is_a?(RPG::Skill) and item.id == 3 if $game_variables[1] == 1 return 0 end if $game_variables[1] == 2 return 1 end end return eva if item.physical? # 是物理攻擊則返回閃避幾率 return mev if item.magical? # 是魔法攻擊則返回閃避魔法幾率 return 0 end
#-------------------------------------------------------------------------- # ● 應用技能/物品的效果 #-------------------------------------------------------------------------- def item_apply(user, item) @result.clear @result.used = item_test(user, item) @result.missed = (@result.used && rand >= item_hit(user, item)) @result.evaded = (!@result.missed && rand < item_eva(user, item)) if item.is_a?(RPG::Skill) and item.id == 3 if @result.hit? $game_variables[1] = 1 else $game_variables[1] = 2 end end if @result.hit? unless item.damage.none? @result.critical = (rand < item_cri(user, item)) make_damage_value(user, item) execute_damage(user) end item.effects.each {|effect| item_effect_apply(user, item, effect) } item_user_effect(user, item) end end
#-------------------------------------------------------------------------- # ● 戰斗行動結束時的處理 #-------------------------------------------------------------------------- def process_action_end @subject.on_action_end refresh_status @log_window.display_auto_affected_status(@subject) @log_window.wait_and_clear @log_window.display_current_state(@subject) @log_window.wait_and_clear $game_variables[1] = 0 BattleManager.judge_win_loss end
折叠内容标题(非必须)
折叠内容
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-5-7 15:36
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.