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
  1. module Louse
  2.   SELF_OVER = [] # 自爆技能ID
  3. end
  4. class Game_Battler
  5.   def skill_effect(user, skill)
  6.     self.critical = false
  7.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  8.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  9.       return false
  10.     end
  11. ################################################################
  12. # 如果发生冲突请直接将下面这段复制到定义技能伤害的相应位置
  13. ################################################################
  14.     if Louse::SELF_OVER.include?(skill.id)
  15.       user.damage = user.hp
  16.       user.hp -= user.damage
  17.       user.damage_pop = true
  18.     end
  19. ################################################################
  20. # 如果发生冲突请直接将下面这段复制到定义技能伤害的相应位置
  21. ################################################################
  22.     effective = false
  23.     effective |= skill.common_event_id > 0
  24.     hit = skill.hit
  25.     if skill.atk_f > 0
  26.       hit *= user.hit / 100
  27.     end
  28.     hit_result = (rand(100) < hit)
  29.     effective |= hit < 100
  30.     if hit_result == true
  31.       power = skill.power + user.atk * skill.atk_f / 100
  32.       if power > 0
  33.         power -= self.pdef * skill.pdef_f / 200
  34.         power -= self.mdef * skill.mdef_f / 200
  35.         power = [power, 0].max
  36.       end
  37.       rate = 20
  38.       rate += (user.str * skill.str_f / 100)
  39.       rate += (user.dex * skill.dex_f / 100)
  40.       rate += (user.agi * skill.agi_f / 100)
  41.       rate += (user.int * skill.int_f / 100)
  42.       self.damage = power * rate / 20
  43.       self.damage *= elements_correct(skill.element_set)
  44.       self.damage /= 100
  45.       if self.damage > 0
  46.         if self.guarding?
  47.           self.damage /= 2
  48.         end
  49.       end
  50.       if skill.variance > 0 and self.damage.abs > 0
  51.         amp = [self.damage.abs * skill.variance / 100, 1].max
  52.         self.damage += rand(amp+1) + rand(amp+1) - amp
  53.       end
  54.       eva = 8 * self.agi / user.dex + self.eva
  55.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  56.       hit = self.cant_evade? ? 100 : hit
  57.       hit_result = (rand(100) < hit)
  58.       effective |= hit < 100
  59.     end
  60.     if hit_result == true
  61.       if skill.power != 0 and skill.atk_f > 0
  62.         remove_states_shock
  63.         effective = true
  64.       end
  65.       last_hp = self.hp
  66.       self.hp -= self.damage
  67.       effective |= self.hp != last_hp
  68.       @state_changed = false
  69.       effective |= states_plus(skill.plus_state_set)
  70.       effective |= states_minus(skill.minus_state_set)
  71.       if skill.power == 0
  72.         self.damage = ""
  73.         unless @state_changed
  74.           self.damage = "Miss"
  75.         end
  76.       end
  77.     else
  78.       self.damage = "Miss"
  79.     end
  80.     return effective
  81.   end
  82. end
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1