| 赞 | 18 |
| VIP | 0 |
| 好人卡 | 0 |
| 积分 | 62 |
| 经验 | 0 |
| 最后登录 | 2026-7-21 |
| 在线时间 | 280 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 6170
- 在线时间
- 280 小时
- 注册时间
- 2018-1-22
- 帖子
- 222
|
随便写了一下基础功能,应该能满足你的需求
状态、技能的标签用<hitOffset:x>、<evaOffset:x>,具体参考下面注释
- /**
- * 状态标签:
- * <hitOffset:x>
- * x - 命中补正数值
- * <evaOffset:x>
- * x - 闪避补正数值
- *
- * 技能标签:
- * <hitOffset:x>
- * x - 命中补正数值
- *
- * @param {*} source 技能主体
- * @param {*} target 技能目标
- * @returns boolean: true - 命中; false - 闪避
- */
- Game_Action.prototype.tpHit = function(source, target) {
- // 主体命中
- let hitPlus = 0;
- source._states.forEach(id => {
- let value = $dataStates[id].meta.hitOffset.trim();
- if (value) {
- value = Number(value);
- if (!isNaN(value)) hitPlus += value;
- };
- });
- // 目标闪避
- let evaPlus = 0;
- target._states.forEach(id => {
- let value = $dataStates[id].meta.evaOffset.trim();
- if (value) {
- value = Number(value);
- if (!isNaN(value)) evaPlus += value;
- };
- });
- // 技能命中
- let skillPlus = this.item().meta.hitOffset.trim();
- if (skillPlus) skillPlus = Number(skillPlus);
- // 命中公式
- return (source.tp - target.tp + hitPlus - evaPlus + (isNaN(skillPlus)? 0 : skillPlus)) > 0;
- };
- Game_Action.prototype.apply = function(target) {
- const result = target.result();
- this.subject().clearResult();
- result.clear();
- result.used = this.testApply(target);
- //result.missed = result.used && Math.random() >= this.itemHit(target);
- //result.evaded = !result.missed && Math.random() < this.itemEva(target);
- result.missed = result.evaded = !this.tpHit(this.subject(), target);
- result.physical = this.isPhysical();
- result.drain = this.isDrain();
- if (result.isHit()) {
- if (this.item().damage.type > 0) {
- result.critical = Math.random() < this.itemCri(target);
- const value = this.makeDamageValue(target, result.critical);
- this.executeDamage(target, value);
- }
- for (const effect of this.item().effects) {
- this.applyItemEffect(target, effect);
- }
- this.applyItemUserEffect(target);
- }
- this.updateLastTarget(target);
- };
复制代码 |
|