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

Project1

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

[交流讨论] 制作有多个部位的boss

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
74 小时
注册时间
2016-3-24
帖子
17
跳转到指定楼层
1
发表于 2016-3-26 23:57:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 洛林 于 2016-3-27 00:09 编辑

需求: 一个boss有多个部位,部位受到伤害时本体也会减少同样生命值,如果不管部位直接击破本体,那么会直接获得战斗胜利,但是无法得到击破部位的奖励。(当然,因为部位也会行动,所以直接击破本体难度很大)

我目前是用的这样的方法:部位和本体用不同的敌人,比如一个boss有2个部位,那么就在敌群里放一个boss,再放2个 设定好的“部位”敌人。
然后为了让本体死亡时直接胜利,我自己连蒙带猜弄了个脚本:
  1. $gameTroop.members().forEach( function(member) {
  2.     if (member.hp>0) {
  3.        member.hide();
  4.      }
  5. });
复制代码
在本体死亡时启动,将部位全部隐藏,这样可以胜利又不会得到部位的经验和掉落。目前貌似没问题。

现在还有一个问题没有解决,就是部位受到的伤害也要体现到本体身上,求大神帮助

Lv1.梦旅人

梦石
0
星屑
50
在线时间
74 小时
注册时间
2016-3-24
帖子
17
2
 楼主| 发表于 2016-3-27 02:26:18 | 只看该作者
本帖最后由 洛林 于 2016-3-27 02:27 编辑

想到了一个原始的方法,就是用 state 标记哪些是部位,哪个是boss,然后改一下 Game_Action.prototype.apply 函数
JAVASCRIPT 代码复制
  1. Game_Action.prototype.apply = function(target) {
  2.     var result = target.result();
  3.     this.subject().clearResult();
  4.     result.clear();
  5.     result.used = this.testApply(target);
  6.     result.missed = (result.used && Math.random() >= this.itemHit(target));
  7.     result.evaded = (!result.missed && Math.random() < this.itemEva(target));
  8.     result.physical = this.isPhysical();
  9.     result.drain = this.isDrain();
  10.     if (result.isHit()) {
  11.         if (this.item().damage.type > 0) {
  12.             result.critical = (Math.random() < this.itemCri(target));
  13.             var value = this.makeDamageValue(target, result.critical);
  14.             this.executeDamage(target, value);
  15.  
  16.             //BOSS hp 同步
  17.            if (target.isStateAffected(15)) {
  18.                 $gameTroop.members().forEach( function(member) {
  19.                     if (member.isStateAffected(14)) {member.gainHp(-value);}
  20.                 }
  21.                 );
  22.             }
  23.         }
  24.         this.item().effects.forEach(function(effect) {
  25.             this.applyItemEffect(target, effect);
  26.         }, this);
  27.         this.applyItemUserEffect(target);
  28.     }
  29. };
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
74 小时
注册时间
2016-3-24
帖子
17
3
 楼主| 发表于 2016-3-27 03:03:06 | 只看该作者
后来又想了下,治疗啊,其他脚本伤害也要算进去,于是直接改 gaibHp() 了。。
JAVASCRIPT 代码复制
  1. Game_Battler.prototype.gainHp = function(value) {
  2.     //fix: BOSS hp synchronization
  3.     if (this._states.contains(15)) {
  4.         $gameTroop.members().forEach( function (member) {
  5.             if (member._states.contains(14)) {member.gainHp(value);}
  6.         }
  7.         );
  8.     }
  9.     this._result.hpDamage = -value;
  10.     this._result.hpAffected = true;
  11.     this.setHp(this.hp + value);
  12. };

点评

