设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3875|回复: 5
打印 上一主题 下一主题

[原创发布] [增补功能]被动技能

 关闭 [复制链接]

Lv3.寻梦者

酱油的

梦石
0
星屑
970
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

跳转到指定楼层
1
发表于 2008-4-29 17:46:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 禾西 于 2012-1-12 16:08 编辑

所謂「被動技能」者,不能使用但是有自動效果。
具體實現方法如下:

  1. class Game_Battler
  2.   def skill?(skill_id)
  3.     @skills||=[]
  4.     return @skills.include?(skill_id)
  5.   end
  6. end
复制代码
啥?就這麽簡單?!
當然不是。這個只是核心語句。作用如同增加一個 actor.state?( )的功能。
因此,我們可以直接複製修改其他現有的特殊狀態效果腳本。比如自動回血:

  1. class Game_Battler
  2.   def skill?(skill_id)
  3.     @skills||=[]
  4.     return @skills.include?(skill_id)
  5.   end
  6. end
  7. class Scene_Battle
  8.   #--------------------------------------------------------------------------
  9.   # ● 刷新画面 (主回合步骤 1 : 准备行动)
  10.   #--------------------------------------------------------------------------
  11.   def update_phase4_step1
  12.     # 隐藏帮助窗口
  13.     @help_window.visible = false
  14.     # 判定胜败
  15.     if judge
  16.       # 胜利或者失败的情况下 : 过程结束
  17.       return
  18.     end
  19.     # 强制行动的战斗者不存在的情况下
  20.     if $game_temp.forcing_battler == nil
  21.       # 设置战斗事件
  22.       setup_battle_event
  23.       # 执行战斗事件中的情况下
  24.       if $game_system.battle_interpreter.running?
  25.         return
  26.       end
  27.     end
  28.     # 强制行动的战斗者存在的情况下
  29.     if $game_temp.forcing_battler != nil
  30.       # 在头部添加后移动
  31.       @action_battlers.delete($game_temp.forcing_battler)
  32.       @action_battlers.unshift($game_temp.forcing_battler)
  33.     end
  34.     # 未行动的战斗者不存在的情况下 (全员已经行动)
  35.     if @action_battlers.size == 0
  36.       # 开始同伴命令回合
  37.       start_phase2
  38.       return
  39.     end
  40.     # 初始化动画 ID 和公共事件 ID
  41.     @animation1_id = 0
  42.     @animation2_id = 0
  43.     @common_event_id = 0
  44.     # 未行动的战斗者移动到序列的头部
  45.     @active_battler = @action_battlers.shift
  46.     # 如果已经在战斗之外的情况下
  47.     if @active_battler.index == nil
  48.       return
  49.     end
  50.     # 连续伤害
  51.     if @active_battler.hp > 0 and @active_battler.slip_damage?
  52.       @active_battler.slip_damage_effect
  53.       @active_battler.damage_pop = true
  54.     end
  55. #--------------------------------------
  56.     if @active_battler.hp > 0 and @active_battler.skill?(57)
  57.       @active_battler.animation_id = 17                # 显示17号动画
  58.       @active_battler.damage = -@active_battler.maxhp/5# 兌換傷害
  59.       @active_battler.hp += -@active_battler.damage    # 恢复1/5的最大生命
  60.       @active_battler.damage_pop = true                # 将伤害显示在屏幕上
  61.     end
  62. #--------------------------------------
  63.     # 自然解除状态
  64.     @active_battler.remove_states_auto
  65.     # 刷新状态窗口
  66.     @status_window.refresh
  67.     # 移至步骤 2
  68.     @phase4_step = 2
  69.   end
  70. end
复制代码
或者會心一擊率上昇40%:

  1. class Game_Battler
  2.   def skill?(skill_id)
  3.     @skills||=[]
  4.     return @skills.include?(skill_id)
  5.   end
  6. end
  7. class Game_Battler
  8.   #--------------------------------------------------------------------------
  9.   # ● 应用通常攻击效果
  10.   #     attacker : 攻击者 (battler)
  11.   #--------------------------------------------------------------------------
  12.   def attack_effect(attacker)
  13.     # 清除会心一击标志
  14.     self.critical = false
  15.     # 第一命中判定
  16.     hit_result = (rand(100) < attacker.hit)
  17.     # 命中的情况下
  18.     if hit_result == true
  19.       # 计算基本伤害
  20.       atk = [attacker.atk - self.pdef / 2, 0].max
  21.       self.damage = atk * (20 + attacker.str) / 20
  22.       # 属性修正
  23.       self.damage *= elements_correct(attacker.element_set)
  24.       self.damage /= 100
  25.       # 伤害符号正确的情况下
  26.       if self.damage > 0
  27. #=-----------------------------------------------------------------
  28.         # 会心一击修正
  29.         hit_rate = 4 * attacker.dex / self.agi
  30.         if attacker.is_a?(Game_Actor)
  31.           if self.skill?(57)
  32.             if rand(100) < (hit_rate + 40)
  33.               self.damage[attacker] *= 2
  34.               self.critical[attacker] = true
  35.             end
  36.           end
  37.         else
  38.           if rand(100) < hit_rate
  39.           self.damage[attacker] *= 2
  40.           self.critical[attacker] = true
  41.         end
  42. #=-----------------------------------------------------------------
  43.         # 防御修正
  44.         if self.guarding?
  45.           self.damage /= 2
  46.         end
  47.       end
  48.       # 分散
  49.       if self.damage.abs > 0
  50.         amp = [self.damage.abs * 15 / 100, 1].max
  51.         self.damage += rand(amp+1) + rand(amp+1) - amp
  52.       end
  53.       # 第二命中判定
  54.       eva = 8 * self.agi / attacker.dex + self.eva
  55.       hit = self.damage < 0 ? 100 : 100 - eva
  56.       hit = self.cant_evade? ? 100 : hit
  57.       hit_result = (rand(100) < hit)
  58.     end
  59.     # 命中的情况下
  60.     if hit_result == true
  61.       # 状态冲击解除
  62.       remove_states_shock
  63.       # HP 的伤害计算
  64.       self.hp -= self.damage
  65.       # 状态变化
  66.       @state_changed = false
  67.       states_plus(attacker.plus_state_set)
  68.       states_minus(attacker.minus_state_set)
  69.     # Miss 的情况下
  70.     else
  71.       # 伤害设置为 "Miss"
  72.       self.damage = "Miss"
  73.       # 清除会心一击标志
  74.       self.critical = false
  75.     end
  76.     # 过程结束
  77.     return true
  78.   end
  79. end
复制代码
以上的被動技能都默認爲 57 號技能,也就是 「十字斬」
其他增補功能連接
循環動畫


聲明一下,所謂「增補功能計劃」都是一些沒有技術含量,不會産生衝突,原作者沒有寫,禾西寫遊戲的副産品,但是有時候很需要的低能語句。
如果你覺得自己有一定水平,不用看也可以辦到,完全用不上。就請漠視……
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-12-15
帖子
238
2
发表于 2008-4-29 20:07:32 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-7-9
帖子
145
3
发表于 2008-4-29 20:13:09 | 只看该作者
为什么我刚想写你就抢了``
Orz``
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

心无天使

梦石
0
星屑
49
在线时间
0 小时
注册时间
2007-12-15
帖子
1016
4
发表于 2008-5-17 19:58:13 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2008-5-24
帖子
94
5
发表于 2008-6-8 03:07:09 | 只看该作者
我最需要被动技能了...........
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-5-6
帖子
9
6
发表于 2008-6-8 10:10:01 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-29 21:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表