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

Project1

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

[有事请教] 关于将tp系统彻底修改为命中系统的求助,或者委托?

[复制链接]

Lv2.观梦者

梦石
0
星屑
458
在线时间
145 小时
注册时间
2020-7-18
帖子
73
跳转到指定楼层
1
发表于 2026-6-4 20:03:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
500星屑
众所周知,敌人是有tp的。所以我计划把双方的tp利用起来,脱离原有tp的框架做成一个新的系统来替代原有的概率命中系统(因为打算把游戏做成以闪避或者削减命中而不是堆生存的战斗类型)。
现在的想法是将tp改为“专注”,彻底放弃原有的闪避率那一套,让新的命中判断改为:
专注(tp)差值+a.命中修正和-b.闪避修正和+该技能命中补正>0
公式中,命中修正与闪避修正以备注的形式写入状态,并且不同状态可加算;而技能命中补正以备注的形式写入技能,并且部分特殊技能视作必定命中(也以备注形式写入技能)
还有想过一些高级运用比如临时削减tp最大值或者临时让tp不低于某个数的状态,或者不同类型的绝对闪避和应对绝对闪避的状态(比如打洞-地震,飞翔-打雷这种),不过暂时还不需要,可以缓缓。
故我想请问一下市面上是否有可以实现这个功能的插件?或者找不到需要自行编写?如果市面上没有的话,是否有大佬能提供一个框架或者直接能给我写一个简易成品呢?先谢过诸位点进来的大佬。

Lv1.梦旅人

梦石
0
星屑
185
在线时间
13 小时
注册时间
2025-4-19
帖子
13
2
发表于 2026-6-10 10:26:11 | 只看该作者
你指的TP是每次攻击或者防御会增长的那条,然后释放绝招会消耗的那个吗?我是从可玩性上来说,你这个系统是不是意味着前期的几次攻击用来积攒,然后释放高伤害技能来消耗TP用来保证必定命中?作为回合制来说,这样的节奏是不是有点拖沓单调?因为战斗博弈的点被要确保必定命中限制住了。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
458
在线时间
145 小时
注册时间
2020-7-18
帖子
73
3
 楼主| 发表于 2026-6-13 15:39:45 | 只看该作者
dhkkhd 发表于 2026-6-10 10:26
你指的TP是每次攻击或者防御会增长的那条,然后释放绝招会消耗的那个吗?我是从可玩性上来说,你这个系统是 ...


我肯定是把原本TP的功能删了的呀,现在我是默认开局不同角色有对应的固定初始TP值,并且彻底删除原本TP的获取方法比如受击攻击获取TP,而是用另一组技能直接实现增减。
而且不是消耗TP保证命中啊,是直接把TP作为命中的计算公式的一部分直接得出是否命中的结果,比如A的TP50,B的TP60,A使用20命中补正的技能就是70>60,必中,用了0补正就是必不中
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
185
在线时间
13 小时
注册时间
2025-4-19
帖子
13
4
发表于 2026-6-14 17:00:20 | 只看该作者
感觉是好大的一盘棋啊,这个新TP有点像战场气势之类的效果,不过我的想法是如果这个效果不只是影响命中率,还可以影响其他的一些属性,增加方式除了技能,再附带一些特殊打击方式,让这个属性成为可以影响战斗节奏的核心资源,应该会更有意思,具体实现我应该是帮不了忙,就看哪个大佬可以指导了。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
458
在线时间
145 小时
注册时间
2020-7-18
帖子
73
5
 楼主| 发表于 2026-6-14 18:11:15 | 只看该作者
dhkkhd 发表于 2026-6-14 17:00
感觉是好大的一盘棋啊,这个新TP有点像战场气势之类的效果,不过我的想法是如果这个效果不只是影 ...

确实是,在预想中会和其中一个流派进行联动,以及TP跌到0会有特殊debuff之类的,不过这些得先把基础写出来才能再继续深入了(悲
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
802
在线时间
79 小时
注册时间
2021-7-20
帖子
17
6
发表于 2026-7-1 08:51:03 | 只看该作者
命中理论上重写Game_Action.prototype.itemHit下的逻辑就可以了,可以根据自己的需求修改。如果还有不懂的可以加入RM群:894605281
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6170
在线时间
280 小时
注册时间
2018-1-22
帖子
222
7
发表于 2026-7-1 11:11:21 | 只看该作者
随便写了一下基础功能,应该能满足你的需求
状态、技能的标签用<hitOffset:x>、<evaOffset:x>,具体参考下面注释
  1. /**
  2. * 状态标签:
  3. * <hitOffset:x>
  4. * x - 命中补正数值
  5. * <evaOffset:x>
  6. * x - 闪避补正数值
  7. *
  8. * 技能标签:
  9. * <hitOffset:x>
  10. * x - 命中补正数值
  11. *
  12. * @param {*} source 技能主体
  13. * @param {*} target 技能目标
  14. * @returns boolean: true - 命中; false - 闪避
  15. */
  16. Game_Action.prototype.tpHit = function(source, target) {
  17.     // 主体命中
  18.     let hitPlus = 0;
  19.     source._states.forEach(id => {
  20.         let value = $dataStates[id].meta.hitOffset.trim();
  21.         if (value) {
  22.             value = Number(value);
  23.             if (!isNaN(value)) hitPlus += value;
  24.         };
  25.     });

  26.     // 目标闪避
  27.     let evaPlus = 0;
  28.     target._states.forEach(id => {
  29.         let value = $dataStates[id].meta.evaOffset.trim();
  30.         if (value) {
  31.             value = Number(value);
  32.             if (!isNaN(value)) evaPlus += value;
  33.         };
  34.     });

  35.     // 技能命中
  36.     let skillPlus = this.item().meta.hitOffset.trim();
  37.     if (skillPlus) skillPlus = Number(skillPlus);

  38.     // 命中公式
  39.     return (source.tp - target.tp + hitPlus - evaPlus + (isNaN(skillPlus)? 0 : skillPlus)) > 0;
  40. };

  41. Game_Action.prototype.apply = function(target) {
  42.     const result = target.result();
  43.     this.subject().clearResult();
  44.     result.clear();
  45.     result.used = this.testApply(target);
  46.     //result.missed = result.used && Math.random() >= this.itemHit(target);
  47.     //result.evaded = !result.missed && Math.random() < this.itemEva(target);
  48.     result.missed = result.evaded = !this.tpHit(this.subject(), target);
  49.     result.physical = this.isPhysical();
  50.     result.drain = this.isDrain();
  51.     if (result.isHit()) {
  52.         if (this.item().damage.type > 0) {
  53.             result.critical = Math.random() < this.itemCri(target);
  54.             const value = this.makeDamageValue(target, result.critical);
  55.             this.executeDamage(target, value);
  56.         }
  57.         for (const effect of this.item().effects) {
  58.             this.applyItemEffect(target, effect);
  59.         }
  60.         this.applyItemUserEffect(target);
  61.     }
  62.     this.updateLastTarget(target);
  63. };
复制代码
自分自身の神様になること
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-22 03:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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