高端啊~~~~新人就这个水准- -让我这种混了几年还不会自己写脚本的人怎么活。  发表于 2016-3-27 11:06
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
351
在线时间
252 小时
注册时间
2015-2-17
帖子
136
4
发表于 2016-3-27 17:05:17 | 只看该作者
有一个理论思路。拆掉部位对boss上debuff,部位相当于外挂装备生命不和主体联动,不然群体伤害就是打多倍了,除非你的游戏没有群伤(囧)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
74 小时
注册时间
2016-3-24
帖子
17
5
 楼主| 发表于 2016-3-27 18:26:35 | 只看该作者
LHY4118 发表于 2016-3-27 17:05
有一个理论思路。拆掉部位对boss上debuff,部位相当于外挂装备生命不和主体联动,不然群体伤害就是打多倍了 ...

群体伤害就是要多倍啊

点评

..打个boss还伤害加好几倍不觉得太无解了么。一次一个群伤每个部位都掉血。。  发表于 2016-4-1 19:21
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
74 小时
注册时间
2016-3-24
帖子
17
6
 楼主| 发表于 2016-4-2 23:02:45 | 只看该作者
LHY4118 发表于 2016-3-27 17:05
有一个理论思路。拆掉部位对boss上debuff,部位相当于外挂装备生命不和主体联动,不然群体伤害就是打多倍了 ...

在设计BOSS血量的时候就会考虑这个,实际还是一样的,本体的血量相当于本体和所有部位的血量之和。

想一下:如果按你说的,不共享伤害,假如本体 3w 血, 部位 2w 血,那岂不是直接打本体只要打3w伤害就打死了?

而如果伤害共享,就会设计成 本体 5w血,部位 2w血,这样AOE伤害虽然翻倍,但是效果还是一样的,而且直接打本体要打 5w伤害,增加了不管部位的难度
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
351
在线时间
252 小时
注册时间
2015-2-17
帖子
136
7
发表于 2016-4-3 12:29:14 | 只看该作者
洛林 发表于 2016-4-2 23:02
在设计BOSS血量的时候就会考虑这个,实际还是一样的,本体的血量相当于本体和所有部位的血量之和。

想一 ...

对本体设置点防御类的buff,血量不共享,击破部位就去除本体的buff(不过创意真不错)

点评

我还是觉得共享伤害比较好,不过你说的这个给本体防御类buff给了我一个启发,发到楼下了  发表于 2016-4-4 13:41
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
179 小时
注册时间
2013-12-8
帖子
100
8
发表于 2016-4-3 19:44:32 | 只看该作者
不负责任的站着说话不腰疼一下:如果是说BOSS可以被划分成几个小怪,然后战斗图里面拼接起来呢?这也省下了很多功夫吧,物品掉落可以直接分部位算了。
(其实一直想这么干,但是苦于不知道怎么写来整合各个部分的总HP,所以一直没实践,而且拼接这活还必须仔细认真,所以这么想想大概我也算在水楼)

点评

我没有拼接,直接让他们重合了。。至于整合HP的方法,我就是用的上面说的。  发表于 2016-4-4 14:47

全部RM技能点全都点到了做地图和写文本上了,别拦着我我准备去点那个专精点!(大义凛然状
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
497
在线时间
266 小时
注册时间
2015-12-8
帖子
873
9
发表于 2016-4-3 20:13:36 | 只看该作者
本帖最后由 小叮鈴 于 2016-4-3 20:14 编辑

不必這麼麻煩阿 所有部位都不要掉東西和經驗就好了

不過應班這種有部位的敵人 擊敗一個部位就贏了很奇怪吧? 參考FF13之類的

多部位的敵人通常是比自己體積大很多的敵人 消滅其他部位可以減少敵人的特殊能力之類的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
74 小时
注册时间
2016-3-24
帖子
17
10
 楼主| 发表于 2016-4-4 13:52:30 | 只看该作者
来举个例子,说明一下多部位的玩法

2016-04-04_13-51-31.png (59.36 KB, 下载次数: 3)

2016-04-04_13-51-31.png

点评

部位HP6000,忘记写了  发表于 2016-4-4 13:54
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-11 00:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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