说明:
玩过PSP上面皇家骑士团-命运之轮的人应该知道,里面的不死系单位有个特性,就是被打到HP=0的时候会转为假死状态,3回合后HP完全回复再次复活。并且有个“除灵”的技能,能将假死中的不死系敌人完全消灭。
接下来是自己研究出来的一种实现方法:
先设置数据库:
1.不死状态:我设置是30号状态(此状态最好是设置一下闪烁的色调,以便区分不死系敌人)
2.假死状态:我设置是31号状态,限制:不行动,3回合(可在数据库中设定回合数)后100%概率解除
3.除灵技能:效果:去除31号假死状态,真正清除不死系敌人
4.开关:假死状态复活还原色调用,我是设置20号开关
更改几处脚本:
第一处:Game_Battler 1
#--------------------------------------------------------------------------
# ● 战斗不能判定 + 去除不死情况
#--------------------------------------------------------------------------
def dead?
return (@hp == 0 and not @immortal and not self.state?(30) and not self.state?(31))
end
#--------------------------------------------------------------------------
# ● 存在判定 + 假死中的不死系
#--------------------------------------------------------------------------
def exist?
return (not @hidden and (@hp > 0 or @immortal or self.state?(31)))
end
第二处:Game_Battler 2
#--------------------------------------------------------------------------
# ● 状态自然解除 (回合改变时调用)
#--------------------------------------------------------------------------
def remove_states_auto
for i in @states_turn.keys.clone
if @states_turn > 0
@states_turn -= 1
elsif rand(100) < $data_states.auto_release_prob
#===================达到假死状态设定的回合数后复活========
if self.state?(31)
remove_state(31)
add_state(30)
@hp = self.maxhp#复活后加满HP
Audio.se_play("Audio/SE/"+"139-Darkness02",100,100)#复活的音效
$game_switches[20] = true#20号开关开启,用于还原假死状态设置的色调
end
#=========================================================
remove_state(i)
end
end
end
第三处:Sprite_Battler
# korapusu
if @battler.damage == nil and @battler.dead?
if @battler.is_a?(Game_Enemy)
$game_system.se_play($data_system.enemy_collapse_se)
else
$game_system.se_play($data_system.actor_collapse_se)
end
collapse
@battler_visible = false
end
#=========进入假死状态==================
if @battler.damage == nil and @battler.hp == 0 and @battler.state?(30)
@battler.remove_state(30)
@battler.add_state(31)
$game_system.se_play($data_system.enemy_collapse_se)#死亡(假死)的音效
self.color.set(0, 0, 0, 255)#假死状态色调
end
#====================================
#=============假死状态复活后还原色调(开关编号:20)========
if $game_switches[20]
self.color.set(255, 255, 255, 0)
$game_switches[20] = false
#self.opacity = 80
end
#=====================================
end
# 设置活动块的坐标
self.x = @battler.screen_x
self.y = @battler.screen_y
self.z = @battler.screen_z
end
end
忘了一件事,就是不死状态下回复技能和回复药效果为伤害:
更改脚本Game_Battler 3的两处位置:
第一处:
应用特技效果那边增加判断:
# 伤害符号正确的情况下
if self.damage > 0
# 防御修正
if self.guarding?
self.damage /= 2
end
end
#================不死状态下回复效果转为伤害==
if self.damage < 0 and self.state?(30)
self.damage *= -1
end
#============================================
# 分散
if skill.variance > 0 and self.damage.abs > 0
amp = [self.damage.abs * skill.variance / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
第二处:
应用物品效果那边增加判断:
# 回复量符号为负的情况下
if recover_hp < 0
# 防御修正
if self.guarding?
recover_hp /= 2
end
end
#================不死状态下回复效果转为伤害==
if recover_hp > 0 and self.state?(30)
recover_hp *= -1
end
#============================================
# HP 回复量符号的反转、设置伤害值
self.damage = -recover_hp
还有,如果用装备附加自动状态的话,Game_Battler 2要改一下:
# 强制附加的场合(不死状态只附加一次)====================
if force and not self.state?(30)#这里要修改成这样
# 设置为自然解除的最低回数 -1 (无效)
@states_turn[state_id] = -1
end作者: s101010aq 时间: 2012-6-28 15:16
×.0,很富扎的样子。作者: stevenrock 时间: 2012-6-30 23:02
哇哦,发现了好东西呢!支持LZ,现在就去试用一下,待会测试完了再来提意见。