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

Project1

 找回密码
 注册会员
搜索
123
返回列表 发新帖
楼主: 吸血鬼王族
打印 上一主题 下一主题

[已经解决] 如何制作效果扩散状态?

 关闭 [复制链接]

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1535
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

21
发表于 2009-9-4 20:29:09 | 只看该作者
  1. class Game_Battler
  2.   TURN_PLUS = {1=>[5,5]}#——①:技能编号、②③:提高随机数范围。
  3.   alias lv12_initialize initialize
  4.   def initialize
  5.     @states_plus_turn = {}
  6.     lv12_initialize
  7.   end
  8.   alias lv12_skill_effect skill_effect
  9.   def skill_effect(user, skill)
  10.     if TURN_PLUS.keys.include?(skill.id)
  11.     for i in @states
  12.       z = TURN_PLUS[skill.id]
  13.       @states_plus_turn[i] =  (rand(z[1]-z[0])+z[0]) + @states_plus_turn[i]
  14.     end
  15.     end
  16.     lv12_skill_effect(user, skill)
  17.   end
  18.   alias lv12_add_state add_state
  19.   def add_state(state_id, force = false)
  20.     b = @states_turn.clone
  21.     c = {}
  22.     for i in @states_turn.keys
  23.       if states_plus_turn(i) != 0
  24.         c[i] = true
  25.       end
  26.     end
  27.     a = lv12_add_state(state_id,force)
  28.     for i in @states_plus_turn.keys
  29.       @states_turn[i] = b[i] if c[i] == true
  30.     end
  31.     return a
  32.   end
  33.   alias lv12_states_minus states_minus
  34.   def states_minus(minus_state_set)
  35.     for i in minus_state_set
  36.       @states_plus_turn[i] = nil
  37.     end
  38.     return lv12_states_minus(minus_state_set)
  39.   end
  40.   def state_full?(state_id)
  41.     unless self.state?(state_id)
  42.       return false
  43.     end
  44.     if @states_turn[state_id] == -1
  45.       return true
  46.     end
  47.     return @states_turn[state_id] + states_plus_turn(state_id) == $data_states[state_id].hold_turn
  48.   end
  49.   def states_plus_turn(id)
  50.     @states_plus_turn[id] = 0 if @states_plus_turn[id] == nil or @states_plus_turn[id] < 0
  51.     if @states_plus_turn[id] == nil
  52.     return 0
  53.     else
  54.     return @states_plus_turn[id]
  55.     end
  56.   end
  57.   def remove_states_auto
  58.     for i in @states_turn.keys.clone
  59.       if @states_turn[i]+states_plus_turn(i) > 0
  60.         if states_plus_turn(i) > 0
  61.           @states_plus_turn[i] = states_plus_turn(i) - 1
  62.           return
  63.         end
  64.         @states_turn[i] -= 1
  65.       elsif rand(100) < $data_states[i].auto_release_prob
  66.         remove_state(i)
  67.       end
  68.     end
  69.   end
  70. end
复制代码
状态延续没问题,是因为被论坛吞掉了一些字符……所以出错了……><

效果扩散貌似没问题啊……技能攻击都可以打全部的人……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
45 小时
注册时间
2006-8-23
帖子
303
22
 楼主| 发表于 2009-9-5 18:41:05 | 只看该作者
状态延续.rar (186.72 KB, 下载次数: 35)
这个工程,战斗测试中如果先用状态延续,再用昏睡的话就出错。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1535
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

23
发表于 2009-9-5 19:46:53 | 只看该作者
只要把25行的
  1. @states_plus_turn[i] =  (rand(z[1]-z[0])+z[0]) + @states_plus_turn[i]
复制代码
改为
  1. @states_plus_turn[i] =  (rand(z[1]-z[0])+z[0]) + states_plus_turn(i)
复制代码
就可以了~~~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
45 小时
注册时间
2006-8-23
帖子
303
24
 楼主| 发表于 2009-9-5 23:56:47 | 只看该作者
本帖最后由 吸血鬼王族 于 2009-9-6 00:03 编辑

真辛苦你了。非常感激。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-10 03:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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