Project1
标题:
关于自爆
[打印本页]
作者:
神秘魔王
时间:
2011-6-3 18:23
标题:
关于自爆
我在公共事件里设置一个更改敌人状态—战斗不能,然后设一个技能,公共事件改刚才那个,再设置威力,于是这个敌人在测试时自爆了,这样做对不?
作者:
Wind2010
时间:
2011-6-3 19:59
这是直接秒杀的招式呃
作者:
天使喝可乐
时间:
2011-6-3 22:17
可是你这个公共事件不能确认哪个是使用技能的敌人哇 除非全体自爆或者每次自爆的敌人在战斗中ID相同
作者:
神秘魔王
时间:
2011-6-4 16:41
天使喝可乐 发表于
可是你这个公共事件不能确认哪个是使用技能的敌人哇 除非全体自爆或者每次自爆的敌人在战斗中ID相同 ...
猛然间发现这句话很有道理。。。。
作者:
Wind2010
时间:
2011-6-4 17:54
module Louse
SELF_OVER = [] # 自爆技能ID
end
class Game_Battler
def skill_effect(user, skill)
self.critical = false
if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
return false
end
################################################################
# 如果发生冲突请直接将下面这段复制到定义技能伤害的相应位置
################################################################
if Louse::SELF_OVER.include?(skill.id)
user.damage = user.hp
user.hp -= user.damage
user.damage_pop = true
end
################################################################
# 如果发生冲突请直接将下面这段复制到定义技能伤害的相应位置
################################################################
effective = false
effective |= skill.common_event_id > 0
hit = skill.hit
if skill.atk_f > 0
hit *= user.hit / 100
end
hit_result = (rand(100) < hit)
effective |= hit < 100
if hit_result == true
power = skill.power + user.atk * skill.atk_f / 100
if power > 0
power -= self.pdef * skill.pdef_f / 200
power -= self.mdef * skill.mdef_f / 200
power = [power, 0].max
end
rate = 20
rate += (user.str * skill.str_f / 100)
rate += (user.dex * skill.dex_f / 100)
rate += (user.agi * skill.agi_f / 100)
rate += (user.int * skill.int_f / 100)
self.damage = power * rate / 20
self.damage *= elements_correct(skill.element_set)
self.damage /= 100
if self.damage > 0
if self.guarding?
self.damage /= 2
end
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
eva = 8 * self.agi / user.dex + self.eva
hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
effective |= hit < 100
end
if hit_result == true
if skill.power != 0 and skill.atk_f > 0
remove_states_shock
effective = true
end
last_hp = self.hp
self.hp -= self.damage
effective |= self.hp != last_hp
@state_changed = false
effective |= states_plus(skill.plus_state_set)
effective |= states_minus(skill.minus_state_set)
if skill.power == 0
self.damage = ""
unless @state_changed
self.damage = "Miss"
end
end
else
self.damage = "Miss"
end
return effective
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1