赞 | 40 |
VIP | 559 |
好人卡 | 234 |
积分 | 47 |
经验 | 251834 |
最后登录 | 2024-12-5 |
在线时间 | 5240 小时 |
Lv3.寻梦者 (版主) 八宝粥的基叔
- 梦石
- 0
- 星屑
- 4694
- 在线时间
- 5240 小时
- 注册时间
- 2009-4-29
- 帖子
- 14318
|
- #==============================================================================
- # ■ 反击系统
- #------------------------------------------------------------------------------
- #
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #
- # 作者:protosssonny
- # 注意:●●●●●●楼主进行了点小改动。。。。非原脚本。P叔勿怪
- #==============================================================================
- module Vocab
- #设定反击时的文字:
- Counter_text = "%s反弹了部分伤害,%s损失%s点的HP!"
- #设定状态结束时的文字:
- Counter_end_text = "%s不再有反击的准备!"
- end
- #设定反击的状态ID,在拥有这个状态的情况下就可以反击:
- COUNTER_STATE = 17
- #设定不能反击的敌人ID,比如远程的弓手敌人等:
- COUNTER_EXCLUDE_ENEMY = [2]
- #设定在以下状态ID时不可以反击,比如睡眠、眩晕等:
- COUNTER_EXCLUDE_STATE = [1,6,7,8]
- #设定在敌人使用以下技能ID时,不会反击:
- COUNTER_EXCLUDE_SKILL = [59]
- #设定反击的概率:
- PROBABITITY = 100
- class Scene_Battle < Scene_Base
- #--------------------------------------------------------------------------
- # ● 执行战斗行动: 攻击
- #--------------------------------------------------------------------------
- def execute_action_attack
- text = sprintf(Vocab::DoAttack, @active_battler.name)
- @message_window.add_instant_text(text)
- targets = @active_battler.action.make_targets
- display_attack_animation(targets)
- wait(20)
- for target in targets
- target.attack_effect(@active_battler)
- display_action_effects(target)
- end
- if target.is_a?(Game_Actor) and @active_battler.is_a?(Game_Enemy)
- if target.state?(COUNTER_STATE) and exclude_state == false \
- and not COUNTER_EXCLUDE_ENEMY.include?(@active_battler.enemy_id) \
- and PROBABITITY > rand(100) and $counter_value[0] == true
- damage = 0
- #在下面设定反击伤害的公式:
- #target——反击者,@active_battler——被反击的敌人:
- #atk——攻击力,def——防御力,spi——精神力,agi——敏捷度
- damage = $counter_value[1] * 30 / 100 #### 反击百分之多少就是乘多少再除以100
- damage = 0 if damage < 0
- #在上面反击伤害的公式
- text = sprintf(Vocab::Counter_text, target.name, @active_battler.name, damage)
- @message_window.add_instant_text(text)
- @active_battler.animation_id = 7
- wait(45)
- Sound.play_enemy_damage
- @active_battler.blink = true if damage > 0
- wait(30)
- @active_battler.hp -= damage
- @active_battler.perform_collapse if @active_battler.hp <= 0
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 判断反击排除的状态
- #--------------------------------------------------------------------------
- def exclude_state
- targets = @active_battler.action.make_targets
- for i in 0...COUNTER_EXCLUDE_STATE.size
- for target in targets
- return true if target.state?(COUNTER_EXCLUDE_STATE[i])
- end
- end
- return false
- end
- end
- class Game_Battler
- #--------------------------------------------------------------------------
- # ● 发动普通攻击
- # attacker : 攻击者
- #--------------------------------------------------------------------------
- def attack_effect(attacker)
- clear_action_results
- unless attack_effective?(attacker)
- @skipped = true
- $counter_value = [false, 0]
- return
- end
- if rand(100) >= calc_hit(attacker) # 计算命中率
- @missed = true
- $counter_value = [false, 0]
- return
- end
- if rand(100) < calc_eva(attacker) # 计算闪躲率
- @evaded = true
- $counter_value = [false, 0]
- return
- end
- make_attack_damage_value(attacker) # 计算伤害
- execute_damage(attacker) # 伤害效果
- if @hp_damage == 0 # 判断是否有物理伤害
- $counter_value = [false, 0]
- return
- end
- apply_state_changes(attacker) # 增减状态
- $counter_value = [true, @hp_damage]
- end
- end
- #==============================================================================
- # ■ 反击系统
- #------------------------------------------------------------------------------
- #
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #
- # 作者:protosssonny
- # 2011年10月13日
- #==============================================================================
复制代码 |
评分
-
查看全部评分
|