Project1
标题: 关于状态和特技的拓展,望大神指导 [打印本页]
作者: 老王的忧郁 时间: 2016-3-19 01:12
标题: 关于状态和特技的拓展,望大神指导
本帖最后由 老王的忧郁 于 2016-3-19 21:31 编辑
在下并没有学习过JS,有些想法现在还不能自己完成。
首先是状态
MV的数据库已经有很多特效额外参数,但是使用的时候,总有无法直接用数据库做出想要的状态效果。
武侠类的游戏,姑苏慕容的斗转星移,以彼之道还施彼身的装B技能,乾坤大挪移,沾衣十八跌什么的
比如:被攻击时触发的比例反伤类BUFF、几率减伤、护盾···········
时序作用类的非百分比HP/mp恢复、hp/mp伤害型BUFF··········
使用技能时触发的加成类BUFF,比如:几率增加攻击力、伤害加深·············
我在外站上发现了两个插件的运用,在此感谢MV群@墨汁乱舞的推荐!
https://alistairengine.wordpress.com/category/eval-collection/
♦ YEP_BuffsStatesCore.js
♦ YEP_AbsorptionBarrier.js
在状态的注释中,可以自定义编辑想做的特殊效果。
已有约10个例子,例举1个。
1、类似暗黑3法师的天赋技能:不稳定力场。
效果:收到致命伤害的时候,免疫这次伤害,同时附加一个相当于400%生命最大值得护盾,持续5回合。
在状态的注释里填写以下代码:
<Custom Battle Effect>
user._unstableAnomaly = 0
</Custom Battle Effect>
<Custom React Effect>
if (target._unstableAnomaly < 1 && value > target.hp) {
target._unstableAnomaly = 1;
value = 0;
target.gainBarrier(target.mhp * 4, 5);
target.startAnimation(37);
};
</Custom React Effect>
<Custom Battle Effect>
user._unstableAnomaly = 0
</Custom Battle Effect>
<Custom React Effect>
if (target._unstableAnomaly < 1 && value > target.hp) {
target._unstableAnomaly = 1;
value = 0;
target.gainBarrier(target.mhp * 4, 5);
target.startAnimation(37);
};
</Custom React Effect>
2、反伤效果:直接反弹百分百的伤害;
在状态的注释里填写以下代码:
<Custom Respond Effect>
user.gainHp(-value);
if (user.hp <= 0) { user.performCollapse() };
</Custom Respond Effect>
<Custom Respond Effect>
user.gainHp(-value);
if (user.hp <= 0) { user.performCollapse() };
</Custom Respond Effect>
3、被攻击回血的技能;
效果:当使用者生命值小于30%,将有50%的几率恢复自身最大生命值的35%生命值。
<Custom Deselect Effect>
if (target.hpRate() < 0.3) {
if (Math.random() < 0.5) {
target.gainHp(~~(target.mhp * 0.35));
target.startAnimation(41);
target.startDamagePopup();
target.clearResult();
}
}
</Custom Deselect Effect>
<Custom Deselect Effect>
if (target.hpRate() < 0.3) {
if (Math.random() < 0.5) {
target.gainHp(~~(target.mhp * 0.35));
target.startAnimation(41);
target.startDamagePopup();
target.clearResult();
}
}
</Custom Deselect Effect>
总之, ♦ YEP_BuffsStatesCore.js 和 ♦ YEP_AbsorptionBarrier.js 者两个插件,
只需要会JS的简单运用,就能写出很有意思的特效。即使不会JS也能按图索骥,仿写特效。
(=゚ω゚)=
其次是 特技
特技的伤害公式是可以当做脚本来运行的。
那么我们是否可以用这个特性做出更多好玩的技能呢?
1、通过分歧来做出过个伤害公式,例如:if (a.atk> 50){a.atk*5-b.pdf*1}else if (a.str > 100){a.atk*5+a.str*0.8-b.pdf} slse if(){} slse{};
或者加入随机数,以随机数来随机触发伤害公式。
或者加入状态的判定,使技能有更多的搭配。比如,a 身上有1号状态,则攻击力增加20%; B 身上有5号状态,那么B 被攻击,必定暴击或者其他的效果。
2、通过伤害公式,在此输入除伤害公式之外的代码,来增加显示文字的效果。比如,在使用技能的时候,显示一个 伤害字符,出现在战斗图上
比如:使用者战斗图上显示伤害字符“一剑西来荡妖氛”之类的词句,用来刷时髦值
这个我目前还不知道要怎么弄······脚本渣·········
3、随机的特技攻击范围、随机攻击次数,不知道要如何实现。
4、使用主技能,随机触发多个子技能的方法,
比如,主技能是“降龙十八掌”,使用降龙十八掌,随机出现这套掌法中的18中招式,见龙在田、或跃于渊、飞龙在天等招式、各有不同的随机的特技攻击范围、随机攻击次数、伤害公式、附加BUFF等、
这样的特技,该用什么方法比较容易实现呢? {主技能无伤害公式,事件强制行动使用多个数据库中的其他特技(比较费数据库名额)?或者用脚本该如何写?}
作者: 老王的忧郁 时间: 2016-3-19 21:32
本帖最后由 老王的忧郁 于 2016-3-19 21:49 编辑
和敌方单位同生共死,的技能效果;
若果被攻击者死亡,那么攻击者也会同时死亡
<Custom Establish Effect>
if (target === origin) {
if (target.hp <= 0) {
user.die();
user.performCollapse();
}
}
</Custom Establish Effect>
<Custom Respond Effect>
if (user === origin) {
if (target.hp <= 0) {
user.die();
user.performCollapse();
}
}
</Custom Respond Effect>
<Custom Establish Effect>
if (target === origin) {
if (target.hp <= 0) {
user.die();
user.performCollapse();
}
}
</Custom Establish Effect>
<Custom Respond Effect>
if (user === origin) {
if (target.hp <= 0) {
user.die();
user.performCollapse();
}
}
</Custom Respond Effect>
作者: raketenfaust02 时间: 2016-8-27 13:48
本帖最后由 raketenfaust02 于 2016-8-27 14:41 编辑
抛砖引玉放几段我做的:
牺牲自己为全队恢复生命值(或者随便别的什么效果)的技能
使用后自身扣除100%的生命值,并附加死亡状态(双保险,以防有其他特殊状态阻止死亡)
- <Target: All Allies But User>
- <Custom HP Cost>
- user.hp
- </Custom HP Cost>
- <Cost Display Eval>
- var value = user.hp;
- $gameVariables.setValue(23, value);
- </Cost Display Eval>
- <Custom Cost Display>
- \c[4]\v[23]\c[0] HP
- </Custom Cost Display>
- <After Eval>
- user.addState(1)
- </After Eval>
复制代码
作者: raketenfaust02 时间: 2016-8-27 13:54
仿龙战士变身技能。
变身后每回合消耗20%的最大MP,如耗尽则复原
通过两个职业实现变身后的外形变化:变身前=1,变身后=11
角色注释:
- <Class 11 Battler: Dragon>
复制代码
变身技能使用后添加状态(13号)
状态特征设置为每回合消耗20%MP
- <Custom Turn Start Effect>
- if (user.mp / user.mmp <= 0) {
- user.removeState(13);
- user.changeClass(1)
- }
- </Custom Turn Start Effect>
- <Custom Apply Effect>
- user.changeClass(11)
- </Custom Apply Effect>
- <Custom Remove Effect>
- user.changeClass(1)
- </Custom Remove Effect>
复制代码
变身前技能添加标签:
- <Custom Show Eval>
- if (user.isStateAffected(13)) {
- visible = false;
- } else {
- visible = true;
- }
- </Custom Show Eval>
复制代码
变身后技能添加标签:
- <Custom Show Eval>
- if (user.isStateAffected(13)) {
- visible = true;
- } else {
- visible = false;
- }
- </Custom Show Eval>
复制代码
作者: raketenfaust02 时间: 2016-8-27 13:55
顺便问一下,为所有队友附加state的语句应该怎么写?
作者: markoray 时间: 2016-8-29 15:10
本帖最后由 markoray 于 2016-8-29 15:22 编辑
<Custom React Effect>
if (target.barrierPoints() <= 0) {
if (target.mp > 0) {
if (Math.random() < 0.1) {
value = 0;
target.startAnimation(151);
}
value *= 0.5;
value = Math.floor(value)
if (value > 0) {
target.gainMp(~~(- value * 0.25));
target.startAnimation(151);
}
};
if (target.mp == 0) {
target.removeState(58);
}
};
</Custom React Effect>
<Custom React Effect>
if (target.barrierPoints() <= 0) {
if (target.mp > 0) {
if (Math.random() < 0.1) {
value = 0;
target.startAnimation(151);
}
value *= 0.5;
value = Math.floor(value)
if (value > 0) {
target.gainMp(~~(- value * 0.25));
target.startAnimation(151);
}
};
if (target.mp == 0) {
target.removeState(58);
}
};
</Custom React Effect>
用LZ所说的YEP插件实现的魔法盾技能,在拥有【58】状态时,有10%概率无视伤害,否则伤害的一半将由魔法值承担,一点魔法值可以抵消4点伤害,显示动画【151】。
如果该目标的魔法值为0,那么移除状态【58】。
如果同时被添加了防护盾barrier,那么就优先扣除防护盾值。
对于治疗效果是不会触发的。
作者: raketenfaust02 时间: 2016-8-29 16:22
有点问题,比如当前MP不为0但又小于伤害值的1/8时会导致透支
作者: tseyik 时间: 2016-8-29 17:12
1、通过分歧来做出过个伤害公式,
其實伤害算式本身己可執行一定程度分歧處理
例
敵属性1和属性3的有効度高的一方採用
Math.max(a.atk * b.elementRate(1),a,atk * b.elementRate(3))
敵人防禦時的受別的傷害双倍,
a.atk * (b.isGuard() ? 4 * b.grd : 1)
攻撃方瀕死時(下方算式為最大hp小於20%)威力上升(2倍)的技能
a.atk * 4 *(a.hp <= a.mhp / 5 ? 2 : 1) - b.def * 2
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |