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

Project1

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

[RMXP发布] 小小研究成果-仿皇家骑士团-命运之轮的不死系敌人。

[复制链接]

Lv2.观梦者

梦石
0
星屑
853
在线时间
85 小时
注册时间
2005-11-21
帖子
86
跳转到指定楼层
1
发表于 2012-6-22 21:31:17 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 黑夜守望者 于 2012-6-22 21:41 编辑

说明:
玩过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


如此,附加有30号不死状态的丧尸敌人或角色在被打死后3回合后复活,要想完全消灭必须用技能“除灵”解除假死状态中的单位。
注意:不死这个状态对己方角色也有用,建议设置一个技能(necromancy之类的……附加上31号状态),用在己方HP=0的角色身上,可以体验到做死灵法师的快感……

点评

阁下可否测试一下,据我所知,当我放在空白工程测试时,你的第一句就已经存在错误了……  发表于 2012-7-3 21:32

Lv1.梦旅人

梦石
0
星屑
211
在线时间
905 小时
注册时间
2010-9-6
帖子
3229
5
发表于 2012-6-30 23:02:44 | 只看该作者
哇哦,发现了好东西呢!支持LZ,现在就去试用一下,待会测试完了再来提意见。

点评

一开始就出现BUG了,啊啊啊,看来暂时还是不能用的……  发表于 2012-6-30 23:32
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
232
在线时间
9 小时
注册时间
2012-6-28
帖子
3
4
发表于 2012-6-28 15:16:28 | 只看该作者
×.0,很富扎的样子。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
853
在线时间
85 小时
注册时间
2005-11-21
帖子
86
3
 楼主| 发表于 2012-6-23 19:32:16 | 只看该作者
本帖最后由 黑夜守望者 于 2012-6-24 00:44 编辑

忘了一件事,就是不死状态下回复技能和回复药效果为伤害:
更改脚本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
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2012-6-23 11:54:50 | 只看该作者
横版无视···不过我的确在做不死的属性····
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-2 07:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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