# ============================================================================
# 嘲讽脚本 v1.1 by 叶子
# 特别鸣谢:
# 柳柳 (是柳柳解决了最关键的技术问题,叶子我充其量只是个策划者和打字员)
# SailCat (从SailCat的脚本中学到不少RGSS知识,只是叶子天生愚钝,还是菜鸟一个)
# ......
# ============================================================================
#脚本用途:
#实现嘲讽效果(废话)
#通过一个极其简单的判断,让怪物固定攻击某一角色
#区别于事件的强制行动,怪物该用技能时还是会用技能
#由于判断极其简单,所以可以自己将这个判断替换Scene_Battle 4中相应内容
#原理:
#怪物中了特定的状态后(默认20到23号状态),
#自动寻找与它有相同状态(20到23号)的角色,
#找到后就以该角色为目标,找不到就照原样行动
#脚本使用说明:
#方法一.直接复制后插入到Main前面(方便快速,懒人最爱)
#方法二.将脚本中标明的更改内容复制,替换Scene_Battle 4中相应内容(可能可以减少冲突,推荐)
#1.创建4个状态,默认分别为20至23号(要改的话改相应内容...只有两处)
#2.4个状态设置成两两互斥(例如20号状态在右边状态栏里的21,22,23号状态全部设置成“-”)
#3.设置n个回合xx%解除(注意:只有被嘲讽者和嘲讽者同时存在这个状态时,嘲讽才生效)
#4.带有嘲讽效果的特技,数据库里设定附加状态21到24号状态其中一个,带公共事件:给使用者加上同一个状态
#(公共事件不太好判断谁是使用者,而Sailcat的“23种战斗特效的公共事件版”的脚本就可以判断,建议使用)
# ============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● 生成基本行动结果
#--------------------------------------------------------------------------
def make_basic_action_result
# 攻击的情况下
if @active_battler.current_action.basic == 0
# 设置攻击 ID
@animation1_id = @active_battler.animation1_id
@animation2_id = @active_battler.animation2_id
# 行动方的战斗者是敌人的情况下
if @active_battler.is_a?(Game_Enemy)
if @active_battler.restriction == 3
target = $game_troop.random_target_enemy
elsif @active_battler.restriction == 2
target = $game_party.random_target_actor
else
#=====以下更改内容=========
target_got = false
for a in $game_party.actors
if (@active_battler.state?(20) and a.state?(20)) \
or (@active_battler.state?(21) and a.state?(21)) \
or (@active_battler.state?(22) and a.state?(22)) \
or (@active_battler.state?(23) and a.state?(23))
target = a
target_got = true
end
end
unless target_got
index = @active_battler.current_action.target_index
target = $game_party.smooth_target_actor(index) #原有内容
end
#=====以上更改内容=========
end
end
# 行动方的战斗者是角色的情况下
if @active_battler.is_a?(Game_Actor)
if @active_battler.restriction == 3
target = $game_party.random_target_actor
elsif @active_battler.restriction == 2
target = $game_troop.random_target_enemy
else
index = @active_battler.current_action.target_index
target = $game_troop.smooth_target_enemy(index)
end
end
# 设置对像方的战斗者序列
@target_battlers = [target]
# 应用通常攻击效果
for target in @target_battlers
target.attack_effect(@active_battler)
end
return
end
# 防御的情况下
if @active_battler.current_action.basic == 1
# 帮助窗口显示"防御"
@help_window.set_text($data_system.words.guard, 1)
return
end
# 逃跑的情况下
if @active_battler.is_a?(Game_Enemy) and
@active_battler.current_action.basic == 2
# 帮助窗口显示"逃跑"
@help_window.set_text("逃跑", 1)
# 逃跑
@active_battler.escape
return
end
# 什么也不做的情况下
if @active_battler.current_action.basic == 3
# 清除强制行动对像的战斗者
$game_temp.forcing_battler = nil
# 移至步骤 1
@phase4_step = 1
return
end
end
#--------------------------------------------------------------------------
# ● 设置物品或特技对像方的战斗者
# scope : 特技或者是物品的范围
#--------------------------------------------------------------------------
def set_target_battlers(scope)
# 行动方的战斗者是敌人的情况下
if @active_battler.is_a?(Game_Enemy)
# 效果范围分支
case scope
when 1 # 敌单体
index = @active_battler.current_action.target_index
#==以下更改内容===============
target_got = false
for a in $game_party.actors
if (@active_battler.state?(20) and a.state?(20)) \
or (@active_battler.state?(21) and a.state?(21)) \
or (@active_battler.state?(22) and a.state?(22)) \
or (@active_battler.state?(23) and a.state?(23))
@target_battlers.push(a)
target_got = true
end
end
unless target_got
@target_battlers.push($game_party.smooth_target_actor(index)) #原有内容
end
#==以上更改内容===============
when 2 # 敌全体
for actor in $game_party.actors
if actor.exist?
@target_battlers.push(actor)
end
end
when 3 # 我方单体
index = @active_battler.current_action.target_index
@target_battlers.push($game_troop.smooth_target_enemy(index))
when 4 # 我方全体
for enemy in $game_troop.enemies
if enemy.exist?
@target_battlers.push(enemy)
end
end
when 5 # 我方单体 (HP 0)
index = @active_battler.current_action.target_index
enemy = $game_troop.enemies[index]
if enemy != nil and enemy.hp0?
@target_battlers.push(enemy)
end
when 6 # 我方全体 (HP 0)
for enemy in $game_troop.enemies
if enemy != nil and enemy.hp0?
@target_battlers.push(enemy)
end
end
when 7 # 使用者
@target_battlers.push(@active_battler)
end
end
# 行动方的战斗者是角色的情况下
if @active_battler.is_a?(Game_Actor)
# 效果范围分支
case scope
when 1 # 敌单体
index = @active_battler.current_action.target_index
@target_battlers.push($game_troop.smooth_target_enemy(index))
when 2 # 敌全体
for enemy in $game_troop.enemies
if enemy.exist?
@target_battlers.push(enemy)
end
end
when 3 # 我方单体
index = @active_battler.current_action.target_index
@target_battlers.push($game_party.smooth_target_actor(index))
when 4 # 我方全体
for actor in $game_party.actors
if actor.exist?
@target_battlers.push(actor)
end
end
when 5 # 我方单体 (HP 0)
index = @active_battler.current_action.target_index
actor = $game_party.actors[index]
if actor != nil and actor.hp0?
@target_battlers.push(actor)
end
when 6 # 我方全体 (HP 0)
for actor in $game_party.actors
if actor != nil and actor.hp0?
@target_battlers.push(actor)
end
end
when 7 # 使用者
@target_battlers.push(@active_battler)
end
end
end
end