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

Project1

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

[原创发布] 再动(额外回合)系统

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
74 小时
注册时间
2016-3-24
帖子
17
跳转到指定楼层
1
发表于 2016-11-18 13:20:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 洛林 于 2016-11-18 13:20 编辑

再动系统令灵感来自7龙传说。是指一个角色进入额外回合。在这个回合中,你可以输入指令,控制这个角色的行动,且只有这个角色可以行动,敌人和其他角色都不能行动。之后,继续进行正常的回合。
此外,额外回合不计数,也就是说不改变总回合数,也不影响状态持续时间。

一开始以为很麻烦,结果发现很简单……

首先,标记额外回合和行动者:
JAVASCRIPT 代码复制
  1. BattleManager.IsExtraTurn = function() {
  2.     return this._extra;
  3. };
  4.  
  5. BattleManager.ExtraActor = function() {
  6.     return this._extraActor;
  7. };


额外回合中输入指令:
JAVASCRIPT 代码复制
  1. BattleManager.startInput = function() {
  2.     this._phase = 'input';
  3.     if (this.IsExtraTurn()) {
  4.         this._extraActor.makeActions();
  5.         this.clearActor();
  6.         return;
  7.     }
  8.     $gameParty.makeActions();
  9.     $gameTroop.makeActions();
  10.     this.clearActor();
  11.     if (this._surprise || !$gameParty.canInput()) {
  12.         this.startTurn();
  13.     }
  14. };


要让只有这一个单位可以行动,让GameParty只有这个角色就可以了
JAVASCRIPT 代码复制
  1. Game_Party.prototype.allMembers = function() {
  2.     if (BattleManager.IsExtraTurn()) {
  3.         return [BattleManager.ExtraActor()];
  4.     }
  5.     return this._actors.map(function(id) {
  6.         return $gameActors.actor(id);
  7.     });
  8. };


回到正常回合
JAVASCRIPT 代码复制
  1. BattleManager.endTurn = function() {
  2.     if (this.IsExtraTurn()) {
  3.         this._extra = false;
  4.         this.startTurn();
  5.         return;
  6.     }
  7.     this._phase = 'turnEnd';
  8.     this._preemptive = false;
  9.     this._surprise = false;
  10.     this.allBattleMembers().forEach(function(battler) {
  11.         battler.onTurnEnd();
  12.         this.refreshStatus();
  13.         this._logWindow.displayAutoAffectedStatus(battler);
  14.         this._logWindow.displayRegeneration(battler);
  15.     }, this);
  16. };


接口:
JAVASCRIPT 代码复制
  1. Game_BattlerBase.prototype.TakeExtraTurn = function() {
  2.     BattleManager._extra = true;
  3.     BattleManager._extraActor = this;
  4.     BattleManager.startInput();
  5. };


使用时用 Actor.TakeExtraTurn() 即可。
最后,应该和其他的和战斗过程有关的插件是不兼容的。
头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
734
在线时间
919 小时
注册时间
2010-11-13
帖子
1023
6
发表于 2020-8-3 21:27:20 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
74 小时
注册时间
2016-3-24
帖子
17
5
 楼主| 发表于 2016-11-21 12:57:51 | 只看该作者
小叮鈴 发表于 2016-11-18 13:32
內建不就有一個額外行動階段了.......

那个完全不符合要求啊……
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5584
在线时间
1047 小时
注册时间
2008-6-9
帖子
524

开拓者

4
发表于 2016-11-18 18:07:56 | 只看该作者
可能是特性里面的额外动作?但是我一直不懂那个是怎么算的,有的时候是平A有的时候是防御
总是没耐心做一个游戏。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
74 小时
注册时间
2016-3-24
帖子
17
3
 楼主| 发表于 2016-11-18 13:35:57 | 只看该作者
小叮鈴 发表于 2016-11-18 13:32
內建不就有一個額外行動階段了.......

没有啊,哪有额外行动阶段

点评

有阿 能力那邊  发表于 2016-11-19 21:15
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
497
在线时间
266 小时
注册时间
2015-12-8
帖子
873
2
发表于 2016-11-18 13:32:58 | 只看该作者
內建不就有一個額外行動階段了.......
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-29 19:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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